多クラスロジスティック回帰

Python で学ぶ線形分類器

Michael (Mike) Gelbart

Instructor, The University of British Columbia

1対他(One-vs-Rest)によるバイナリ分類器の組み合わせ

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 で学ぶ線形分類器

1対他(One-vs-Rest):

  • クラスごとにバイナリ分類器を学習
  • 全分類器で予測し、最大出力を選択
  • 利点:シンプルでモジュール構成
  • 欠点:精度を直接最適化しない
  • SVMでも広く使用される
  • 確率を出力可能

「多項」または「ソフトマックス」:

  • 全クラスを1つの分類器で学習
  • 予測で直接最適クラスを出力
  • 欠点:複雑で新しいコードが必要
  • 利点:問題を直接解決する
  • 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...