機(jī)器學(xué)習(xí)筆記 - 15. SVM實(shí)踐(講師:鄒博)

核函數(shù)

核函數(shù)

往往會(huì)選擇高斯核函數(shù)

映射關(guān)系兩個(gè)不同變量之間求點(diǎn)乘吼虎,將其定義為核函數(shù)



多項(xiàng)式核

如果n=3,則此多項(xiàng)式核函數(shù)有9+3+1=13個(gè)特征

多項(xiàng)式核函數(shù)世囊,把原函數(shù)映射成平方或更高次的維度


如圖,根據(jù)原有SVM脊僚,無(wú)法將cancer樣本區(qū)分出來(lái)距贷,所以需要利用核函數(shù)柄冲,將cancer樣本升維,其他樣本降維忠蝗,通過(guò)線(xiàn)性方式分開(kāi)

高斯核
高斯核是無(wú)窮維的

利用泰勒展式展開(kāi)现横,即形成第二行的算式

高斯核函數(shù),把原始的函數(shù)映射成無(wú)窮維

先求φ阁最,再去做映射是不可能的

高斯核函數(shù)->將線(xiàn)性的變成非線(xiàn)性

問(wèn):幾種核函數(shù)的使用和數(shù)據(jù)集分布有關(guān)么戒祠?

答:可以無(wú)腦式的先試試高斯核函數(shù),但是有些時(shí)候不見(jiàn)得一定使用高斯核函數(shù)速种,有些時(shí)候使用多項(xiàng)式核函數(shù)就夠了姜盈。

實(shí)踐中做一些探索性的項(xiàng)目,可以用SVM做圖像分類(lèi)配阵,可以解決問(wèn)題馏颂,也很穩(wěn)定,不一定需要神經(jīng)網(wǎng)絡(luò)棋傍。但是用高斯核函數(shù)救拉,在訓(xùn)練集很好,測(cè)試集卻過(guò)不了瘫拣。然后改成多項(xiàng)式核函數(shù)亿絮,就能把事情做得很好。

所以根據(jù)實(shí)踐情況麸拄,來(lái)確定是否合適壹无。

即如果沒(méi)有太多的先驗(yàn)知識(shí),可以先用高斯核函數(shù)感帅,但是在訓(xùn)練集效果好,測(cè)試集效果不好地淀,如過(guò)擬合失球,可以試著退回不太強(qiáng)的核函數(shù),即多項(xiàng)式核函數(shù)帮毁。也許能得到更好的效果实苞。

問(wèn):無(wú)窮維怎么算?

答:高斯核函數(shù)隱藏著φ(x)烈疚,相當(dāng)于幫我們做了無(wú)窮維黔牵。(保證半正定)

問(wèn):SVM做OCR合適么?

答:在現(xiàn)在的情況不一定合適爷肝。假定做中文的OCR猾浦,字符集成千上萬(wàn)陆错,假定有一萬(wàn)個(gè)常用字,則需要做一萬(wàn)個(gè)分類(lèi)金赦。分類(lèi)數(shù)量增多音瓷,SVM效果會(huì)降下去。只能說(shuō)有一定的可能性夹抗,但不一定非常合適绳慎。

高斯核的分類(lèi)




二變量?jī)?yōu)化問(wèn)題


SMO的迭代公式


退出條件




懲罰因子的影響

懲罰因子越小,抗過(guò)擬合能力越強(qiáng)漠烧,寬度越大


高斯核函數(shù)的影響


總結(jié)與思考

問(wèn):(xgboost的問(wèn)題)用6分類(lèi)的數(shù)據(jù)杏愤,訓(xùn)練集與測(cè)試集分開(kāi)。為何出現(xiàn)過(guò)擬合已脓?訓(xùn)練集準(zhǔn)確率非常高珊楼,可是測(cè)試集非常差,請(qǐng)問(wèn)如何改進(jìn)摆舟?

答:可以嘗試減少樹(shù)的深度亥曹,增大λ的阻尼值


作業(yè)

Python代碼實(shí)踐

