機器學習技法 學習筆記04 Soft SVM

2022-04-09 03:46:49 字數 1675 閱讀 1695

背景

之前所討論的svm都是非常嚴格的hard版本,必須要求每個點都被正確的區分開。但是,實際情況時很少出現這種情況的,因為雜訊資料時無法避免的。所以,需要在hard svm上新增容錯機制,使得可以容忍少量雜訊資料。

"軟"化問題

軟化svm的思路有點類似正規化,在目標函式新增錯誤累加項,然後加乙個係數,控制對錯誤的容忍度,並且在約束中新增錯誤容忍度的約束,形式如下:

現在問題就變成了(d+1+n)個變數和2n個約束。ξ

用來描述錯誤的容忍度。c是常量,用來控制容忍度。c越大,由於min的作用,ξ錯誤就會變小,也就是對錯誤的容忍度變小,約束變苛刻,邊界變窄;反之,容忍度越大,約束變寬鬆,邊界變寬。

遇到老熟人

現在,將上面軟化後的svm問題進行對偶轉化和簡化,得到的結果和之前hard版本十分類似,好像遇到了老熟人。

區別部分用紅色高亮了,你會發現只多了n個約束。

α的妙用

α仍然可以使用qp方法計算得到,b的求解也是通過complementary slackness,但是在求解b的過程,可以將向量分為三類,很有參考意義,可用於資料分析。

首先看看complementary slackness條件,

當時,向量在邊界上或遠離邊界;

當時,,向量在邊界上,稱之為free支援向量;

當時,向量在邊界上()或者破壞約束()。

具體可以參考下圖,

svm實戰

library(e1071)

load('data/train.rdata')

train$digit

m_svm

summary(m_svm)

attributes(m_svm)

上面使用了rbf kernel,取c = 1。得到的結果中,有個屬性是coefs,之前對這個屬性很不了解,但是檢視幫助,原文"the corresponding coefficients times the training labels",發現原來就是下面的值,

所以,如果使用線性kernel(也就是不用kernel),可以根據w的公式(如下)很方便的計算出w,

如果想實踐qp,推薦使用r擴充套件包kernlab中的ipop函式。

最後,要感謝台灣大學林軒田老師設計出這麼好的課程和作業,加深了我對svm的理解,希望後面可以靈活的應用到實際工作中!

機器學習技法 學習筆記03 Kernel技巧

背景 上一講從對偶問題的角度描述了svm問題,但是始終需要計算原始資料feature轉換後的資料。這一講,通過乙個kernel 核函式 技巧,可以省去feature轉換計算,但是仍然可以利用feature轉換的特性。什麼是kernel kernel的其實就是將向量feature轉換與點積運算合併後的...

筆記 機器學習技法 Random Forest

permutation test的原理 隨機排序的方式來測試某個特徵的重要性 原本的表現 該特徵資料的隨機打亂後的表現。在面對非線性的問題的時候會首先用random forest來進行初步的特徵選擇。上圖一 一棵樹劃分情況,圖二 bagging的小樹的結果 bootstrap隨機產生的一顆樹的情況,...

機器學習技法筆記(1)

一 承前啟後 kernel method 這一段話還是很重要的 1 如何處理feature很多很複雜的情況?kernel 2 如何將多個feature聯絡起來使用?boost和blend 3 如何學習隱藏的feature?deeplearning 首先還是引出了svm,為什麼需要使用svm呢,簡單的...