การคำนวณขอบเขตการตัดสินใจของโมเดล SVM เชิงเส้น


19

จากเวกเตอร์สนับสนุนของ SVM เชิงเส้นฉันจะคำนวณสมการของขอบเขตการตัดสินใจได้อย่างไร


w = ผลรวมของ i (ai ti xi) คุณจะต้องลด lagrangian เพื่อหาค่าของตัวคูณ, ai ฉันสงสัยว่าคุณได้รับเวกเตอร์สนับสนุนอย่างไร กระบวนการเดียวกันควรให้คุณค่ากับไอด้วย
euphoria83

2
ฉันยังไม่สามารถแสดงความคิดเห็น แต่ฉันคิดว่าในคำตอบที่ยอมรับไม่ควรบรรทัดการตัดสินใจและระยะขอบ: abline (b / w [2], - w [1] / w [2]) abline ((b + 1) / w [2], - w [1] / w [2], lty = 2) abline ((b-1) / w [2], - w [1] / w [2], lty = 2) เนื่องจาก abline ใช้เวลา อินพุตเป็นค่าตัดขวางและความชันตามลำดับ wx-b = 0 ซึ่งหมายถึง: w1.x1 + w2.x2 = b ซึ่งแสดงถึง (ตั้งแต่ x2 คือ "y") abline (b / w [2], -w [1] / w [2]) ขออภัยสิ่งนี้ เป็นโพสต์เก่า แต่ฉันคิดว่าฉันถาม
Nepze Tyson

ยินดีต้อนรับสู่เว็บไซต์ @Nepze Tyson นี่ไม่ใช่คำตอบสำหรับคำถามของ OP โปรดใช้ฟิลด์ "คำตอบของคุณ" เพื่อให้คำตอบเท่านั้น หากคุณมีคำถามของคุณเองคลิก[ASK QUESTION]ที่ด้านบนของหน้า & ถามที่นั่นจากนั้นเราสามารถช่วยคุณได้อย่างถูกต้อง เนื่องจากคุณยังใหม่ที่นี่คุณอาจต้องการอ่านหน้าทัวร์ของเราซึ่งมีข้อมูลสำหรับผู้ใช้ใหม่
gung - Reinstate Monica

@Nepze ขอขอบคุณสำหรับความคิดเห็นที่เข้าใจยากและสำหรับเวลาและความสนใจที่คุณได้ทำเพื่อที่จะทำให้มัน ฉันคาดหวังว่ามันจะนำไปสู่คำตอบที่ดีขึ้นที่นี่ ฉันต้องการเข้าร่วม gung ในการต้อนรับคุณสู่เว็บไซต์ของเรา
whuber

คำตอบ:


29

องค์ประกอบของการเรียนรู้ทางสถิติจาก Hastie et al., มีบทที่สมบูรณ์เกี่ยวกับการสนับสนุนลักษณนามเวกเตอร์และ SVMs (ในกรณีของคุณเริ่มต้นหน้า 418 ในฉบับที่ 2) อีกบทช่วยสอนที่ดีคือการสนับสนุน Vector Machines ใน Rโดย David Meyer

หากฉันเข้าใจผิดคำถามของคุณขอบเขตการตัดสินใจ (หรือไฮเปอร์เพลน) ถูกกำหนดโดย (ด้วยและคำว่าดัก) หรือตามที่ @ebony กล่าว การรวมกันเชิงเส้นของเวกเตอร์การสนับสนุน มาร์จิ้นจะเท่ากับตาม Hastie และคณะ ข้อความxTβ+β0=0β=1β02/β

จากความช่วยเหลือออนไลน์ksvm()ในแพ็คเกจ kernlab R แต่ดูkernlab - แพคเกจ S4 สำหรับวิธีเคอร์เนลใน Rนี่คือตัวอย่างของเล่น:

set.seed(101)
x <- rbind(matrix(rnorm(120),,2),matrix(rnorm(120,mean=3),,2))
y <- matrix(c(rep(1,60),rep(-1,60)))
svp <- ksvm(x,y,type="C-svc")
plot(svp,data=x)

โปรดทราบว่าเพื่อความชัดเจนเราจะไม่พิจารณาตัวอย่างรถไฟและทดสอบ ผลลัพธ์แสดงไว้ด้านล่างซึ่งการแรเงาสีช่วยให้เห็นภาพค่าการตัดสินใจ ค่าประมาณ 0 อยู่ในขอบเขตการตัดสินใจ

ข้อความแสดงแทน

การโทรattributes(svp)ให้คุณสมบัติที่คุณสามารถเข้าถึงได้เช่น

alpha(svp)  # support vectors whose indices may be 
            # found with alphaindex(svp)
b(svp)      # (negative) intercept 

ดังนั้นเพื่อแสดงขอบเขตการตัดสินใจโดยมีระยะห่างที่สอดคล้องกันให้ลองทำตาม (ในพื้นที่ที่มีการปรับลดขนาด) ซึ่งได้รับแรงบันดาลใจส่วนใหญ่จากการสอนเกี่ยวกับ SVM ซึ่งJean-Philippe Vertเคยทำมาแล้ว:

plot(scale(x), col=y+2, pch=y+2, xlab="", ylab="")
w <- colSums(coef(svp)[[1]] * x[unlist(alphaindex(svp)),])
b <- b(svp)
abline(b/w[1],-w[2]/w[1])
abline((b+1)/w[1],-w[2]/w[1],lty=2)
abline((b-1)/w[1],-w[2]/w[1],lty=2)

และนี่คือ:

ข้อความแสดงแทน


4
สวยอย่างที่ฉันต้องการ สองบรรทัด: w <- colSums (coef (svp) [[1]] * x [unlist (alphaindex (svp)),]] b <- b (svp) เป็นสวรรค์ ขอขอบคุณ!
dshin

@chi: มันอาจจะน่าสนใจที่จะดูคำตอบของฉันเพื่อ "วิธีการคำนวณขอบเขตการตัดสินใจของ SVM": stats.stackexchange.com/questions/164935/…

4

มันคือการรวมกันเชิงเส้นของเวกเตอร์การสนับสนุนที่สัมประสิทธิ์ถูกกำหนดโดยตัวคูณ Lagrange ที่สอดคล้องกับเวกเตอร์การสนับสนุนเหล่านี้

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