支持向量機(jī)(SVM)
它是一種監(jiān)督式學(xué)習(xí)的方法扇单,廣泛應(yīng)用于統(tǒng)計(jì)分類和回歸分析中跨算。
一右钾、主要思想
1. 它是針對線性可分情況進(jìn)行分析,對于線性不可分的情況复旬,通過使用非線性映射算法將低維輸入空間線性不可分的樣本轉(zhuǎn)化為高維特征空間使其線性可分垦缅,從而使得高維特征空間采用線性算法對樣本的非線性特征進(jìn)行線性分析成為可能;
2.?它基于結(jié)構(gòu)風(fēng)險最小化理論之上在特征空間中建構(gòu)最優(yōu)分割超平面驹碍,使得學(xué)習(xí)器得到全局最優(yōu)化,并且在整個樣本空間的期望風(fēng)險以某個概率滿足一定上界壁涎。
概括:支持向量機(jī)將向量映射到一個更高維的空間里,在這個空間里建立有一個最大間隔超平面志秃。在分開數(shù)據(jù)的超平面的兩邊建有兩個互相平行的超平面怔球。分隔超平面使兩個平行超平面的距離最大化。假定平行超平面間的距離或差距越大浮还,分類器的總誤差越小竟坛。
有很多個分類器(超平面)可以把數(shù)據(jù)分開,但是只有一個能夠達(dá)到最大分割碑定。?我們通常希望分類的過程是一個機(jī)器學(xué)習(xí)的過程。這些數(shù)據(jù)點(diǎn)并不需要是中的點(diǎn)又官,而可以是任意(統(tǒng)計(jì)學(xué)符號)中或者 ?(計(jì)算機(jī)科學(xué)符號) 的點(diǎn)延刘。我們希望能夠把這些點(diǎn)通過一個n-1維的超平面分開,通常這個被稱為線性分類器六敬。有很多分類器都符合這個要求碘赖,但是我們還希望找到分類最佳的平面,即使得屬于兩個不同類的數(shù)據(jù)點(diǎn)間隔最大的那個面外构,該面亦稱為最大間隔超平面普泡,會更有魯棒性。如果我們能夠找到這個面审编,那么這個分類器就稱為最大間隔分類器撼班。
二、目標(biāo)函數(shù):
SVM是要使到超平面最近的樣本點(diǎn)的“距離”最大垒酬。
使margin最大化砰嘁,margin為
之后再進(jìn)行化簡轉(zhuǎn)化...
具體推導(dǎo)見:https://zhuanlan.zhihu.com/p/77750026?utm_source=wechat_session
線性不可分時:
將低維空間映射到高維空間件炉,使其線性可分。例如
而此時矮湘,會造成計(jì)算量太大斟冕,也容易過擬合,有學(xué)者已經(jīng)解決了這個問題缅阳。使用核函數(shù)k(x,y)的計(jì)算結(jié)果與高維空間的內(nèi)積計(jì)算相同磕蛇,可以代替。
常用核函數(shù)有:線性核函數(shù)十办、多項(xiàng)式核函數(shù)和高斯核函數(shù)秀撇。
三、優(yōu)缺點(diǎn)
1. 優(yōu)點(diǎn)
有嚴(yán)格的數(shù)學(xué)理論支持橘洞,可解釋性強(qiáng)捌袜,不依靠統(tǒng)計(jì)方法,從而簡化了通常的分類和回歸問題炸枣;
能找出對任務(wù)至關(guān)重要的關(guān)鍵樣本(即:支持向量)虏等;
采用核函數(shù)技巧之后,可以處理非線性分類/回歸任務(wù)适肠;
最終決策函數(shù)只由少數(shù)的支持向量所確定霍衫,計(jì)算的復(fù)雜性取決于支持向量的數(shù)目,而不是樣本空間的維數(shù)侯养,這在某種意義上避免了“維數(shù)災(zāi)難”敦跌。
2. 缺點(diǎn)
訓(xùn)練時間長。
當(dāng)采用核技巧時逛揩,如果需要存儲核矩陣柠傍,則空間復(fù)雜度為;
模型預(yù)測時辩稽,預(yù)測時間與支持向量的個數(shù)成正比惧笛。當(dāng)支持向量的數(shù)量較大時,預(yù)測計(jì)算復(fù)雜度較高逞泄。
因此支持向量機(jī)目前只適合小批量樣本的任務(wù)患整,無法適應(yīng)百萬甚至上億樣本的任務(wù)。但是有的說適用于大量數(shù)據(jù)喷众,筆者還未弄明白各谚。
四、SVC方法
sklearn.svm.SVC(C=1.0,kernel='rbf',?degree=3,?gamma='auto',coef0=0.0,shrinking=True,probability=False,tol=0.001,cache_size=200,?class_weight=None,verbose=False,max_iter=-1,decision_function_shape=None,random_state=None)
參數(shù)說明:
l ?C:C-SVC的懲罰參數(shù)C?默認(rèn)值是1.0
C越大到千,相當(dāng)于懲罰松弛變量昌渤,希望松弛變量接近0,即對誤分類的懲罰增大憔四,趨向于對訓(xùn)練集全分對的情況愈涩,這樣對訓(xùn)練集測試時準(zhǔn)確率很高望抽,但泛化能力弱。C值小履婉,對誤分類的懲罰減小煤篙,允許容錯,將他們當(dāng)成噪聲點(diǎn)毁腿,泛化能力較強(qiáng)辑奈。
l ?kernel :核函數(shù),默認(rèn)是rbf已烤,可以是‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’
0 – 線性:u’v
1 – 多項(xiàng)式:(gamma*u’*v + coef0)^degree
2 – RBF函數(shù):exp(-gamma|u-v|^2)
3 –sigmoid:tanh(gamma*u’*v + coef0)
l ?degree :多項(xiàng)式poly函數(shù)的維度鸠窗,默認(rèn)是3,選擇其他核函數(shù)時會被忽略胯究。
l ?gamma : ‘rbf’,‘poly’ 和‘sigmoid’的核函數(shù)參數(shù)稍计。默認(rèn)是’auto’,則會選擇1/n_features
l ?coef0 :核函數(shù)的常數(shù)項(xiàng)裕循。對于‘poly’和 ‘sigmoid’有用臣嚣。
l ?probability :是否采用概率估計(jì)?.默認(rèn)為False
l ?shrinking :是否采用shrinking heuristic方法剥哑,默認(rèn)為true
l ?tol :停止訓(xùn)練的誤差值大小硅则,默認(rèn)為1e-3
l ?cache_size :核函數(shù)cache緩存大小,默認(rèn)為200
l ?class_weight :類別的權(quán)重株婴,字典形式傳遞怎虫。設(shè)置第幾類的參數(shù)C為weight*C(C-SVC中的C)
l ?verbose :允許冗余輸出?
l ?max_iter :最大迭代次數(shù)困介。-1為無限制大审。
l ?decision_function_shape :‘ovo’, ‘ovr’ or None, default=None3
l ?random_state :數(shù)據(jù)洗牌時的種子值,int值
主要調(diào)節(jié)的參數(shù)有:C座哩、kernel徒扶、degree、gamma八回、coef0酷愧。
五驾诈、SVR
1. 介紹
SVR回歸與SVM分類的區(qū)別在于缠诅,SVR的樣本點(diǎn)最終只有一類,它所尋求的最優(yōu)超平面不是SVM那樣使兩類或多類樣本點(diǎn)分的“最開”乍迄,而是使所有的樣本點(diǎn)離著超平面的總偏差最小管引。SVM是要使到超平面最近的樣本點(diǎn)的“距離”最大;SVR則是要使到超平面最遠(yuǎn)的樣本點(diǎn)的“距離”最小闯两。
統(tǒng)計(jì)上的理解就是:使得所有的數(shù)據(jù)的類內(nèi)方差最小褥伴,把所有的類的數(shù)據(jù)看作是一個類谅将。
傳統(tǒng)的回歸方法當(dāng)且僅當(dāng)回歸f(x)完全等于y時才認(rèn)為是預(yù)測正確,需計(jì)算其損失重慢;而支持向量回歸(SVR)則認(rèn)為只要是f(x)與y偏離程度不要太大饥臂,既可認(rèn)為預(yù)測正確,不用計(jì)算損失似踱。具體的就是設(shè)置一個閾值α隅熙,只是計(jì)算 |f(x) - y| > α 的數(shù)據(jù)點(diǎn)的loss。如圖:支持向量回歸表示只要在虛線內(nèi)部的值都可認(rèn)為是預(yù)測正確核芽,只要計(jì)算虛線外部的值的損失即可囚戚。
損失函數(shù)相關(guān)的問題及改進(jìn):
在SVR中對于損失函數(shù)構(gòu)成的模型,有些權(quán)重很大轧简,有些權(quán)重很小驰坊,這樣就會容易導(dǎo)致過擬合(就是過分?jǐn)M合了訓(xùn)練數(shù)據(jù)集),而過擬合則是因?yàn)闃颖咎嗟奶卣鞅话M(jìn)來哮独,很多與項(xiàng)目本身無關(guān)的特征也被包含進(jìn)來拳芙。
解決過擬合問題有很多方式,常見的有以下幾種:
1).喂數(shù)據(jù)借嗽,也就是給足夠多的數(shù)據(jù)态鳖,只有數(shù)據(jù)多了,數(shù)據(jù)的很多特征才會更加明顯的體現(xiàn)出來恶导,訓(xùn)練的模型也會不斷的修正浆竭,特征的作用也會體現(xiàn)的越來越大。
2).特征降維惨寿,越多的特征導(dǎo)致訓(xùn)練集的維度越高邦泄,降維就是把高維空間的數(shù)據(jù)投影到低維空間中(保存下來的特征是數(shù)據(jù)量大的)。主要有:PCA降維(主成分分析,無監(jiān)督)裂垦、反向特征消除顺囊、隨機(jī)森林/組合樹、LDA(線性判別分析蕉拢,有監(jiān)督)特碳、LLE(局部線性嵌入)、Laplacian Eigenmaps(拉普拉斯特征映射)等
3).針對具體的負(fù)荷預(yù)測晕换,對電量值進(jìn)行標(biāo)準(zhǔn)化或者歸一化午乓。可以時特征訓(xùn)練集能夠快速的收斂闸准,可以使特征值域范圍變小益愈,有利于提高精度。
2. svr方法
sklearn.svm.SVR(kernel='rbf', degree=3, gamma='auto_deprecated', coef0=0.0, tol=0.001, C=1.0, epsilon=0.1, shrinking=True, cache_size=200, verbose=False, max_iter=-1)
參數(shù)解釋:
kernel: type: string;optional(default=‘rbf’)
? ? ? ? ? ? ?算法中所使用的核函數(shù)類型蒸其,其中有(‘linear’敏释, ‘poly’, ‘rbf’摸袁, ‘sigmoid’钥顽,‘precomputer’,默認(rèn)使用‘rbf’)
?degree:type:int靠汁, optional(default=3)
? ? ? ? ? ? ?多項(xiàng)式核函數(shù)的次數(shù)耳鸯,默認(rèn)為3,所以當(dāng)核函數(shù)為‘poly’時用到膀曾,其它核函數(shù)忽略
gamma:type:float县爬, optional(default=‘a(chǎn)uto’)
? ? ? ? ? ? ?核函數(shù)的系數(shù), 在核函數(shù)為‘rbf’添谊, ‘poly’财喳, ‘sigmoid’時使用,其他核函數(shù)忽略斩狱。gamma的值必須大于0耳高, 隨著gamma的增大,對于測試集分類效果越差所踊,對于訓(xùn)練集分類效果好泌枪,并且使模型的復(fù)雜度提高,泛化能力(對未知數(shù)的預(yù)測能力)較差秕岛,從而出現(xiàn)過擬合的情況碌燕。
coef0:type:float, optional(default=0.0)
? ? ? ? ? ? ?核函數(shù)中的獨(dú)立項(xiàng)继薛,只在核函數(shù)為‘poly’跟‘sigmoid’時使用修壕。
tol:type:float, optional(default=1e-3)停止判斷的公差
C:type:float遏考, optional(default=1.0)
? ? ? ? ? ?錯誤項(xiàng)的懲罰因子:表征有多重視離群點(diǎn)慈鸠,C越大越重視,也就是越不想丟掉這些離群點(diǎn)灌具。C值大時對誤差分類的懲罰增大青团,C值小時對誤差分類的懲罰減小。當(dāng)C趨近于無窮大時咖楣,表示不允許分類誤差的存在督笆;當(dāng)C趨于0時,表示不再關(guān)注分類是否正確截歉。
epsilon:type:float胖腾, optional(default=0.1)
shrinking:type:boolean烟零,optional(default=True)
? ? ? ? ? ?是否使用收縮啟發(fā)式
cache_size:type:float瘪松, optional
? ? ? ? ? ?內(nèi)核緩存的大小
verbose:type:bool咸作, default:False
? ? ? ? ? 啟用詳細(xì)輸出。如果啟用宵睦,在多線程環(huán)境下可能無法正常工作
max_iter:type:int记罚, optional(default=-1)
? ? ? ? ? ?解算器內(nèi)迭代的硬性限制,默認(rèn)為-1(無限制)
SVM常見面試問題:https://blog.csdn.net/yanhx1204/article/details/79481003
參考:
https://blog.csdn.net/u011067360/article/details/24368085
https://blog.csdn.net/qq_36523839/article/details/82383597
數(shù)學(xué)解釋:https://zhuanlan.zhihu.com/p/77750026?utm_source=wechat_session
SVC方法解釋:https://www.imooc.com/article/details/id/40903
SVR介紹:https://zhuanlan.zhihu.com/p/76609851壳嚎、http://www.reibang.com/p/399ddcac2178