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

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

Michael (Mike) Gelbart

Instructor, The University of British Columbia

Объединение бинарных классификаторов: метод «один против всех»

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

«Один против всех»:

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

«Мультиномиальный» / «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...