เราตีความน้ำหนักของคุณสมบัติ SVM อย่างไร


42

ฉันกำลังพยายามตีความน้ำหนักของตัวแปรที่กำหนดโดยการปรับ SVM เชิงเส้นให้เหมาะสม

(ฉันใช้Scikit เรียนรู้ ):

from sklearn import svm

svm = svm.SVC(kernel='linear')

svm.fit(features, labels)
svm.coef_

ฉันไม่พบสิ่งใดในเอกสารที่ระบุวิธีการคำนวณหรือตีความน้ำหนักเหล่านี้โดยเฉพาะ

เครื่องหมายของน้ำหนักมีส่วนร่วมกับชั้นเรียนหรือไม่?

คำตอบ:


55

สำหรับเคอร์เนลทั่วไปเป็นการยากที่จะตีความน้ำหนักของ SVM อย่างไรก็ตามสำหรับ SVM เชิงเส้นนั้นจริง ๆ แล้วเป็นการตีความที่มีประโยชน์:

1) จำได้ว่าใน SVM เชิงเส้นผลลัพธ์คือไฮเปอร์เพลนที่แยกคลาสที่ดีที่สุดเท่าที่จะทำได้ น้ำหนักแสดงถึงไฮเปอร์เพลนนี้โดยให้พิกัดของเวกเตอร์ซึ่งเป็นมุมฉากกับไฮเปอร์เพลน - นี่คือสัมประสิทธิ์ที่กำหนดโดย svm.coef_ ลองเรียกเวกเตอร์นี้ว่า

2) เราสามารถทำอะไรกับเวกเตอร์นี้ ทิศทางเป็นคลาสที่ทำนายไว้ดังนั้นถ้าคุณหาจุดดอทใด ๆ กับเวกเตอร์, คุณสามารถบอกได้ว่ามันคือด้านใด: ถ้าผลคูณบวก, มันอยู่ในชั้นบวก, ถ้ามันเป็นลบ เป็นของชนชั้นลบ

3) ในที่สุดคุณสามารถเรียนรู้บางอย่างเกี่ยวกับความสำคัญของแต่ละคุณสมบัติ นี่คือการตีความของฉันเองเพื่อโน้มน้าวตัวเองก่อน สมมติว่า svm จะพบเพียงหนึ่งคุณลักษณะที่มีประโยชน์สำหรับการแยกข้อมูลจากนั้นไฮเปอร์เพลนจะเป็นมุมฉากกับแกนนั้น ดังนั้นคุณสามารถบอกได้ว่าขนาดสัมบูรณ์ของค่าสัมประสิทธิ์สัมพันธ์กับขนาดอื่นแสดงถึงความสำคัญของคุณลักษณะสำหรับการแยก ตัวอย่างเช่นหากใช้เฉพาะพิกัดแรกเท่านั้นสำหรับการแยก w จะอยู่ในรูปแบบ (x, 0) โดยที่ x คือตัวเลขที่ไม่ใช่ศูนย์และจากนั้น | x |> 0


3
จุดที่ 3 เป็นพื้นฐานสำหรับอัลกอริทึม RFE โดยใช้เวกเตอร์น้ำหนักของ SVM เชิงเส้นสำหรับการเลือกคุณสมบัติ (ยีน): ดู Guyon axon.cs.byu.edu/Dan/778/papers/Feature%20Selection/guyon2.pdf
B_Miner

1
@B_Miner ขอบคุณมาก! ฉันกังวลว่าเมื่อฉันคิดเกี่ยวกับสิ่งนี้ด้วยตัวเองมันอาจจะผิด (ฉันไม่ได้มาจาก CS ที่ "บริสุทธิ์") - แต่ฉันเดาว่ามันถูกต้อง
Bitwise

1
อะไรคือความหมายของทิศทางของเวกเตอร์มุมฉากถ้ามันแยกทั้งสองคลาส? มันมีบางอย่างเกี่ยวข้องกับการแบ่งไฮเปอร์เพลนที่แยกออกจากความน่าจะเป็นโดยรวมของการทำนายระดับหรือไม่?
Austin Richardson

