開始系統(tǒng)學(xué)習(xí)一下機(jī)器學(xué)習(xí)的一些知識(shí),這個(gè)是svm(支持向量機(jī))分類模型她肯。
1.R包和數(shù)據(jù)
使用了數(shù)據(jù)iris,用10%作為測(cè)試集康嘉,90%作為訓(xùn)練集籽前。
if(!require(e1071))install.packages("e1071")
library(e1071)
dat = iris
set.seed(12342)
od = sample(1:nrow(dat),0.9*nrow(dat))
train <- dat[od,]
test <- dat[-od,]
nrow(train)
## [1] 135
nrow(test)
## [1] 15
2.模型構(gòu)建和預(yù)測(cè)
model <- svm(Species ~ ., data = train)
fp = predict(model, test[,-5])
kt = table(fp,test[,5]);kt
##
## fp setosa versicolor virginica
## setosa 4 0 0
## versicolor 0 5 1
## virginica 0 0 5
# 看正確率
sum(diag(kt))/sum(kt)
## [1] 0.9333333
這個(gè)例子直接用默認(rèn)參數(shù)枝哄,正確率已經(jīng)非常高了,可以不用調(diào)優(yōu)了(當(dāng)然也可以還是調(diào)調(diào))众羡。
3.搜索最優(yōu)參數(shù)
tune.svm函數(shù)可以得出誤差最小的參數(shù)蓖租。
cost是懲罰系數(shù)粱侣,太大導(dǎo)致過(guò)擬合,太小導(dǎo)致欠擬合菜秦,不直接用默認(rèn)參數(shù)的畫甜害,可以用tune.svm找出表現(xiàn)最好的系數(shù)。
gamma參數(shù)在不同的kernel里用法不同球昨,涉及到了一些細(xì)節(jié)原理就不看了尔店。
tuned <- tune.svm(Species ~.,
data = train,
gamma = 10^(-3:-1),
cost = 10^(-1:1))
summary(tuned)
##
## Parameter tuning of 'svm':
##
## - sampling method: 10-fold cross validation
##
## - best parameters:
## gamma cost
## 0.1 10
##
## - best performance: 0.03021978
##
## - Detailed performance results:
## gamma cost error dispersion
## 1 0.001 0.1 0.65989011 0.21376773
## 2 0.010 0.1 0.50934066 0.20021339
## 3 0.100 0.1 0.12692308 0.07989422
## 4 0.001 1.0 0.51813187 0.17702297
## 5 0.010 1.0 0.11978022 0.08817117
## 6 0.100 1.0 0.03736264 0.03943475
## 7 0.001 10.0 0.11978022 0.08817117
## 8 0.010 10.0 0.04450549 0.03836985
## 9 0.100 10.0 0.03021978 0.03904580
由summary的結(jié)果可見,最好的參數(shù)是0.1和10主慰。
4.用最優(yōu)參數(shù)重新建模
model <- svm(Species ~., data = train, gamma=0.1, cost=10)
fp = predict(model, test[,-5])
kt = table(fp,test[,5]);kt
##
## fp setosa versicolor virginica
## setosa 4 0 0
## versicolor 0 5 1
## virginica 0 0 5
# 看正確率
sum(diag(kt))/sum(kt)
## [1] 0.9333333
調(diào)完還是一樣的嚣州,因?yàn)槟J(rèn)參數(shù)做出來(lái)的模型已經(jīng)挺好的了。
參考:《零基礎(chǔ)學(xué)R語(yǔ)言數(shù)據(jù)分析-從機(jī)器學(xué)習(xí)共螺、數(shù)據(jù)挖掘该肴、文本挖掘到大數(shù)據(jù)分析》