說明
除了選擇不同的特徵集和核函式,還可以借助引數gamma以及懲罰因子來調整支援向量機的效能,可以寫乙個for函式來實現。svm提供了tune.svm函式簡化了這個過程。
操作準備好訓練資料集trainset
使用tune.svm調整支援向量機
tuned = tune.svm(churn ~ .,data = trainset,gamma = 10^(-6:-1),cost = 10^(1:2))
summary(tuned)
parameter tuning of 『svm』:
- sampling method:
10-fold cross validation
- best parameters:
gamma cost
0.01
100- best performance: 0.08334453
- detailed performance results:
gamma cost error dispersion
11e-06
100.14771421
0.02166249
21e-05
100.14771421
0.02166249
31e-04
100.14771421
0.02166249
41e-03
100.14771421
0.02166249
51e-02
100.09328258
0.02145332
61e-01
100.09327885
0.01886539
71e-06
1000.14771421
0.02166249
81e-05
1000.14771421
0.02166249
91e-04
1000.14771421
0.02166249
101e-03
1000.11660882
0.02216171
111e-02
1000.08334453
0.01773662
121e-01
1000.12221787
0.03089361
使用turning函式得到最佳引數設定支援向量機
model.tuned = svm(churn ~ .,data
= trainset,gamma = tuned$best.parameters
$gamma,cost = tuned$best.parameters
$cost)
> summary(model.tuned)
call:
svm(formula = churn ~ ., data
= trainset, gamma = tuned$best.parameters
$gamma, cost = tuned$best.parameters
$cost)
parameters:
svm-type: c-classification
svm-kernel: radial
cost: 100
gamma: 0.01
number of support vectors: 547
( 304
243 )
number of classes: 2
levels:
yes no
呼叫predict函式基於剛配置好的svm模型進行類標號的**:
svm.tuned
.pred = predict(model.tuned,testset[,!names(testset) %in% c("churn")])
svm.tuned
.table = table(svm.tuned
.pred,testset$churn)
svm.tuned
.table
svm.tuned
.pred yes no
yes 95
24 no 46
853
classagreement(svm.tuned.table)
$diag
[1] 0.9312377
[1] 0.691678
$rand
[1] 0.871806
$crand
[1] 0.6303615
最後,呼叫confusionmatrix評價系統模型
confusionmatrix(svm.tuned.table)
confusion matrix and statistics
svm.tuned.pred yes
noyes
9524
no46
853 accuracy : 0.9312
95% ci : (0.9139, 0.946)
no information rate : 0.8615
p-value [acc > nir] : 1.56e-12
mcnemar's test p-value : 0.01207
sensitivity : 0.67376
specificity : 0.97263
pos pred value : 0.79832
neg pred value : 0.94883
prevalence : 0.13851
detection rate : 0.09332
detection prevalence : 0.11690
balanced accuracy : 0.82320
'positive' class : yes
原理
調整支援向量機可以採用試錯法來尋找最佳的gamma和懲罰因子,使用者需要採用不同的引數組合以訓練出不同的支援向量機。svm.tune函式使用了12組不同的引數組合,函式採用10遍交叉檢驗的方法獲得每次組合的錯誤偏差,最後選擇誤差最低的最優引數組合,從summary表可以知道,gamma等於0.01和懲罰因子的100時,演算法最優。
當得到最佳引數值後,可以用他們在訓練乙個新的支援向量機,並基於模型的分類**結果的樣例集的實際類別生成分類表以及混淆矩陣。從混淆矩陣的輸出結果可以得到新舊兩個模型的正確差異。
R語言 支援向量機
支援向量機可以想象成乙個平面,改平面定義了個資料點之間的界限,而這些資料點代表它們的特徵繪製多維空間中的樣本。支援向量機的目標是建立乙個稱為超平面的平面邊界,它使得任何乙個的資料劃分都是相當均勻的。支援向量機幾乎可以適用於所有的學習任務,包括分類 svm 數值 回歸 svr r 實現及引數說明 1 ...
支援向量機 R語言如何實現支援向量機?
支援向量機是幫助我們解決小樣本 非線性及高維資料的重要手段。1在r語言中,實現支援向量機的是e1071軟體包中的svm函式。首先,安裝並載入軟體包。2讀取資料集。gyyz data read.csv gyyz.csv head t 讀取資料集 gyyz data is rise as.factor ...
R 支援向量機
支援向量機是乙個相對較新和較先進的機器學習技術,最初提出是為了解決二類分類問題,現在被廣泛用於解決多類非線性分類問題和回歸問題。其流行歸功於兩個方面,乙個方面,可以輸出比較準確的 結果 另一方面,模型基於比較優雅的數學理論。svm旨在在多維空間找到乙個能將全部樣本單元分成兩類的最優平面,這一平面應使...