日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SVM 调参策略

發(fā)布時間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SVM 调参策略 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉(zhuǎn)自:SVM 調(diào)參策略:https://blog.csdn.net/u014484783/article/details/78220646

SVM 怎樣能得到好的結(jié)果?
1. 對數(shù)據(jù)做歸一化(simple scaling)?
2. 應(yīng)用 RBF kernel?
3. 用cross-validation和grid-search 得到最優(yōu)的c和g?
4. 用得到的最優(yōu)c和g訓(xùn)練訓(xùn)練數(shù)據(jù)?
5. 測試

1 關(guān)于svm的C以及核函數(shù)參數(shù)設(shè)置

1.1 C的選擇

C一般可以選擇為:10^t , t=[- 4,4]就是0.0001 到10000。選擇的越大,表示對錯誤例懲罰程度越大,可能會導(dǎo)致模型過擬合

1.2 常見核函數(shù)及其選擇

0)線性核函數(shù)?
(無其他參數(shù))?
1)多項(xiàng)式核函數(shù)?
(重點(diǎn)是階數(shù)的選擇,即d,一般選擇1-11:1 3 5 7 9 11,也可以選擇2,4,6…)?
2)RBF核函數(shù)?
徑向基RBF內(nèi)核,exp{-|xi-xj|^2/均方差},其中均方差反映了數(shù)據(jù)波動的大小。

gamma參數(shù)通常可選擇下面幾個數(shù)的倒數(shù):0.1 0.2 0.4 0.6 0.8 1.6 3.2 6.4 12.8,默認(rèn)的是類別數(shù)的倒數(shù),即1/k,2分類的話就是0.5)?
3)sigmoid核函數(shù) 又叫做S形內(nèi)核?
兩個參數(shù)g以及r:g一般可選1 2 3 4,r選0.2 0.4 0.6 0.8 1?
4)自定義核函數(shù)

核函數(shù)的參數(shù):

1)對于線性核函數(shù),沒有專門需要設(shè)置的參數(shù)?
2)對于多項(xiàng)式核函數(shù),有三個參數(shù)。-d用來設(shè)置多項(xiàng)式核函數(shù)的最高此項(xiàng)次數(shù),也就是公式中的d,默認(rèn)值是3。-g用來設(shè)置核函數(shù)中的gamma參數(shù)設(shè)置,也就是公式中的第一個r(gamma),默認(rèn)值是1/k(k是類別數(shù))。-r用來設(shè)置核函數(shù)中的coef0,也就是公式中的第二個r,默認(rèn)值是0。?
3)對于RBF核函數(shù),有一個參數(shù)。-g用來設(shè)置核函數(shù)中的gamma參數(shù)設(shè)置,也就是公式中的第一個r(gamma),默認(rèn)值是1/k(k是類別數(shù))。?
4)對于sigmoid核函數(shù),有兩個參數(shù)。-g用來設(shè)置核函數(shù)中的gamma參數(shù)設(shè)置,也就是公式中的第一個r(gamma),默認(rèn)值是1/k(k是類別數(shù))。-r用來設(shè)置核函數(shù)中的coef0,也就是公式中的第二個r,默認(rèn)值是0。

2 關(guān)于cost和gamma

