วิธีการรับขอบเขตการตัดสินใจจาก linear SVM ใน R?


9

ฉันต้องการแพคเกจที่สามารถให้สมการสำหรับโมเดล SVM เชิงเส้นได้ ขณะนี้ฉันใช้e1071เช่นนั้น:

library(e1071)
m = svm(data, labels, type='C', kernel='linear', cost=cost, probability=FALSE, scale=scale)
w = t(m$coefs) %*% data[m$index,]  #Weight vector
b = -model$rho #Offset

อย่างไรก็ตามฉันไม่แน่ใจว่าe1071::svm()จะเลือกคลาสบวกและลบได้อย่างไรดังนั้นฉันคิดว่านี่อาจทำให้ชุดข้อมูลแตกต่างกัน ทุกคนสามารถยืนยันได้ว่าฟังก์ชั่นนี้ตัดสินใจว่าคลาสใดเป็นบวก

นอกจากนี้ยังมีแพ็คเกจที่ดีกว่าสำหรับสิ่งนี้หรือไม่?


1
ผมให้ข้อมูลบางประการเกี่ยวกับว่าในหัวข้อที่เกี่ยวข้อง: คอมพิวเตอร์ขอบเขตการตัดสินใจของรูปแบบ SVM เชิงเส้น
chl

คำตอบ:


1

สำหรับจุดข้อมูล SVM ของคุณคำนวณค่าการตัดสินใจด้วยวิธีต่อไปนี้:xd

d <- sum(w * x) + b

ถ้าฉลากแล้วคือ , อื่นมัน-1คุณยังสามารถรับเลเบลหรือค่าการตัดสินใจสำหรับเมทริกซ์ข้อมูลได้ด้วยการพูดd>0x+1-1newdata

predict(m, newdata)

หรือ

predict(m, newdata, decision.values = TRUE)

ใช้ความระมัดระวังเมื่อใช้ SVM จากแพ็คเกจ e1071 ดูที่ปัญหาเกี่ยวกับ e1071 libsvm? คำถาม. แพ็คเกจ SVM อื่น ๆ อีกมากมายสำหรับ R คือ kernlab, klaR และ svmpath ดูภาพรวมนี้: สนับสนุน Vector Machines Machines ใน Rโดย A. Karatzoglou และ D. Meyer


2
ขอบคุณ แต่คำถามของฉันเกี่ยวกับวิธีที่ฉันได้รับค่า w และ b นอกจากนี้เกี่ยวกับมูลค่าการตัดสินใจฉันถามว่า e1071 ตัดสินใจว่าฉลากใดให้เป็นบวกและลบสำหรับข้อมูลการฝึกอบรมเมื่อคุณผ่านปัจจัย
reisner

1
ฉันไม่คุ้นเคยกับ e1071 แต่ฉันรู้จัก SVM ไม่ว่าคลาสนั้นจะถือเป็นบวกหรือลบจะไม่ส่งผลกระทบต่อผลลัพธ์ คุณสามารถใช้ชุดข้อมูลใด ๆ และสลับคลาสฉลากและคุณยังควรได้รับผลลัพธ์เดียวกันในแง่ของการจำแนกคะแนนทดสอบ (สำหรับพารามิเตอร์เดียวกัน) ค่าบวกและค่าลบถูกใช้เพื่อตรวจสอบว่าอินสแตนซ์ตกอยู่ทางด้านขวาของขอบเขตการตัดสินใจหรือไม่
karenu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.