หากต้องการอธิบายอย่างละเอียดว่าสัญญาณของน้ำหนักนั้นเกี่ยวข้องกับคลาสหรือไม่ (ในกรณีที่เป็นเส้นตรง) - ขึ้นอยู่กับคุณสมบัติ ตัวอย่างเช่นหากคุณลักษณะการคาดการณ์ใช้ค่าที่ไม่ใช่เชิงลบ ( ) เท่านั้นน้ำหนักที่ติดลบจะทำให้เกิดการจัดหมวดหมู่เชิงลบของจุดข้อมูล 0
Kdawg

@B_Miner ฉันคิดว่าคุณตั้งใจจะเชื่อมโยงไปยังบทความนี้มากกว่า Guyon
ijoseph

11

เอกสารเสร็จสมบูรณ์สวย: สำหรับกรณี multiclass, SVC ซึ่งอยู่บนพื้นฐานห้องสมุด libsvm ใช้การตั้งค่าหนึ่ง VS-หนึ่ง ในกรณีของเคอร์เนลเชิงเส้นn_classes * (n_classes - 1) / 2แต่ละรุ่นไบนารีเชิงเส้นจะถูกติดตั้งสำหรับคู่ของคลาสที่เป็นไปได้ ดังนั้นรูปร่างรวมของพารามิเตอร์ primal ทั้งหมดที่ต่อกันเข้าด้วยกันคือ[n_classes * (n_classes - 1) / 2, n_features](+ [n_classes * (n_classes - 1) / 2intercepts ในintercept_attribute)

สำหรับปัญหาเชิงเส้นไบนารีการพล็อตไฮเปอร์เพลนที่แยกออกจากcoef_แอ็ตทริบิวต์จะทำในตัวอย่างนี้

หากคุณต้องการรายละเอียดเกี่ยวกับความหมายของพารามิเตอร์ที่ติดตั้งโดยเฉพาะอย่างยิ่งสำหรับกรณีเคอร์เนลที่ไม่ใช่เชิงเส้นให้ดูที่สูตรทางคณิตศาสตร์และการอ้างอิงที่กล่าวถึงในเอกสารประกอบ


1
ในเอกสารประกอบของ Sklearn แอตทริบิวต์ coef_ มีรูปร่าง = [n_class-1, n_features] ฉันเชื่อว่ามันเป็นความผิดพลาด
Naomi

6

ฉันกำลังพยายามตีความน้ำหนักของตัวแปรที่กำหนดโดยการปรับ SVM เชิงเส้นให้เหมาะสม

วิธีที่ดีในการทำความเข้าใจวิธีคำนวณน้ำหนักและวิธีตีความน้ำหนักในกรณีของ SVM เชิงเส้นคือการคำนวณด้วยมือในตัวอย่างง่ายๆ

ตัวอย่าง

พิจารณาชุดข้อมูลต่อไปนี้ซึ่งแยกได้เป็นเส้นตรง

import numpy as np
X = np.array([[3,4],[1,4],[2,3],[6,-1],[7,-1],[5,-3]] )
y = np.array([-1,-1, -1, 1, 1 , 1 ])

ง่าย SVM

การแก้ปัญหา SVM โดยการตรวจสอบ

โดยการตรวจสอบเราจะเห็นว่าเส้นเขตแดนที่แยกจุดที่มี "ขอบ" ที่ใหญ่ที่สุดเป็นบรรทัด3 เนื่องจากน้ำหนักของ SVM เป็นสัดส่วนกับสมการของบรรทัดการตัดสินใจนี้ (ไฮเปอร์เพลนในมิติที่สูงกว่า) โดยใช้การเดาแรกของพารามิเตอร์จะเป็นx2=x13wTx+b=0

w=[1,1]  b=3

ทฤษฎี SVM บอกเราว่า "width" ของอัตรากำไรขั้นต้นจะได้รับจากW} ใช้การคาดเดาดังกล่าวข้างต้นที่เราจะได้รับความกว้างของ{2} ซึ่งโดยการตรวจสอบไม่ถูกต้อง ความกว้างคือ2||w||222=242

จำได้ว่าการขยายขอบเขตด้วยตัวประกอบของไม่ได้เปลี่ยนเส้นแบ่งเขตดังนั้นเราสามารถสรุปสมการc

cx1cx23c=0
w=[c,c]  b=3c

