1. 程式人生 > >pluskid'SVM系列筆記(可當做目錄對照看)

pluskid'SVM系列筆記(可當做目錄對照看)

我希望 sam amp 性能 infinite 邊界 不同 很好 線性可分

0.訓練數據對分類器性能的影響

原文鏈接:http://blog.pluskid.org/?p=223

1.訓練數據的不平衡性對分類器性能的影響(precision 、accuracy、error rate 等)

2.SVM(support vector machine)通過hyperplane切分數據,so we can have lots of reasonable hyperplane.

對於需要復雜曲線才能切分的邊界:將數據映射到高維空間,這樣通常都能轉化成可用線性邊界切分的情況,

use Kernel trick (https://en.wikipedia.org/wiki/Kernel_method)(用核函數映射到高維空間,實現線性可分)

3.We have infinite reasonable hyperplanes,but we just pick one,and SVM choose the hyperplane with the best margin.

技術分享技術分享

margin 就是超平面到離它最近的點的距離,圖中黑線到橙色虛線的距離,SVM 在不同位置和方向的超平面之中選擇了黑色的這個,因為它的 margin 最大。

4.這樣做有不少好處:a. SVM 只要集中關註在邊緣上的那些點,亦即圖中橙色虛線上的點,(這些點被稱作 Support Vector ,因為每一個 數據可被表示成一個 D 維向量的),這在數據量變得非常大的時候可以很有效地減少計算復雜度。

b.SVM 在實踐中也被證明性能非常好, SVM 的歸納偏執可以看成是“margin 最大的 hyperplane 才是最好的”,實踐證明,這看上去 頗有些 naive 的偏執表現很好,有優異的 generalization。

c.由於訓練數據中的 70% 實際上最終是沒有什麽用的,可以想像,如果“運氣好”的話,剛好找到那三個 Support Vector ,直接把它們拿去做訓練,一點都不浪費!這個想法是非常誘人的,因為在許多領域,要收集帶 label 的訓練數據通常代價都比較昂貴——需要人工進行標記。

5.不平衡的訓練數據通常會降低分類器的性能,影響大小不能一概而論(原文有實驗圖),

而解決這個問題的辦法一般有兩種:

a.(數據)under sample(減少sample多的那一類的訓練數據,通常選孤立點等);over sample(增加sample少的那一類的訓練數據,通常人工標註,復制粘貼讓數據重復)

b.(算法)只要能把“我希望你不要歧視小眾”這個美好願望傳達過去,結合到最終模型中,都可以算一種方法。

比如,有一種最土的辦法是在訓練完成之後再偷偷地把 hyperplane 往另一邊挪一下。而其他看起來靠譜一點的方法卻又有些復雜了(比如 moonykily 前幾天給我看的這篇 Class-Boundary Alignment for Imbalanced Dataset Learning 就是在 Kernel Function/Matrix 上做手腳)

6.關於5的展開:我們已經有了一個 SVM 了,要選更多的 sample 嗎?我們不是想要新加入的點都盡可能地變成 Support Vector 嗎?那麽 Support Vector 在哪裏呢?靠近 hyperplane 的地方!bingo! 我們只要在收集到的所有 unlabeled data 中選取離 hyperplane 最近的一些點,標記一下,那麽它們成為 Support Vector 的概率就很大了,並且結果很有可能比之前的 hyperplane 更好,然後我們可以用叠代的方法來選更多的點。

從 unlabeled data 中選出“重要”的 sample 來進行標記並用做下一步的訓練數據.

一。

pluskid'SVM系列筆記(可當做目錄對照看)