1. 鳶尾花代碼



SVC指:支撐向量分類(lèi)器(Support Vector Classifier)

C取0.1,意味著α是從0~0.1

kernel: linear, 意味著使用線(xiàn)性核函數(shù)

decision function: 以鳶尾花三分類(lèi)為例恨诱,給出某一個(gè)樣本屬于哪個(gè)類(lèi)別的可能是比較大的

decision_function_shape: ovr媳瞪,one_vs_rest。

得到三個(gè)SVM照宝,根據(jù)得分大小蛇受,進(jìn)行分類(lèi)





2. decision_function

SVM多分類(lèi)器實(shí)現(xiàn),用若干個(gè)二分類(lèi)器厕鹃,合成一個(gè)多分類(lèi)器



可以加入np.set_printoptions(suppress=True)兢仰,控制numpy的輸出

scipy的:stats.multivariate_normal: 多元正態(tài)分布,將均值與方差喂給此函數(shù)剂碴,即可得到模型

用此模型調(diào)用rvs把将,即動(dòng)態(tài)隨機(jī)采樣(Random Variable Sample)

sigmas * 0.1的目的:方差不要太大,有利于各個(gè)點(diǎn)分散一些忆矛,不要太聚在一起

a = np.array((0, 1, 2, 3)).reshape((-1, 1))的目的察蹲,是將a轉(zhuǎn)換為:

arrary([[0],

? ? ? ? ? ? [1],

? ? ? ? ? ? [2],

? ? ? ? ? ? [3]])

的形式。

np.tile方法:如np.tile(a, N)催训,即將arrary:a洽议,復(fù)制N次,得到新的array漫拭。

如y = np.tile(a. 2)亚兄,則得到:

array([[0, 0],

? ? ? ? ? [1,1],

? ? ? ? ? [2,2],

? ? ? ? ? [3,3]])

然后,我們對(duì)y做flatten采驻,即做拉伸审胚,得到新的array:

array([0,0,1,1,2,2,3,3])

等同于y.reshape(-1,)

這個(gè)目的就是得到分類(lèi)向量y

svm的核函數(shù)使用的是高斯RBF, decistion function shape使用的是ovr: one-vs-rest匈勋,如果是4分類(lèi),則會(huì)輸出多行4列的矩陣菲盾。

還有一個(gè)類(lèi)別是ovo: one-vs-one颓影,從四個(gè)類(lèi)別之間兩兩之間做分類(lèi)器,其實(shí)需要6個(gè)值(12懒鉴,13诡挂,14,23临谱,24璃俗,34)。即decision_function輸出會(huì)是多行6列的矩陣悉默。

取得分最大的列索引為分配的類(lèi)別


穿插講解如何分類(lèi)


五角星相比藍(lán)線(xiàn)距離是負(fù)數(shù)城豁,相比紅線(xiàn)與黑線(xiàn)距離是正數(shù)。

而五角星到黑線(xiàn)距離更遠(yuǎn)抄课,則分類(lèi)會(huì)將五角星分類(lèi)到黑線(xiàn)類(lèi)別

PS: 負(fù)數(shù)代表不可能屬于這個(gè)類(lèi)別

decision_function唱星,會(huì)輸出各個(gè)類(lèi)別的得分,取得分最大的索引為分配的類(lèi)別跟磨。




3. SVM_draw





此截圖间聊,方便看全plt.scatter的所有參數(shù)



另一種簡(jiǎn)潔繪制方式:


4. ClassifierIndex

分類(lèi)器指標(biāo)

以預(yù)測(cè)疾病為例進(jìn)行解釋?zhuān)?/p>

精度(accuracy):將得病與未得病做對(duì)的預(yù)測(cè)/總樣本個(gè)數(shù)

準(zhǔn)確率(precision): 被診斷得病的樣本個(gè)數(shù)/被診斷得病的樣本個(gè)數(shù)+錯(cuò)誤診斷得病的樣本個(gè)數(shù)

