Flerklass-logistisk regression

Linjära klassificerare i Python

Michael (Mike) Gelbart

Instructor, The University of British Columbia

Kombinera binära klassificerare med en-mot-resten

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
Linjära klassificerare i Python

En-mot-resten:

  • träna en binär klassificerare per klass
  • predicera med alla, välj störst utdata
  • fördel: enkel och modulär
  • nackdel: optimerar inte noggrannhet direkt
  • vanlig även för SVM
  • kan producera sannolikheter

"Multinomial" eller "softmax":

  • träna en enda klassificerare för alla klasser
  • prediktionen ger direkt bästa klass
  • nackdel: mer komplex, ny kod
  • fördel: angriper problemet direkt
  • möjlig för SVM, men mindre vanlig
  • kan producera sannolikheter
Linjära klassificerare i Python

Modellkoefficienter för flerklass

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,)
Linjära klassificerare i Python

Nu kör vi en övning!

Linjära klassificerare i Python

Preparing Video For Download...