svm
支援向量機是個二分類模型。
給定給乙個包含正例和反例的樣本集合,svm的目的是尋找乙個超平面來對樣本根據正例和反例進行分割。保證最大間隔,間隔最大可以有效避免在分類面上的樣本的誤判率。網上也是對其推崇備至,認為不管什麼任務,先跑跑svm和rf。
對於超平面的求取,是乙個凸二次規劃問題,牽扯到對偶優化,在此不做詳細解釋。對於非線性超平面的求取,需要用到核函式。常用核函式例如:多項式核函式、高斯核核函式、線性核函式、高斯核函式、字串核函式。上述方法叫做核方法。事實上,任何將計算表示為資料點內積的方法都可以用核方法進行非線性擴充套件。
對於使用哪一種核函式,具體問題具體分析,一些大牛的經驗是:
一般用線性核和高斯核,也就是linear核與rbf核需要注意的是需要對資料歸一化處理,很多使用者忘了這個小細節然後一般情況下rbf效果是不會差於linear但是時間上rbf會耗費更多。
下面是吳恩達的見解:
1、如果feature的數量很大,跟樣本數量差不多,這時候選用lr或者是linear kernel的svm2. 如果feature的數量比較小,
2、樣本數量一般,不算大也不算小,選用svm+gaussian kernel
3、如果feature的數量比較小,而樣本數量很多,需要手工新增一些feature變成第一種情況
由於噪音的存在,有可能有偏離正常位置很遠的資料點存在,甚至類別1出現雜了類別2的區域中這樣的異常值叫outliers。
為處理這種情況,
需要乙個懲罰因子c(cost),它代表了對離群點帶來的損失的重視程度,它的值越大,對目標函式的損失越大,意味著你非常不願意放棄這些點。
由使用者指定的乙個值(libsvm中的引數c),是引數調優的重點所在。
svm也能解決多分類問題:
1、一對多
也就是「一對其餘」(one-against-all) 的方式,就是每次仍然解乙個兩類分類的問題。這樣對於n個樣本會得到n個分類器。但是這種方式可能會出現分類重疊現象或者不可分類現象,而且由於「其餘」的資料集過大,這樣其實就人為造成了「資料偏斜」的問題。
生成n個分類器,對應n個分類結果,最終的結果由n個分類結果中概率最大的決定。
2、一對一
每次選擇乙個類作為正樣本,負樣本只用選其餘的乙個類,這樣就避免了資料偏斜的問題。訓練出的分類個數是k*(k-1)/2,雖然分類器的個數比上面多了,但是訓練階段所用的總時間卻比「一類對其餘」方法少很多。
這種方法可能使多個分類器指向同乙個類別,所以可以採用「投票」的方式確定哪個類別:哪個分類器獲得的票數多就是哪個分類器。這種方式也會有分類重疊的現象,但是不會有不可分類的情況,因為不可能所有類別的票數都是0。但是也很容易發現這種方法是分類器的數目呈平方級上公升。
3、dag svm
假設有1、2、3、4、5五個類,那麼可以按照如下方式訓練分類器( 這是乙個有向無環圖,因此這種方法也叫做dag svm)
這種方式減少了分類器的數量,分類速度飛快,而且也沒有分類重疊和不可分類現象。
但是假如一開始的分類器回答錯誤,那麼後面的分類器沒有辦法糾正,錯誤會一直向下累積。
為了減少這種錯誤累積,根節點的選取至關重要。
機器學習 SVM
當train data線性可分時,存在多個分離超平面可以把兩類資料正確分開,感知機利用的是誤分類最小的策略,求得分離超平面。但是這是有無窮多個解,而線性svm利用了間隔最大化求分離超平面,解是唯一的,優點是不僅把正負樣本點分開,還對最難分的點 即離超平面最近的點 也有足夠大的確信度將它們分開 希望用...
機器學習SVM
svm支援向量機他是乙個二類分類模型,是給基本模型的特徵空間間隔最大的線性分類器,目的就是求最大間隔 eg 給定一些資料點用x表示資料點,用y表示分的類別 y可以取1或者 1,分別代表兩個不同的類 線性分類器 svm 就是要在n維中找到乙個超平面可以將資料更好的分類 這個超平面的方程可以表示為 wt...
機器學習 SVM
如果沒學過svm的話那就等於沒有學過機器學習。svm作為機器學習中最經典的演算法之一在2012年之前曾叱吒風雲,可以說除了整合演算法或深度學習之外是乙個最好的分類器。svm的型別有三種,即線性可分支援向量機 軟間隔支援向量機以及非線性支援向量機。由於本文是對演算法進行概括,因此手推支援向量機的任務這...