Wieloklasowa regresja logistyczna

Liniowe klasyfikatory w Pythonie

Michael (Mike) Gelbart

Instructor, The University of British Columbia

Łączenie klasyfikatorów binarnych metodą jeden-kontra-reszta

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
Liniowe klasyfikatory w Pythonie

Jeden-kontra-reszta:

  • dopasowanie klasyfikatora binarnego dla każdej klasy
  • predykcja wszystkimi klasyfikatorami, wybór największego wyniku
  • zaleta: prostota i modułowość
  • wada: nie optymalizuje bezpośrednio dokładności
  • popularne również dla SVM
  • możliwość generowania prawdopodobieństw

"Wielomianowa" lub "softmax":

  • jeden klasyfikator dla wszystkich klas
  • predykcja bezpośrednio zwraca najlepszą klasę
  • wada: bardziej złożona, wymaga nowego kodu
  • zaleta: bezpośrednie rozwiązanie problemu
  • możliwe dla SVM, ale rzadziej stosowane
  • możliwość generowania prawdopodobieństw
Liniowe klasyfikatory w Pythonie

Współczynniki modelu dla wielu klas

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,)
Liniowe klasyfikatory w Pythonie

Czas na ćwiczenia!

Liniowe klasyfikatory w Pythonie

Preparing Video For Download...