召回率(recall): 被診斷得病的樣本個(gè)數(shù)/被診斷得病的樣本個(gè)數(shù)+得病但是沒(méi)有被診斷得病的樣本個(gè)數(shù)

Precision與Recall不可能同時(shí)增大,因此需要做加強(qiáng)抵拘,F(xiàn)1與Fβ就是做這個(gè)事情

如果β^2是∞哎榴,則Fβ就是Recall,如果β趨近于0僵蛛,則Fβ趨近于Precision

F1是什么呢尚蝌?當(dāng)然就是β為1時(shí)的公式啊


示例

實(shí)際數(shù)據(jù):

4正? ? 2負(fù)

預(yù)測(cè)

正? ? 負(fù)

TP:3? ? FN:1

FP:2? ? TN:0

所以,

accuracy = (3 + 0) / (3 + 1 + 2 + 0) = 0.5

precision = 3 / 3 + 2 = 0.6

recall = 3 / 3 + 1 = 0.75

代碼示例

sklearn的metrics中充尉,已經(jīng)內(nèi)置了precision, recall, f1, fbeta的計(jì)算類(lèi)飘言,可以直接使用

classification_report,可以將precision, recall, f1-score, support的值驼侠,根據(jù)各個(gè)分類(lèi)热凹,整體輸出為一張表。非常方便泪电。

5. unBalance


class_weight的參數(shù):因?yàn)?的樣本數(shù)據(jù)只有10個(gè),所以權(quán)重設(shè)置很大纪铺,如class_weight={-1:1, 1:99}相速。但是設(shè)置為99未必一定好,設(shè)置為10其實(shí)效果也不錯(cuò)鲜锚,或者說(shuō)堪用了突诬,不會(huì)完全過(guò)擬合苫拍。





問(wèn):如果樣本不均衡比例達(dá)到1000:1,是不是只能通過(guò)增加樣本來(lái)建模旺隙?

答:1000:1的情況是普遍存在的绒极,比如金融欺詐數(shù)據(jù)。是的蔬捷,實(shí)在搞不定垄提,只能這樣了

6. HandWrittenDigits

數(shù)據(jù)下載地址:http://archive.ics.uci.edu/ml/machine-learning-databases/optdigits/

一行數(shù)據(jù)表示一副圖片:每行65個(gè)數(shù)字,前64個(gè)數(shù)字代表8x8的小圖片周拐,其數(shù)值代表黑色的強(qiáng)度:0~16铡俐,第65個(gè)數(shù)字代表對(duì)應(yīng)的數(shù)字。

使用SVM妥粟,即是十分類(lèi)問(wèn)題


讀取數(shù)據(jù)审丘,注意iloc的用法




此處取高斯核,為了穩(wěn)妥一些勾给,gamma值足夠小滩报,相當(dāng)于近似線(xiàn)性核



7. MNIST

28x28的圖像,數(shù)據(jù)下載地址為:https://pjreddie.com/projects/mnist-in-csv/

數(shù)據(jù)集第一列是代表的數(shù)字播急,之后28x28列的數(shù)字脓钾,代表數(shù)字各個(gè)點(diǎn)的黑度

所以特征集通過(guò): data.iloc[:,1:].values獲取

真實(shí)值y,通過(guò)data.iloc[:,0].values獲取

因?yàn)橐呀?jīng)有mnist_test.csv作為測(cè)試集旅择,所以無(wú)需train_test_split這個(gè)方法將訓(xùn)練集進(jìn)行拆分

這些代碼已經(jīng)經(jīng)過(guò)實(shí)際調(diào)試惭笑,確保運(yùn)行正常

訓(xùn)練集的初始圖片以及代表的數(shù)字:

測(cè)試圖片預(yù)覽

SVM的核函數(shù)為高斯核函數(shù)

根據(jù)參數(shù)選擇訓(xùn)練算法



分類(lèi)錯(cuò)誤示例

隨機(jī)森林訓(xùn)練的速度在一分鐘以?xún)?nèi)

訓(xùn)練集的準(zhǔn)確率在100%,隨機(jī)森林確實(shí)挺強(qiáng)的

