R語言調整支援向量機

2021-08-02 05:44:46 字數 3387 閱讀 6252

說明

除了選擇不同的特徵集和核函式,還可以借助引數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旨在在多維空間找到乙個能將全部樣本單元分成兩類的最優平面,這一平面應使...