Багатокласова логістична регресія

Лінійні класифікатори в Python

Michael (Mike) Gelbart

Instructor, The University of British Columbia

Комбінування бінарних класифікаторів «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

One-vs-rest:

  • навчити бінарний класифікатор для кожного класу
  • передбачати всіма, взяти найбільший вихід
  • плюс: просто, модульно
  • мінус: не напряму оптимізує точність
  • часто для SVM також
  • може обчислювати ймовірності

«Multinomial» або «softmax»:

  • навчити один класифікатор для всіх класів
  • передбачення одразу дає найкращий клас
  • мінус: складніше, потрібен новий код
  • плюс: напряму розв'язує задачу
  • можливо для 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...