回覆列表
-
1 # 北航秦曾昌
-
2 # 愛資料的小司機
支援向量機是一種分類演算法,最大的特點是:構造出最大間距的決策邊界,如果在當前空間線性不可分,則會對映到更高的緯度空間。
優點:特別是針對資料集較小的的情況下,往往分類效果比神經網路好。
高準確率,為避免過擬合提供了很好的理論保證。
能夠處理非線性特徵的相互作用。
無需依賴整個資料,可以提高泛化能力。
缺點:主要是因為演算法把特徵對映到更高緯度而導致如下問題:
計算成本高,計算速度慢,記憶體消耗大,
模型過程及結果難以解釋,
對缺失資料敏感,
執行和調參也有些煩人,而隨機森林卻剛好避開了這些缺點,比較實用。
Logistic迴歸與支援向量機SVM都是常用的分類模型演算法,都是透過類似正則項來防止模型過擬合
線上性不可分的情況下,SVM比Logistic迴歸有更好的表現
邏輯迴歸本質上是迴歸模型,結果會生成特徵的權重,有更好的解釋性,
支援向量機則有點像黑盒難以解釋,因為對映到更高緯度空間現實中不直觀。
最佳化:最佳化需要了解模型過程,可以參考以前的文章-支援向量機的數學原理:https://www.toutiao.com/i6570907255812653575/1,鬆弛係數
對於線性不可分的資料集,引入鬆弛係數ξ,
可以理解為資料樣本違反最大間距規則的程度,大部分分類正常的樣本,即滿足約束條件的樣本ξ=0,而對部分違反最大間距規則的樣本ξ>0,引數C表示對違反最大間距規則樣本的"懲罰"力度,當C比較大的時候,對於違反規則的點的懲罰力度將變得很大,C比較小的時候,對於違反規則的點,其付出的代價不是特別大,一般模型會傾向於允許部分樣本違反最大間距規則
其實鬆弛係數類似邏輯迴歸中的正則項,目的都是為了糾正過擬合問題,讓支援向量機對噪聲資料有更強的適應性。
2,核函式kernel,把低維空間對映到高維空間
liner – 線性核函式poly – 多項式核函式:(gamma*u"*v + coef0)^degree rbf – RBF高斯核函式:exp(-gamma|u-v|^2)核函式的選擇:
1,如果特徵個數遠大於訓練樣本個數,一般選擇線性核函式即可
2,如果特徵個數遠小於訓練樣本數,一般需要增加特徵,可以選擇多項式核函式或者高斯核函式
3,如果特徵個數和訓練個數差別不是很大,可以使用高斯核函式
一、SVM的優缺點
優點:
(1)SVM理論提供了一種避開高維空間的複雜性,直接用此空間的內積函式(既是核函式),再利用線上性可分的情況下的求解方法直接求解對應的高維空間的決策問題。當核函式已知,可以簡化高維空間問題的求解難度。
(2)SVM最終決策函式只由少數的支援向量所確定,計算的複雜性取決於支援向量的數目,而不是樣本空間的維數,這在某種意義上避免了“維數災難”。
(3)少數支援向量決定了最終結果,這不但可以幫助我們抓住關鍵樣本、“剔除”大量冗餘樣本,而且註定了該方法不但演算法簡單,而且具有較好的魯棒性。這種魯棒性主要體現在:增、刪非支援向量樣本對模型沒有影響、支援向量樣本集具有一定的魯棒性、在某些應用中SVM 方法對核的選取不敏感。
(4)SVM是基於小樣本統計理論的基礎上的,這符合機器學習的目的.而且支援向量機比神經網路具有較好的泛化推廣能力。
缺點:
(1)對於每個高維空間在此空間的對映F,如何確定F也就是核函式,現在還沒有合適的方法,所以對於一般的問題,SVM只是把高維空間的複雜性的困難轉為了求核函式的困難。
(2)即使確定核函式以後,在求解問題分類時,要求解函式的二次規劃,這就需要大量的儲存空間。
(3)SVM演算法對大規模訓練樣本難以實施。由於SVM是藉助二次規劃來求解支援向量,而求解二次規劃將涉及m階矩陣的計算(m為樣本的個數),當m數目很大時該矩陣的儲存和計算將耗費大量的機器記憶體和運算時間。
(4)用SVM解決多分類問題存在困難。用SVM解決多分類問題存在困難經典的支援向量機演算法只給出了二類分類的演算法,而在資料探勘的實際應用中,一般要解決多類的分類問題。
二、SVM與Logistic迴歸SVM和Logistic迴歸都是常見的分類演算法。從目標函式來說,區別在於Logistic迴歸採用的是log對數損失函式L(Y,P(Y|X))=-log(P(Y|X)),SVM採用的是hingle loss。損失函式的目的都是增加對分類影響較大的資料點的權重,減小對分類影響小的資料點的權重。 SVM只考慮支援向量,也就是和分類最相關的少數點,去學習分類器。而logistic迴歸透過非線性對映,大大減小離分類平面較遠的點的權重,相對提升與分類最相關的資料點的權重。
SVM和Logistic迴歸的適用情形:
設m是樣本數,n是特徵的數目
(1)如果n相對於m來說很大,則使用Logistic迴歸或者不帶核函式的SVM(線性分類);
(2)如果n很小,m的數量適中(n=1-1000,m=10-10000),使用帶核函式的SVM演算法;
(3)如果n很小,m很大(n=1-1000,m=50000+),增加更多的特徵,然後使用logistic迴歸或者不帶核函式的SVM。
三、SVM的改進與最佳化由於篇幅所限,在這裡給出一篇關於最佳化SVM演算法的論文以供參考。該論文以統計學理論為基礎,重點研究了支援向量機核函式的構造、支援向量機快速訓練演算法、支援向量機訓練集剪輯技術等內容。
論文連結地址:http://kns.cnki.net/KCMS/detail/detail.aspx?dbcode=CMFD&dbname=CMFD2010&filename=2009201504.nh&v=MTc4MjBWMTI3RjdHNEg5VE1xNUViUElSOGVYMUx1eFlTN0RoMVQzcVRyV00xRnJDVVJMS2ZZT2RvRnlublZickE=