Vícetřídní logistická regrese

Linear Classifiers in Python

Michael (Mike) Gelbart

Instructor, The University of British Columbia

Kombinování binárních klasifikátorů metodou 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
Linear Classifiers in Python

One-vs-rest:

  • pro každou třídu se natrénuje binární klasifikátor
  • predikce ze všech, vybere se největší výstup
  • výhoda: jednoduché a modulární
  • nevýhoda: přímo neoptimalizuje přesnost
  • běžné také pro SVM
  • umožňuje výpočet pravděpodobností

„Multinomiální" nebo „softmax":

  • jeden klasifikátor pro všechny třídy
  • predikce přímo vrací nejlepší třídu
  • nevýhoda: složitější, nový kód
  • výhoda: přímé řešení problému
  • možné pro SVM, méně časté
  • umožňuje výpočet pravděpodobností
Linear Classifiers in Python

Koeficienty modelu pro vícetřídní klasifikaci

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,)
Linear Classifiers in Python

Pojďme si procvičit!

Linear Classifiers in Python

Preparing Video For Download...