你如何有效地计算出不同机器学习算法的估计准确性?在这篇文章中,你将会学到8种技术,用来比较R语言机器学习算法。你可以使用这些技术来选择最精准的模型,并能够给出统计意义方面的评价,以及相比其它算法的绝对优势。
选择最好的机器学习模型
你如何根据需求选择最好的模型?
在你进行机器学习项目的时候,往往会有许多良好模型可供选择。每个模型都有不同的性能特点。
使用重采样方法,如交叉验证,就可以得到每个模型在未知数据上精准度的估计。你需要利用这些估计从你创建的一系列模型中选择一到两个最好的模型。
仔细比较机器学习模型
当你有了新数据集,使用多种不同的图形技术可视化数据是个好主意,你可以从不同角度来观察数据。
这种想法也可以用于模型选择。你应该使用不同的方法来进行估计机器学习算法的准确率,依此来选择一到两个模型。
你可以使用不同的可视化方法来显示平均准确率、方差和模型精度分布的其他性质。
比较并选择R语言的机器学习模型
在本节中,你将会学到如何客观地比较R语言机器学习模型。
通过本节中的案例研究,你将为皮马印第安人糖尿病数据集创建一些机器学习模型。然后你将会使用一系列不同的可视化技术来比较这些模型的估计准确率。
本案例研究分为三个部分:
- 准备数据集:加载库文件和数据集,准备训练模型。
- 训练模型:在数据集上训练标准机器学习模型,准备进行评估。
- 比较模型:使用8种不同的技术比较训练得到的模型。
准备数据集
本研究案例中使用的数据集是皮马印第安人糖尿病数据集,可在UCI机器学习库中获取。也可在R中的mlbench包中获取。
这是一个二元分类问题,预测患者在五年之内糖尿病是否会发作。入参是数值型,描述了女性患者的医疗信息。
现在来加载库文件和数据集。
# load libraries
library(mlbench)
library(caret)
# load the dataset
data(PimaIndiansDiabetes)
训练模型
在本节中,我们将会训练在下一节中将要比较的5个机器学习模型。
我们将使用重复交叉验证,folds为10,repeats为3,这是比较模型的常用标准配置。评估指标是精度和kappa,因为它们很容易解释。
根据算法的代表性和学习风格方式进行半随机选择。它们有:
- 分类和回归树
- 线性判别分析
- 使用径向基函数的支持向量机
- K-近邻
- 随机森林
训练完模型之后,将它们添加到一个list中,然后调用resamples()函数。此函数可以检查模型是可比较的,并且模型都使用同样的训练方案(训练控制配置)。这个对象包含每个待评估算法每次折叠和重复的评估指标。
下一节中我们使用到的函数都需要包含这种数据的对象。
# prepare training scheme
control <- trainControl(method="repeatedcv", number=10, repeats=3)
# CART
set.seed(7)
fit.cart <- train(diabetes~., data=PimaIndiansDiabetes, method="rpart", trControl=control)
# LDA
set.seed(7)
fit