SVM模型有兩個非常重要的參數(shù)C與gamma。

  • 其中 C是懲罰系數(shù),即對誤差的寬容度。c越高,說明越不能容忍出現(xiàn)誤差,容易過擬合。C越小,容易欠擬合。C過大或過小,泛化能力變差

  • gamma是選擇RBF函數(shù)作為kernel后,該函數(shù)自帶的一個參數(shù)。隱含地決定了數(shù)據(jù)映射到新的特征空間后的分布,gamma越大,支持向量越少,gamma值越小,支持向量越多。支持向量的個數(shù)影響訓(xùn)練與預(yù)測的速度

  • Grid Search?
    使用grid Search雖然比較簡單,而且看起來很na?ve。但是他確實(shí)有兩個優(yōu)點(diǎn):?
    可以得到全局最優(yōu)?
    (C,gamma)相互獨(dú)立,便于并行化進(jìn)行
  • # SVM Classifier using cross validation

  • def svm_cross_validation(train_x, train_y):

  • from sklearn.grid_search import GridSearchCV

  • from sklearn.svm import SVC

  • model = SVC(kernel='rbf', probability=True)

  • param_grid = {'C': [1e-3, 1e-2, 1e-1, 1, 10, 100, 1000], 'gamma': [0.001, 0.0001]}

  • grid_search = GridSearchCV(model, param_grid, n_jobs = 8, verbose=1)

  • grid_search.fit(train_x, train_y)

  • best_parameters = grid_search.best_estimator_.get_params()

  • for para, val in list(best_parameters.items()):

  • print(para, val)

  • model = SVC(kernel='rbf', C=best_parameters['C'], gamma=best_parameters['gamma'], probability=True)

  • model.fit(train_x, train_y)

  • return model

  • SVM有如下主要幾個特點(diǎn):

    (1)非線性映射是SVM方法的理論基礎(chǔ),SVM利用內(nèi)積核函數(shù)代替向高維空間的非線性映射;

    (2)對特征空間劃分的最優(yōu)超平面是SVM的目標(biāo),最大化分類邊際的思想是SVM方法的核心;

    (3)支持向量是SVM的訓(xùn)練結(jié)果,在SVM分類決策中起決定作用的是支持向量;

    (4)SVM 是一種有堅(jiān)實(shí)理論基礎(chǔ)的新穎的小樣本學(xué)習(xí)方法。?
    它基本上不涉及概率測度及大數(shù)定律等,因此不同于現(xiàn)有的統(tǒng)計方法。?
    從本質(zhì)上看,它避開了從歸納到演繹的傳統(tǒng)過程,實(shí)現(xiàn)了高效的從訓(xùn)練樣本到預(yù)報樣本的“轉(zhuǎn)導(dǎo)推理”,大大簡化了通常的分類和回歸等問題;

    (5)SVM 的最終決策函數(shù)只由少數(shù)的支持向量所確定,計算的復(fù)雜性取決于支持向量的數(shù)目,而不是樣本空間的維數(shù),這在某種意義上避免了“維數(shù)災(zāi)難”。

    (6)少數(shù)支持向量決定了最終結(jié)果,這不但可以幫助我們抓住關(guān)鍵樣本、“剔除”大量冗余樣本,而且注定了該方法不但算法簡單,而且具有較好的“魯棒”性。?
    這種“魯棒”性主要體現(xiàn)在:?
    ①增、刪非支持向量樣本對模型沒有影響;?
    ②支持向量樣本集具有一定的魯棒性;?
    ③有些成功的應(yīng)用中,SVM 方法對核的選取不敏感

    兩個不足:

    (1) SVM算法對大規(guī)模訓(xùn)練樣本難以實(shí)施?
    由于SVM是借助二次規(guī)劃來求解支持向量,而求解二次規(guī)劃將涉及m階矩陣的計算(m為樣本的個數(shù)),當(dāng)m數(shù)目很大時該矩陣的存儲和計算將耗費(fèi)大量的機(jī)器內(nèi)存和運(yùn)算時間。針對以上問題的主要改進(jìn)有?
    J.Platt的SMO算法、?
    T.Joachims的SVM、?
    C.J.C.Burges等的PCGC、?
    張學(xué)工的CSVM?
    以及O.L.Mangasarian等的SOR算法

    (2) 用SVM解決多分類問題存在困難?
    經(jīng)典的支持向量機(jī)算法只給出了二類分類的算法,而在數(shù)據(jù)挖掘的實(shí)際應(yīng)用中,一般要解決多類的分類問題。可以通過多個二類支持向量機(jī)的組合來解決。主要有一對多組合模式、一對一組合模式和SVM決策樹;再就是通過構(gòu)造多個分類器的組合來解決。主要原理是克服SVM固有的缺點(diǎn),結(jié)合其他算法的優(yōu)勢,解決多類問題的分類精度。如:與粗集理論結(jié)合,形成一種優(yōu)勢互補(bǔ)的多類問題的組合分類器.

    -----------------------------------------------------------------------------------------------------------------------------------------------------

    https://blog.csdn.net/yzf0011/article/details/71521001

    http://discussions.youdaxue.com/t/svm-rbf-kernel/6088

    在我們機(jī)器學(xué)習(xí)的過程中,很多同學(xué)包括我自己也疑惑過rbf kernel函數(shù)的實(shí)際作用是什么?不同的參數(shù)又有什么作用。

    上周我參加了上海的夏令營,這里就是我們討論的結(jié)果。

    首先我們要知道Support Vector Machine到底是什么東西。看過課程視頻的同學(xué)都是到,SVM旨在將一組不可線性分割的數(shù)據(jù)線性分割。怎么做到的呢?通過將低維度的數(shù)據(jù)投影到高維度來實(shí)現(xiàn)。

    這里又涉及到兩個關(guān)鍵詞“線性分割”、“投影”。

    線性可分割

    線性分割就是一組數(shù)據(jù)可以被一條直線(高維度空間中是超平面)分為兩半。

    如上圖所示,A是線性可分的,B不是。

    那么在更高維度中,線性就是指的一個平面。在三維空間中是平面,在更高維度中就是超平面。

    投影

    投影(映射)就是一個函數(shù)。z = f(x, y) 就是把x,y投影到z。“投影”這個用詞其實(shí)是一個幾何空間的借喻。意思就是說,將(x,y)這個本來屬于二維空間的點(diǎn)‘’投影‘’到第三維。如下:

    (x1, y1) => (x1, y1, z1)
    (x2, y2) => (x2, y2, z2)
    (x3, y3) => (x3, y3, z3)
    ....
    依次類推

    內(nèi)核函數(shù) Kernel Function

    內(nèi)核函數(shù)就是投影所具體使用的函數(shù)。這里就用rbf來舉例。rbf全稱是Radial Based Function,基于半徑的函數(shù)。

    在解釋 rbf 之前,先來看一個更簡單地例子。

    如上圖所示,左邊的圈圈和叉叉是不可線性分割的。但是我們可以看出,一個圓圈可以將它們分開。這個圓其實(shí)就代表不同的點(diǎn)到原點(diǎn)(0,0)的距離的分界線。距離更大的叉叉在圓外面,距離小的圈圈在圓里面。

    那么什么函數(shù)才可以僅僅基于 x1 和 x2 就算出離原點(diǎn)的距離呢?答案是:

    define 距離函數(shù) f(x1, x2) 為: sqrt( x1^2 + x2 ^ 2 ) 。然后讓 f(x1,x2) 投影到 x3

    這里開不開根號其實(shí)無所謂,因?yàn)槲覀冴P(guān)心的不是絕對的距離,而是一個可以區(qū)分不同距離的尺度。

    那么對于SVM來說,我們的 f 就是內(nèi)核函數(shù)。通過這個 f,我們就可以將左邊的二維坐標(biāo)系投影成右邊的三維坐標(biāo)系。然后很明顯的,我們的數(shù)據(jù)變得線性可分割了(通過那個切面)。

    Radial Based Function

    現(xiàn)在我們再來看?rbf1

    這是 rbf 的數(shù)學(xué)公式。當(dāng)然,更一般性的寫法是

    公式的具體含義這里不作很數(shù)學(xué)的解釋(比如說什么是 exponential function)

    要注意的有3個方面。

  • X 和 X’ 不是標(biāo)量,是向量(別名:矢量)
  • | X - X' | ^ 2 就是一個距離公式,X’ 是相對于 X 的另外一個點(diǎn) (一個向量可以被當(dāng)做一個點(diǎn))
  • gamma 是一個常數(shù) (具體含義后面講)
  • 我們可以觀察到,之前算到原點(diǎn)距離的 f 就是 這里的 rbf 的一種特殊情況。X’ 就是 (0,0)。而 rbf 中 X’ 是根據(jù)具體情況而定的。

    我們可以再看到這個圖

    對于圖 B 來說,用原點(diǎn)作為參考點(diǎn)肯定是不合適的。參考點(diǎn)應(yīng)該是藍(lán)色數(shù)據(jù)的中心點(diǎn)。然后 rbf 可以算出每個點(diǎn)到該中心的距離,從而將其投影到一個三維空間,讓其變得可以線性分割。

    rbf 投影后的結(jié)果大概就長這樣(圖片僅供參考)

    gamma 參數(shù)什么意思
    我們通過公式可知,gamma 是一個常量,而且是一個線性的因數(shù)。所以大家可以想象,gamma的作用,其實(shí)就是控制數(shù)據(jù)在向高維度投影后的縮放比例。如果 gamma 很大,那么上圖的點(diǎn)就會離切面很遠(yuǎn)。如果 gamma 很小,上圖的點(diǎn)就會離切面很近。

    而這個縮放比例就會影響線性分割面的運(yùn)算結(jié)果(不同的loss function對距離的懲罰度不一樣)。這也是SVM對數(shù)據(jù) Scaling 和 Normalization 是敏感的原因之一。因?yàn)樽詈蠖际撬愕囊粋€ Linear Model

    這就是為什么,有人說如果原始數(shù)據(jù)比較分散,gamma可以小一點(diǎn)。反之,如果原始數(shù)據(jù)很密集,gamma可以大一點(diǎn)。當(dāng)然,這不是絕對的,所以我們才要做 GridSearch

    通常我們會 0.01、0.1、1、10、100 ... 這樣指數(shù)級地搜索一個比較好的 gamma

    sklearn SVM 里的 C 是什么意思?
    我都寫了這么多,這就留給你當(dāng)作業(yè)吧。多看?sklearn 文檔3。記住,gamma 和 C 是好基友

    你可以在評論里面寫自己對 C 的理解

    總結(jié)

    以上是生活随笔為你收集整理的SVM 调参策略的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。