与二分类问题类似,首先构建公式,然后采用e1071包的svm函数训练支持向量机模型。为了svm函数能够自动构建分类模型,需要先将训练集中因变量设置为factor。为了预测时能输出预测概率,需要设置probability参数为TRUE。
对于分类模型预测时从概率到分类的转化,多分类模型没有采用如二分类模型中的约登法则,一般采用赢家通吃的规则,简单理解就是哪个分类的预测概率最高就将其预测为哪个分类。当然也有其转化规则,比如402040规则。相关的规则,有RSNNS包里面的analyzeClassification函数,大家可以了解下。
# 因变量自变量构建公式
colnames(winequalityred)
form_clsm <- as.formula(
paste0("quality ~ ", paste(colnames(traindata)[1:11], collapse = " + "))
)
form_clsm
# 构建模型
fit_svm_clsm <- svm(form_clsm,
data = traindata,
kernel = "radial",
cost = 1,
probability = T)
fit_svm_clsm
# str(fit_svm_clsm)
# 训练集预测概率
trainpred <- predict(fit_svm_clsm, newdata = traindata, probability = T)
trainpredprob <- attr(trainpred, "probabilities")