隨機(jī)森林訓(xùn)練速度及結(jié)果

但是SVM訓(xùn)練的速度就慢得多~~~

如果說(shuō)此例SVM算法的訓(xùn)練時(shí)間以及predict的時(shí)間生真,就令你懷疑人生沉噩,那是因?yàn)檫€沒(méi)有見(jiàn)過(guò)訓(xùn)練幾天幾夜也結(jié)束不了的數(shù)據(jù)集與相關(guān)算法。柱蟀。川蒙。

8. SVR

繪制支撐向量回歸的曲線(xiàn)


y: 正弦的曲線(xiàn),加上一點(diǎn)噪聲长已,噪聲給的大一些畜眨,樣本會(huì)隨著曲線(xiàn)抖動(dòng)的厲害一些

如果不要噪聲,則構(gòu)建完全在線(xiàn)的數(shù)據(jù)


很顯然术瓮,在這個(gè)例子康聂,多項(xiàng)式核的能力是讓我們吃驚的。完全沒(méi)有按照正弦趨勢(shì)走胞四。

而SVR恬汁,高斯核,則體現(xiàn)出正弦曲線(xiàn)的趨勢(shì)

問(wèn):SVR的損失函數(shù)辜伟?

答:SVR的損失函數(shù)與SVC的損失函數(shù)一致的氓侧。仍然是我們計(jì)算預(yù)測(cè)值和實(shí)際值誤差的平方脊另,作為它的損失值。但是這個(gè)值離的近的話(huà)约巷,依然給它更大的損失偎痛;如果這個(gè)值足夠遠(yuǎn),就不要給它損失了独郎。

9. Grid

問(wèn):隨機(jī)森林在實(shí)際應(yīng)用中踩麦,要把所有輸入特征離散化么?

答:這個(gè)根據(jù)具體情況囚聚。比如用隨機(jī)森林做了鳶尾花數(shù)據(jù)的分類(lèi)靖榕,而鳶尾花數(shù)據(jù),事實(shí)上是連續(xù)的顽铸。所以不見(jiàn)得所有特征都要做離散化

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末茁计,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子谓松,更是在濱河造成了極大的恐慌星压,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,640評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鬼譬,死亡現(xiàn)場(chǎng)離奇詭異娜膘,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)优质,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)竣贪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人巩螃,你說(shuō)我怎么就攤上這事演怎。” “怎么了避乏?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,011評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵爷耀,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我拍皮,道長(zhǎng)歹叮,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,755評(píng)論 1 294
  • 正文 為了忘掉前任铆帽,我火速辦了婚禮咆耿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘爹橱。我一直安慰自己票灰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著屑迂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪冯键。 梳的紋絲不亂的頭發(fā)上惹盼,一...
    開(kāi)封第一講書(shū)人閱讀 51,610評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音惫确,去河邊找鬼手报。 笑死,一個(gè)胖子當(dāng)著我的面吹牛改化,可吹牛的內(nèi)容都是我干的掩蛤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,352評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼陈肛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼揍鸟!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起句旱,我...
    開(kāi)封第一講書(shū)人閱讀 39,257評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤阳藻,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后谈撒,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體腥泥,經(jīng)...
    沈念sama閱讀 45,717評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評(píng)論 3 336
  • 正文 我和宋清朗相戀三年啃匿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蛔外。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,021評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡溯乒,死狀恐怖夹厌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情橙数,我是刑警寧澤尊流,帶...
    沈念sama閱讀 35,735評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站灯帮,受9級(jí)特大地震影響崖技,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜钟哥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評(píng)論 3 330
  • 文/蒙蒙 一迎献、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧腻贰,春花似錦吁恍、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,936評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)伴奥。三九已至,卻和暖如春翼闽,著一層夾襖步出監(jiān)牢的瞬間拾徙,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,054評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工感局, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尼啡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,224評(píng)論 3 371
  • 正文 我出身青樓询微,卻偏偏與公主長(zhǎng)得像崖瞭,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子撑毛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容