分類分析--支持向量機SVM(調和參數)


分類分析--支持向量機

支持向量機(SVM)是一類可用於分類和回歸的有監督機器學習模型。其流行歸功於兩個方面:一方面,他們可輸出較准確的預測結果;另一方面,模型基於較優雅的數學理論。

SVM旨在在多維空間中找到一個能將全部樣本單元分成兩類的最優平面,這一平面應使兩類中距離最近的點的間距(margin)盡可能大,在間距邊界上的點被稱為支持向量(support vector,它們決定間距),分割的超平面位於間距的中間。

SVM可以通過Rkernlab包的ksvm()函數和e1071包中的svm()函數實現。ksvm()功能更強大,但svm()相對更簡單。如下代碼給出了通過svm()函數對威斯康星州乳腺癌數據建立SVM模型的一個示例。

由於方差較大的預測變量通常對SVM的生成影響更大,svm()函數默認在生成模型前對每個變量標准化,使其均值為0、標准差為1。與隨機森林算法不同的是,SVM在預測新樣本單元時不允許有缺失值出現。

1)支持向量機

library(e1071)

set.seed(1234)

fit.svm <- svm(class~., data=df.train)

fit.svm

 

svm.pred <- predict(fit.svm, na.omit(df.validate))

svm.perf1 <- table(na.omit(df.validate)$class,

                    svm.pred, dnn=c("Actual", "Predicted"))

svm.perf1

 

結果分析:整體來看,驗證集中的准確率達到了(126+70/205=96%

選擇調和參數

svm()函數默認通過徑向基函數(Radial Basis FunctionRBF)將樣本單元投射到高維空間。一般來說RBF核是一個比較好的選擇,因為它是一種非線性投影,可以應對類別標簽與預測變量間的非線性關系。

在用帶RBF核的SVM擬合樣本時,兩個參數可能影響最終結果:gamma和成本(cost)。gamma是核函數的參數,控制分割超平面的形狀。gamma越大,通常導致支持向量越多。我們也可將gamma看作控制訓練樣本到達范圍的參數,即gamma越大意味着訓練樣本到達范圍越廣,而越小則意味着到達范圍越窄。gamma必須大於0

成本參數代表犯錯的成本。一個較大的成本意味着模型對誤差的懲罰更大,從而將生成一個更復雜的分類邊界,對應的訓練集中的誤差也會更小,但也意味着可能存在過擬合問題,即對新樣本單元的預測誤差可能很大。較小的成本意味着分類邊界更平滑,但可能會導致欠擬合。與gamma一樣,成本參數也恆為正。

svm()函數默認設置gamma為預測變量個數的倒數,成本參數為1。不過gamma與成本參數的不同組合可能生成更有效的模型。在建模時,我們可以嘗試變動參數值建立不同的模型,但利用格點搜索法可能更有效。可以通過tune.svm()對每個參數設置一個候選范圍,tune.svm()函數對每一個參數組合生成一個SVM模型,並輸出在每一個參數組合上的表現。如下代碼給出了一個示例。

2)帶RBF核的SVM模型

set.seed(1234)

tuned <- tune.svm(class~., data=df.train, gamma=10^(-6:1),cost=10^(-10:10))  #變換參數

tuned     #輸出最優模型

結果分析:我們一共將嘗試八個不同的gamma(從0.000 00110)以及21個成本參數(從0.011010)。總體來說,我們共擬合了1688×21)個模型,並比較了其結果。訓練集中10折交叉驗證誤差最小的模型所對應的參數為gamm=0.1,成本參數為1

fit.svm <- svm(class~., data=df.train, gamma=.01, cost=1)      #基於這一參數值組合,我們對全部訓練樣本擬合出新的SVM模型

svm.pred <- predict(fit.svm, na.omit(df.validate))      #用這一模型對驗證集中的樣本單元進行預測

svm.perf <- table(na.omit(df.validate)$class, svm.pred, dnn=c("Actual", "Predicted"))

svm.perf

 

結果分析:整體來看,驗證集中的准確率達到了(128+70/205=97%


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM