支持向量機 matlab,Machine Learning - XII. Support Vector Machines支持向量機(Week 7)

 2023-12-09 阅读 23 评论 0

摘要:http://blog.csdn.net/pipisorry/article/details/44522881 機器學習Machine Learning - Andrew NG?courses學習筆記 Support Vector Machines支持向量機 {學習復雜非線性函數的有力方法} 優化目標Optimization Objective 邏輯回歸 SVM的Cost function 另一個角度看待單個樣本

http://blog.csdn.net/pipisorry/article/details/44522881

機器學習Machine Learning - Andrew NG?courses學習筆記

Support Vector Machines支持向量機

{學習復雜非線性函數的有力方法}

優化目標Optimization Objective

邏輯回歸

SVM的Cost function

另一個角度看待單個樣本的cost:SVM與邏輯回歸的不同

從θ'x出發看待而不是hθ(x)

Note: 藍色線代表logistic regression, 紫洋紅色線代表SVM;

紫洋紅色線代表的cost函數給了SVM計算的優勢computational advantage, that will give us later on an easier optimization problem, that will be easier for stock trades.

邏輯回歸H函數預測錯就會有很大的懲罰,y = 1,H預測接近1(不能達到)或者θ'x接近正無窮,-log(H)懲罰就會接近0;H預測接近0(不能達到)或者θ'x接近負無窮,-log(H) cost就會接近無窮大。??? 同理SVM中,y = 1,如果θ'x >1(也就是遠離分界邊緣)時無懲罰,而如果θ'x<0(or 1)時懲罰很大,且θ'x越<0時懲罰越大


SVM中使用新規格化參數C代替規格化參數λ,這樣C就相當于1/λ。

Hypothesis for SVM

θ已經得到后,θ'x >= 0 時預測y = 1;否則預測y=0。

Note: SVM doesn't output the probability. y predict 1, if θ'x >= 0.

這個hypothesis和在學習θ的值時想要θ'x >= 1(最小化cost fun) 沒有太大關系, 尤其是參數C設置相當大的時候,更要θ'x >= 1使得cos1() = 0。

皮皮blog



大邊緣分類器Large Margin Classifier

如果有一個negative example,可能 θ'x < 0就足夠了(這樣就認為它是正確的,不用去懲罰它),that will make sure we got the example right.但是svm不會 just barely 認為這個樣本正確,我們想要的是θ'x < -1。And so this builds in an extra safety factor or safety margin factor into the support vector machine.

Note: 在logistic回歸中,negative example,θ'x < -1都不夠(都要去懲罰,只是懲罰力度不一樣),這樣可能導致關注的點并不是分界面附近的點,而是遠離分界面的點(因為遠離分界面分對的點[雖然都是小懲罰]加起來的懲罰可能還超過分界面附近分錯的點)。


SVM會選擇black decision boundary. this black decision boundary has a larger distance called themargin,gives the SVM a certain robustness, because it tries to separate the data with as a large a margin as possible.

SVM是一個large margin classifier。
decision boundary是能夠將所有數據點進行很好地分類的h(x)邊界。如圖所示,我們可以把綠線、粉線、藍線或者黑線中的任意一條線當做decision boundary,但是哪一條最好呢?綠色、粉色、藍色這三類boundary離數據非常近,再加進去幾個數據點,很有可能這個boundary就能很好的進行分類了,而黑色的decision boundary距離兩個類都相對較遠,我們希望獲得的就是這樣的一個decision boundary。什么是margin?margin就是將該boundary進行平移所得到的兩條藍線的距離,如圖所指。

regularization concept C的取值大小的影響

對C的取值應該在分類是否犯錯和margin的大小上做一個平衡。那么C取較大的值會帶來什么效果呢?對outliers敏感。

如上圖中,加一個額外的紅x,如果c太大(拼命擬合數據防止cost func A部分太大)的話,SVM就會將 decision boundary從黑線改變成紫紅線。And in particular, if use a?large margin classifier?then your learning algorithms can be sensitive to outliers。
當C不是很大時,不僅可以消去outliers的影響(防止過擬合),在數據線性不可分時也表現良好。

大邊緣分類背后的數學

{解釋了為什么SVM是一個large margin classifier}

向量內積

Note: u'v = ||u||*||v||*cos(u,v) = p*||u||

SVM決策邊界

SVM優化問題

修改SVM最小化問題為:

幾點說明:

1 s.t.約束條件:來自min(cost fun)的第一項,參數C設置很大時,第一項要為0;在參數C很大時,cost fun第一項要為0(cost fun才會小)就有了s.t.的約束條件pi * θ >= 1,這時cost function只剩下后面的那項。

2 簡化說明問題,設θ0=0,只剩下θ1和θ2,其實加不加θ0對后面的derivation沒有影響。θ0 = 0也正意味著decision boundary必須通過原點(0,0)。
3 parameter vector θ垂直于決策邊界decision boundary。如邊界線θ'x >= 0為θ1*x1 + θ2*x2 >= 0時,θ垂直于θ1*x1 + θ2*x2 = 0這條邊界。(平面幾何基礎)

SVM做的是最小化squared norm of the square length of the parameter vector θ(cost fun第一項為0就要后面的規格化項θ項要小(這樣cost fun才會小),這就要θ小). 因為要最小化θ,而根據約束條件p*||θ||又要>=1,所以就要p足夠大,,pi大就導致large margin(這就是SVM為什么是large margin classifier的原因),這樣SVM就選擇了右邊的decision boundary而不是左邊的(圖中左邊是隨便給出的邊界線,右邊是svm的large margin邊界線)。this machine ends up with?enlarge margin classifiers?because its trying to maximize the norm of these P1 which is the distance from the training examples to the decision boundary.

[SVM數學分析 part1+part2]

皮皮blog



Kernels核

kernel內核之前都是線性內核,即θ'x是線性的。kernel的目的就是使用landmarks和kernel function定義額外的features來學習更復雜的非線性分類器nonlinear classifiers。

非線性決策邊界

由于有好多高階多項式項,所以使用high order polynomials 會變得計算昂貴computationally expensive。

Kernel定義

kernel其實就是similarity fun between x and landmark l.這里landmark l是手動選擇的,在后面會講到怎么選擇。首先手動選擇三個點l來定義新的features,這里feature f measures how close X is to the landmark.

紅色標注為點 x 和 landmark l間的歐式距離,上面使用高斯函數刻畫數據x與landmark l間的距離,所以此相似性函數就稱作Gaussian kernel。從高斯函數[概率論:高斯/正態分布]的特性上看,可知,如果x與landmark l很近時,f接近1;相反,如果x與landmark l很遠時,f接近0。

這樣給定3個landmarks,就可以給每個給定的數據樣本x計算3個新的features:? f1, f2, and f3。

示例:假設已經定義好了features,可以學習到的source of hypothesis。假設已經得到了參數θ的值。對于接近l1 和 l2的點我們預測為正,遠離的預測為0。

landmarks的選擇

對于復雜的學習問題,我們可能需要很多landmarks。一種方法是將訓練樣本當作 landmarks ,有多少個training example就選擇多少個landmarks。

SVM with Kernels

給出數據后,我們根據高斯kernel可以將數據n維度x轉換成m維度的新features f,不過這里我們使用了所有的數據當作landmarks,所以m=n。

lz: kernels為什么能夠非線性分類?這有點像KDE非參數估計的方法了,svm with kernels就相當于將線性距離轉換成了高斯分布定義的距離了。因為之前直接使用θ'x肯定是不能區分的,但是加入核后,我們要區分的是新數據x和哪個xi(有新features)最相似,即找到和新x模式最像的那一類,模式就是通過核控制的,是非線性的,所以kernels能夠非線性分類。或者這么說?核實際上定義了一個概率密度,新x到哪個類的核概率密度越大,新x就分到哪個類中。

Hypothsis 及參數θ的推斷



Note: what most svm implementations do is actually replace this θ'θ,will instead, θ' times some matrix inside, that depends on the kernel you use, times θ.That allows the support vector machine software to run much more efficiently.It allows it to scale to much bigger training sets.
Whereas,?logistic regression with kernels, you can do it, but this would run very slowly. And it won't be able to take advantage of advanced optimization techniques that people have figured out for the particular case of running a support vector machine with a kernel.

參數選擇:Bias vs. Variance trade-off in svm

(how do you choose the parameters(C & σ for gaussian kernel) of the svm?)

sigma大小對模型的影響

if?sigma squared is large,the Gaussian kernel would tend to fall off relatively slowly and so this would be my feature f(i), and so this would be smoother function that varies more smoothly, and so this will give you a hypothesis with?higher bias and lower variance, because the Gaussian kernel that falls off smoothly,you tend to get a hypothesis that varies slowly, or varies smoothly as you change the input x.(高斯內核平滑時,x改變時轉換后的f變化不大,更大范圍內fi相近,hypothesis變化不大。這樣就更可能預測錯誤,導致high bias;但是h變化不大正好更適應x的變化,所以variance很小)。

kernel內核的其它選擇

所有kernel都要滿足Mercer定理。 because svm algorithms or implementations of the SVM have lots of clever numerical optimization tricks to solve for the parameter's theta efficiently.


Note:
1 The?polynomial kernel?almost always or usually performs worse.Usually it is used only for data where X and l are all strictly non negative,to ensures these inner products are never negative.And this captures the intuition that X and l are very similar to each other, then maybe the inter product between them will be large.
2 string kernel: sometimes used if your input data is text strings or other types of strings.do text classification problem, where the input x is a string ,to find the similarity between two strings using the string kernel.

其它需要注意的點

1 SVM總能找到全局最優值,不會是局部最優。SVM has is a convex optimization problem and so the good SVM optimization software packages will always find the global minimum?or close to it.

2 使用svm前要feature scaling,防止某個feature主導 dominate距離計算。

邏輯規劃和SVM的選擇


數據集特別特別大時,Gaussian Kernel will be somewhat slow to run.So try to manually create more features and use logistic regression or an SVM without the Kernel.

logistic regression 和 SVM without a kernel基本差不多。they will usually do pretty similar things and give pretty similar performance, but depending on your implementational details, one may be more efficient than the other.But, where one of these algorithms applies,the other one is to likely to work pretty well as well.

SVM和LR的比較

LR適合需要得到一個分類概率的應用場景,SVM不會產生分類概率,直接產生分類類別。

SVM采用核函數而LR不采用核函數的原因:SVM訓練時只有少數的支持向量樣本參與計算,也就是只有支持向量才參與核函數計算,而LR中,所有數據樣本都參與計算,如果使用核函數,所有樣本都參與核函數計算,時間復雜度很高。

LR模型更簡單,更適用于處理大規模數據集,但是需要在模型訓練前做復雜的特征工程,而SVM適用于小規模數據集,時間復雜度高,參數比較多,模型優化更復雜。

LR一般用于解決線性分類,對非線性問題LR往往先通過復雜的特征工程映射到高維稀疏的可分特征空間中,而SVM通過對偶形式自然引入了核函數。

SVM的損失函數中自帶L2正則項,因此達到結構風險最小化,而LR必須自己在損失函數上加入L1或L2正則。

[LR與SVM的區別 ]

[邏輯回歸(logistic regression)和支持向量機(SVM)的比較]

這兩個損失函數的目的都是增加對分類影響較大的數據點的權重,減少與分類關系較小的數據點的權重。SVM的處理方法是只考慮support vectors,也就是和分類最相關的少數點,去學習分類器。而邏輯回歸通過非線性映射,大大減小了離分類平面較遠的點的權重,相對提升了與分類最相關的數據點的權重,兩者的根本目的都是一樣的。即支持向量機只考慮局部的邊界線附近的點,而邏輯回歸考慮全局(遠離的點對邊界線的確定也起作用)。

兩個模型對數據和參數的敏感程度不同:

1 異常點來說:

1)兩者對異常的敏感度也不一樣。同樣的線性分類情況下,如果異常點較多的話,無法剔除,首先LR,LR中每個樣本都是有貢獻的,最大似然后會自動壓制異常的貢獻,SVM+軟間隔對異常還是比較敏感,因為其訓練只需要支持向量,有效樣本本來就不高,一旦被干擾,預測結果難以預料。

[機器學習算法系列(12):SVM(6)—SVM與LR的異同]

2)不同觀點。LR是全局模型,對異常值敏感,對極度樣本不平衡的數據集敏感,而SVM是局部模型,只考慮支持向量,對異常值不敏感(lz認為這里說的對異常值不敏感肯定是錯誤的,去掉這幾個字還可以)。

[LR與SVM的區別 ]

3) 當然從作者的角度來看,兩者對于異常的敏感對于分類嚴重錯誤時應該是同等量級的,從下圖看出分類嚴重錯誤的話,兩者對異常點誤分類的懲罰都是同等線性的。


而對于分類正確但是遠離本類點的異常點來說,lr更敏感,因為svm并不會考慮分類正確的這些點,而lr把這些點都考慮進來了,這樣的點越多,敏感度越大。

綜上,lz認為lr模型相對svm對異常點更敏感。

2數據維度來說:Linear SVM比較依賴penalty的系數和數據表達空間的測度,而(帶正則項的)LR比較依賴對參數做L1 regularization的系數。但是由于他們或多或少都是線性分類器,所以實際上對低維度數據overfitting的能力都比較有限,相比之下對高維度數據,LR的表現會更加穩定,為什么呢?因為Linear SVM在計算margin有多“寬”的時候是依賴數據表達上的距離測度的,換句話說如果這個測度不好(badly scaled,這種情況在高維數據尤為顯著),所求得的所謂Large margin就沒有意義了,這個問題即使換用kernel trick(比如用Gaussian kernel)也無法完全避免。所以使用Linear SVM之前一般都需要先對數據做normalization,而求解LR(without regularization)時則不需要或者結果不敏感。

[Linear SVM 和 LR 有什么異同?]

皮皮blog


使用支持向量機

使用SVM軟件包

1. 使用軟件包時還要自己設定參數:1.? parameter C ? 2. kernel function
2.?使用線性內核的情景:很多的features 但是training set小。只需要擬合一個線性決策邊界,而不是擬合一個非常復雜的非線性函數,否則數據不夠可能會overfit。

多類分類


θ kis trying to distinguish class y = k from all of the other classes.

皮皮blog



Reviews




from:http://blog.csdn.net/pipisorry/article/details/44522881

ref: 支持向量機(SVM)是什么? - 知乎


版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/194085.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息