การถดถอยโลจิสติกแบบหลายคลาส

Linear Classifiers ใน Python

Michael (Mike) Gelbart

Instructor, The University of British Columbia

รวม binary classifier ด้วย 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 ใน Python

One-vs-rest:

  • ฝึก binary classifier สำหรับแต่ละคลาส
  • ทำนายด้วยทุกโมเดล แล้วเลือกค่าผลลัพธ์สูงสุด
  • ข้อดี: ง่ายและเป็นโมดูล
  • ข้อเสีย: ไม่ได้ optimize accuracy โดยตรง
  • ใช้กับ SVM ได้เช่นกัน
  • สามารถให้ค่าความน่าจะเป็นได้

"Multinomial" หรือ "softmax":

  • ฝึก classifier เดียวสำหรับทุกคลาส
  • ผลการทำนายระบุคลาสที่ดีที่สุดโดยตรง
  • ข้อเสีย: ซับซ้อนกว่า ต้องใช้โค้ดใหม่
  • ข้อดี: แก้ปัญหาได้ตรงจุด
  • ใช้กับ SVM ได้ แต่ไม่ค่อยนิยม
  • สามารถให้ค่าความน่าจะเป็นได้
Linear Classifiers ใน 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,)
Linear Classifiers ใน Python

มาฝึกกันเถอะ!

Linear Classifiers ใน Python

Preparing Video For Download...