다중 클래스 로지스틱 회귀

Python으로 배우는 선형 분류기

Michael (Mike) Gelbart

Instructor, The University of British Columbia

일대다(OvR) 방식으로 이진 분류기 결합하기

lr0.fit(X, y==0)

lr1.fit(X, y==1)

lr2.fit(X, y==2)
# get raw model output
lr0.decision_function(X)[0]
6.124
lr1.decision_function(X)[0]
-5.429
lr2.decision_function(X)[0]
-7.532
lr = LogisticRegression(multi_class='ovr')
lr.fit(X, y)

lr.predict(X)[0]
0
Python으로 배우는 선형 분류기

일대다(One-vs-rest):

  • 각 클래스마다 이진 분류기 학습
  • 전체 예측 후 가장 큰 출력값 선택
  • 장점: 단순하고 모듈식
  • 단점: 정확도를 직접 최적화하지 않음
  • SVM에서도 일반적으로 사용
  • 확률 출력 가능

"다항" 또는 "소프트맥스":

  • 모든 클래스에 단일 분류기 학습
  • 예측 시 최적 클래스 직접 출력
  • 단점: 구현이 복잡하고 새로운 코드 필요
  • 장점: 문제를 직접적으로 해결
  • SVM에도 적용 가능하나 덜 일반적
  • 확률 출력 가능
Python으로 배우는 선형 분류기

다중 클래스 모델 계수

lr_ovr = LogisticRegression(multi_class='ovr') 

lr_ovr.fit(X,y)

lr_ovr.coef_.shape
(3,13)
lr_ovr.intercept_.shape
(3,)
lr_mn = LogisticRegression(multi_class="multinomial")
lr_mn.fit(X,y)

lr_mn.coef_.shape
(3,13)
lr_mn.intercept_.shape
(3,)
Python으로 배우는 선형 분류기

연습해 봅시다!

Python으로 배우는 선형 분류기

Preparing Video For Download...