全文共1760字,预计学习时长3分钟
微调机器学习预测模型是提高预测结果准确性的关键环节。本文将详细介绍以下几个方面:
1.使用评分指标检索模型性能的估计值
2.查找和诊断机器学习算法的常见问题
3.微调机器学习模型的参数
第1步:了解什么是调整机器学习模型
有时,我们不得不探索如何用模型参数来提高机器学习模型的预测精度。微调机器学习模型是一门黑色艺术(一种魔法)。这项任务也可能非常艰巨。本文将介绍一些微调机器学习模型的方法,帮助我们在较短的时间内获得更准确的结果。
调整机器学习模型就像旋转电视开关和旋钮,转到你获得更清晰的信号为止。
· X 列 - 训练自变量数据,也称为特征
·X测试 - 自变量测试数据
·Y 列 - 因变量训练数据
·Y 测试 - 因变量测试数据
例如,如果你根据温度和湿度预测瀑布的体积,则水的体积表示为y(因变量),温度和湿度表示为x(自变量或特征)。X的训练数据称为X训练,你可以用它来训练模型。
超参数是可以作为模型arguments对象输入的模型参数。
第2步:介绍基础知识
在微调预测模型之前,必须要对机器学习有个基本了解。
与微调模型参数相比,改进输入到模型中的数据通常更容易。如果想提高预测模型的准确性,请先增加特征集中的数据量。
如果你输入劣质的数据,那么该模型产生的结果也就不太准确。
第3步:找到你的分数标准(评分指标)
最重要的先决条件是确定将用于评估预测模型准确性的分数指标(评分指标)。它可以是R平方,调整后的R平方,混淆矩阵,F1,召回率,方差等。
第4步:获得准确的预测分数
准备好训练集、丰富训练集功能(特征)、缩放数据、分解特征集、确定评分指标并在训练数据上训练模型,这些都做好之后再去测试模型在未知数据上的准确性。未知的数据称为“测试数据”。
你可以使用交叉验证来评估模型对未知的数据的处理。这是模型的泛化错误。
两种常见的交叉验证方法
1.Holdout 交叉验证
在同一数据集上训练你的模型并对其准确性进行评分并非明智的机器学习方法,应该在一个未知的测试集上使用不同的模型参数值测试模型。
将数据集分为三个部分是一种很好的方法:
· 训练集
· 验证集
· 测试集
在训练集上训练模型(60%的数据),然后在验证集上执行模型选择(调整参数)(20%的数据),一旦准备就绪,再在测试集上测试模型(20%数据)。
根据机器学习模型的需求和数据的可用性,确定训练、验证和测试数据集的比例。
2.K折交叉验证
K折交叉验证是一种优于holdout交叉验证的机制。它的工作方式是将数据分为k个折叠(部分)。K-1折叠用于训练模型,最后一个折叠用于测试模型。
重复该机制k次。此外,每次可以使用多个性能指标来评估和评分模型的性能。然后得出性能指标的平均值。等级比例保存在StratifiedKFold中。
选择8–12 K折叠
from sklearn.cross_validation import cross_val_score
scores = cross_val_score(estimator=pipe_lr, X=X_train, y=Y_train, cv=12, n_jobs=)
mean_scores = scores.mean()
n_jobs参数控制用于运行交叉验证的中央处理器(CPU)数量。
第5步:使用验证曲线诊断最佳参数值
一旦建立了准确的预测分数,找出模型所需的所有参数。然后使用验证曲线来探索它们的值如何能够提高预测模型的准确性。
在调整参数之前,我们需要诊断并找出模型是否存在欠拟合或过拟合的问题。
具有大量参数的模型往往过拟合。利用验证曲线可以解决机器学习中的过拟合和欠拟合问题。
验证曲线用于传递模型参数的一系列值。它一次改变一个模型参数的值,然后可以将精度值绘制到模型参数值上,以评估模型的精度。
例如,如果模型采用名为“树数”的参数,那么你可以通过传递10个不同的参数值来测试模型。你可以使用验证曲线得出每个参数值的准确性,以评估最终数据的准确性。最后,选取准确度最高的分数,并在可接受的次数内给出你所需的结果。
Sci-kit learn提供验证曲线模块:
from sklearn.learning_curve import validation_curve
number_of_trees= [1,2,3,4,5,6,7,99,1000]
train_scores, test_scores = validation_curve(estimator=, … X=X_train,y=Y_train, param_range=number_of_trees, …)
第6步:使用网格搜索来优化超参数组合
一旦检索到单个模型参数的最佳值,就可以使用网格搜索来获得模型的超参数值的组合,这样就能获得最高的精度。
网格搜索可以评估参数值的所有可能组合。
网格搜索是十分详尽的,并能强大地评估最准确的值。因此,它是一项计算密集型任务。
使用sci-kit learn的GridSearchCV执行网格搜索
from sklearn.grid_search import GridSearchCV
第7步:持续调整参数以进一步提高精度
这里的关键是,如有一直有新数据,就要一直增强训练集。
请在模型以前没有遇到过的更丰富的测试数据上测试你的预测模型(请用那些新数据来测试的预测模型)。
始终确保为此步骤选择了正确的模型和参数值。
重要的是,一旦数据可用,就尽可能提供更多的数据,并连续测试模型的准确性,以便进一步优化性能和提高准确性。
留言 点赞 发个朋友圈
我们一起分享AI学习与发展的干货
编译组:王玲、胡婷
领取专属 10元无门槛券
私享最新 技术干货