เสียบกลับเข้าไปในสมการสำหรับความกว้างที่เราได้รับ

2||w||=4222c=42c=14

ดังนั้นพารามิเตอร์ (หรือสัมประสิทธิ์) อยู่ในความเป็นจริง

w=[14,14]  b=34


(ฉันใช้ scikit เรียนรู้)

ดังนั้นฉันนี่คือรหัสเพื่อตรวจสอบการคำนวณด้วยตนเองของเรา

from sklearn.svm import SVC
clf = SVC(C = 1e5, kernel = 'linear')
clf.fit(X, y) 
print('w = ',clf.coef_)
print('b = ',clf.intercept_)
print('Indices of support vectors = ', clf.support_)
print('Support vectors = ', clf.support_vectors_)
print('Number of support vectors for each class = ', clf.n_support_)
print('Coefficients of the support vector in the decision function = ', np.abs(clf.dual_coef_))
  • w = [[0.25-0.25]] b = [-0.75]
  • ดัชนีสนับสนุนเวกเตอร์ = [2 3]
  • สนับสนุนเวกเตอร์ = [[2. 3. ] [6. -1.]]
  • จำนวนเวกเตอร์สนับสนุนสำหรับแต่ละชั้น = [1 1]
  • สัมประสิทธิ์ของเวกเตอร์สนับสนุนในฟังก์ชันการตัดสินใจ = [[0.0625 0.0625]

เครื่องหมายของน้ำหนักมีส่วนร่วมกับชั้นเรียนหรือไม่?

ไม่จริง ๆ แล้วสัญญาณของตุ้มน้ำหนักเกี่ยวข้องกับสมการของระนาบเขตแดน

 

แหล่ง

https://ai6034.mit.edu/wiki/images/SVM_and_Boosting.pdf


5

ตรวจสอบกระดาษในการเลือกคุณลักษณะ ผู้เขียนใช้ตารางน้ำหนัก (ของคุณลักษณะ) ตามที่กำหนดโดยเคอร์เนล SVM เชิงเส้นเป็นตัวชี้วัดการจัดอันดับสำหรับการตัดสินใจความเกี่ยวข้องของคุณลักษณะเฉพาะ นี่เป็นวิธีหนึ่งในการเลือกยีนจากข้อมูลไมโครเรย์


3

บทความยอดเยี่ยมโดย Guyon และ Elisseeff (2003) ความรู้เบื้องต้นเกี่ยวกับการเลือกตัวแปรและคุณสมบัติ วารสารการวิจัยการเรียนรู้ของเครื่อง 1157-1182 กล่าวว่า: "การสร้างและการเลือกชุดย่อยของคุณลักษณะที่มีประโยชน์ในการสร้างตัวทำนายที่ดีกับปัญหาของการค้นหาหรือการจัดอันดับตัวแปรที่เกี่ยวข้องทั้งหมดการเลือกตัวแปรที่เกี่ยวข้องที่สุดมักจะไม่ดีสำหรับการสร้าง โดยเฉพาะอย่างยิ่งถ้าตัวแปรซ้ำซ้อนในทางกลับกันเซตย่อยของตัวแปรที่มีประโยชน์อาจยกเว้นตัวแปรที่ซ้ำซ้อนมากมาย แต่เกี่ยวข้องกัน "

ดังนั้นฉันขอแนะนำข้อควรระวังเมื่อแปลน้ำหนักของตัวแบบเชิงเส้นโดยทั่วไป (รวมถึงการถดถอยโลจิสติกการถดถอยเชิงเส้นและเคอร์เนลเชิงเส้น SVM) น้ำหนัก SVM อาจชดเชยหากข้อมูลอินพุตไม่ได้ถูกทำให้เป็นมาตรฐาน น้ำหนัก SVM สำหรับคุณสมบัติเฉพาะนั้นยังขึ้นอยู่กับคุณสมบัติอื่น ๆ โดยเฉพาะอย่างยิ่งหากคุณลักษณะนั้นมีความสัมพันธ์กัน เพื่อกำหนดความสำคัญของคุณลักษณะส่วนบุคคลวิธีการจัดอันดับคุณลักษณะเป็นตัวเลือกที่ดีกว่า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.