【機(jī)器學(xué)習(xí)與R語(yǔ)言】9- 支持向量機(jī)

1.理解支持向量機(jī)(SVM)

1)SVM特點(diǎn)

  • 支持向量機(jī)和神經(jīng)網(wǎng)絡(luò)都是“黑箱模型”的代表:潛在的模型基于復(fù)雜的數(shù)學(xué)系統(tǒng),而且結(jié)果難以解釋。
  • SVM的目標(biāo)是創(chuàng)建一個(gè)平面邊界(“超平面”),使得任何一邊的數(shù)據(jù)劃分都是均勻的。結(jié)合了kNN和線性回歸。
  • 幾乎適用于所有的學(xué)習(xí)任務(wù),包括分類(lèi)和數(shù)值預(yù)測(cè)。

2)用超平面分類(lèi)

  • 線性可分:可以由一條直線或一個(gè)平面進(jìn)行劃分
image.png
  • 最大間隔超平面(MMH):很多線都能對(duì)數(shù)據(jù)點(diǎn)進(jìn)行分類(lèi),但要尋找能使類(lèi)形成最大間隔的那條線(因?yàn)樵谶吔绺浇c(diǎn)位置的微小變化可能導(dǎo)致某些點(diǎn)落在線之外),支持向量就是每個(gè)類(lèi)中最接近最大間隔超平面的點(diǎn)。所以單獨(dú)使用支持向量,就能定義最大間隔超平面。
image.png
  • 線性可分條件下,最大間隔超平面要盡可能遠(yuǎn)離兩組數(shù)據(jù)點(diǎn)的外邊界(“凸包”),最大間隔超平面就是兩個(gè)凸包之間的最短距離直線的垂直平分線,可通過(guò)“二次優(yōu)化”算法實(shí)現(xiàn)。
image.png
  • 非線性可分:數(shù)據(jù)不是線性可分的條件下,使用一個(gè)“松弛變量”來(lái)創(chuàng)建一個(gè)軟間隔,允許一些點(diǎn)落在線不正確的一邊。
圖中字母為松弛項(xiàng)(錯(cuò)誤落入點(diǎn))
  • 非線性可分中的成本參數(shù)C:即所有違反約束的點(diǎn),試圖使總成本最小,而非尋找最大間隔。修改C將調(diào)整對(duì)于落在超平面錯(cuò)誤一邊的案例的懲罰。C越大,實(shí)現(xiàn)100%分離的優(yōu)化就越困難。較小的C將把重點(diǎn)放在更寬的整體邊緣。

3)對(duì)非線性空間使用核函數(shù)

  • 另一種處理非線性問(wèn)題的方法,就是使用“核技巧”的處理將問(wèn)題映射到一個(gè)更高維的空間,這樣非線性關(guān)系可能會(huì)變?yōu)橥耆€性。
核技巧示例:新維度(海拔高度)使得類(lèi)完全線性可分
  • 從本質(zhì)上講,核技巧涉及一個(gè)添加能夠表述度量特征之間數(shù)學(xué)關(guān)系新特征的過(guò)程。
  • 非線性核SVM的特點(diǎn):
image.png
  • 核函數(shù):線性核函數(shù)(特征的點(diǎn)積),多項(xiàng)式核函數(shù)(加一個(gè)非線性數(shù)據(jù)變換),S形核函數(shù)(類(lèi)似神經(jīng)網(wǎng)絡(luò)的S形激活函數(shù)),高斯RBF核函數(shù)(類(lèi)似RBF神經(jīng)網(wǎng)絡(luò))。多數(shù)情況下,核函數(shù)的選擇是任意的,因?yàn)樾阅芸赡苤挥休p微的變化。

2. 支持向量機(jī)應(yīng)用示例

使用SVM進(jìn)行光學(xué)字符識(shí)別(OCR圖像處理):通過(guò)將印刷或手寫(xiě)文本轉(zhuǎn)換為電子形式,保存在數(shù)據(jù)庫(kù)種來(lái)處理紙質(zhì)文件。

難點(diǎn):

  • 圖像的規(guī)則模式很難嚴(yán)格定義
  • 圖像數(shù)據(jù)往往是噪聲數(shù)據(jù)

1)收集數(shù)據(jù)

數(shù)據(jù)集包含26個(gè)大寫(xiě)英文字母的2000個(gè)案例,使用20種不同的隨機(jī)重塑和扭曲的黑斯和白色字體印刷。
假設(shè)當(dāng)圖像字符被掃描到計(jì)算機(jī),轉(zhuǎn)換為像素,有16個(gè)統(tǒng)計(jì)屬性(如水平垂直尺寸,黑色像素比例等)。


image.png

數(shù)據(jù)下載:

鏈接: https://pan.baidu.com/s/1q8zHWkMZcapwnX90PA4hOg 提取碼: eaqt

2)探索和準(zhǔn)備數(shù)據(jù)

SVM需要所有特征都是數(shù)值型的,而且每一個(gè)特征需要縮小到一個(gè)相當(dāng)小的區(qū)間內(nèi)。所以不要有因子,而且要做標(biāo)準(zhǔn)化。這里略過(guò)沒(méi)做。

## Example: Optical Character Recognition ----

## Step 2: Exploring and preparing the data ----
# read in data and examine structure
letters <- read.csv("letterdata.csv")
str(letters)

# divide into training and test data
letters_train <- letters[1:16000, ] #80%
letters_test  <- letters[16001:20000, ] #20%

3)訓(xùn)練數(shù)據(jù)

SVM的R包有e1071,klaR和kernlab等,這里用kernlab(與caret連用,允許SVM使用各種自動(dòng)化方法進(jìn)行訓(xùn)練和評(píng)估)。

kernlab::ksvm(target~predictors, 
                 data=mydata, 
                 kernel="rbfdot", #隱非線性映射,rbfdot/polydot/tanhdot/vanilladot
                 c=1) #違法約束條件的懲罰,較大的c值導(dǎo)致較窄的邊界

訓(xùn)練:

## Step 3: Training a model on the data ----
# begin by training a simple linear SVM
library(kernlab)
letter_classifier <- ksvm(letter ~ ., data = letters_train,
                          kernel = "vanilladot")  #默認(rèn)使用高斯RBF核函數(shù),這里用線性函數(shù)

# look at basic information about the model
letter_classifier
image.png

4)評(píng)估模型

letter_predictions <- predict(letter_classifier, letters_test)

head(letter_predictions)

table(letter_predictions, letters_test$letter)
image.png
# look only at agreement vs. non-agreement
# construct a vector of TRUE/FALSE indicating correct/incorrect predictions
agreement <- letter_predictions == letters_test$letter
table(agreement)
prop.table(table(agreement))
image.png

識(shí)別的準(zhǔn)確度大概為84%。

5)提高性能

可以使用一個(gè)更復(fù)雜的核函數(shù),將數(shù)據(jù)映射到更高維的空間,獲得一個(gè)較好的模型擬合度。如試試高斯RF核函數(shù),或者修改成本約束參數(shù)C值來(lái)修正決策邊界的寬度。

## Step 5: Improving model performance ----
set.seed(12345)
letter_classifier_rbf <- ksvm(letter ~ ., data = letters_train, kernel = "rbfdot") #高斯RBF核函數(shù)
letter_predictions_rbf <- predict(letter_classifier_rbf, letters_test)

agreement_rbf <- letter_predictions_rbf == letters_test$letter
table(agreement_rbf)
prop.table(table(agreement_rbf))
image.png

訓(xùn)練時(shí)間更長(zhǎng),將準(zhǔn)確度提高到了93%。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容