簡體   English   中英

使用libsvm來了解SVM問題

[英]using libsvm to understand SVM questions

在這里,我張貼了兩個數字以及一些問題,有人可以幫助我解決它們,因為我真的陷入其中了嗎?

1. Training a simple linear SVM:
% svm-train -t 0 -c 100 data0 data0.model
% python drawBoundary.py data0
where: 
-t 0    -- use a linear kernel
-c 100  -- set "C" = 100, which means "overfit a lot"

然后是結果圖: 在此處輸入圖像描述

這是一個易於分離的數據集,這由少量支持向量反映出來。 在圖中,SV被繪制得很大(並且在邊距上,虛線與決策邊界相距一個單位,實線)。

然后是第一個問題:

Q1: You should have found that it takes 3 support vectors. Could you have fewer (eg., 2) support vectors here? And why?

我的答案是“否”,3是最小的數字。 但這只是我的直覺。 我不知道為什么 有人可以向我解釋原因嗎?

2.
% svm-train -t 2 -c 100 -g 100 data0 data0.model
% python drawBoundary.py data0
where:
-t 2 means RBF and -g100 means gamma=100
A gamma of 100 means that you have to be really close to a point to have a kernel value that's non-zero.

這是結果圖: 在此處輸入圖像描述

然后是第二個問題:

問題2:為什么會出現這些小斑點? 您必須將伽瑪調高多少才能在每個示例周圍獲得一個小的決策邊界(即每個決策邊界恰好圍繞一個示例)?

對於這個問題,我完全迷路了。

第一個問題應該是3分,因為您需要在同一側獲得兩個點才能繪制一條線,然后在另一側獲得一個點以繪制第二條線(與第一條線平行)。 將選擇這3個點以具有最大的余量(即,平行線具有最大的間隔/距離)。 如果您不使用3個點,那么總有一種方法可以增加兩條平行線之間的距離,因此這不是我們要尋找的解決方案。

對於第二個問題,我想必須嘗試幾個伽瑪值才能回答。 伽瑪通常采用10的冪的一組值(不確定英語是否正確:),例如{1 10 100} = {10 ^ 0 10 ^ 1 10 ^ 2}。 並且我們通過交叉驗證選擇適合我們的數據。 這樣做使我們能夠擁有既不會過度擬合也不會不足的高效SVM。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM