开发者学堂课程【机器学习实战:模型训练及评估(上)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/530/detail/7133
模型训练及评估(上)
内容介绍:
一. 模型训练
二. 模型评估
三. 分类模型:评估方法和指标
一.模型训练
模型训练是使用已有的数据即训练数据集或样本数据集输入到选定的模型或算法中,通过调整模型或算法的相关参数,使模型在训练时的表现以及性能和效率可以接受。
之前介绍了有监督学习和无监督学习,以下是两个的模型训练和使用流程。
在有监督学习中,使用 Training data 训练数据集去训练一个模型,然后使用模型对 Testing data 中的数据进行预测得到一个数字结果。
对于无监督学习,输入的数据直接建模得到最终结果。
在模型训练时,先举一个分类模型训练的例子。下侧图是使用阿里云数据学习平台做的分类的简单实例。
使用 iris 数据集,首先对数据进行拆分,拆分的目的是要把已有的数据集分成两部分。其中一部分用来做训练集去训练模型。另外一部分叫做 testing data 去验证训练出的模型的好坏。
组件中第一个是 iris 的数据集,通过拆分的组件分成两部分。左侧的一部分使用随机森林 -1 的模型或算法去训练这个模型。
模型训练结束后,有一个预测的组件。预测组件使用训练出的随机森林模型去拆分右侧输出的训练用的数据。
注意在实际训练模型和测试时,用到的数据集是无交叉的。预测完成后,需对预测结果进行评估。这里选用两个组件,一个为多分类评估,另一个为混淆矩阵评估。
下图为一个混淆矩阵图。由于 iris 是多分类,最终所有数据分成三类,是三种不同的 iris ,有三种不同的结果。由混淆矩阵图可看出黑色对角线是对每一类的预测的正确率,正确率的结果可接受。
下图也没训练出的结果,由于有两个评估组件,一个是多分类评估,另一个是混淆矩阵评估。
上例为混淆矩阵评估,这个为多分类评估。可看出统计信息提供了一系列的相关参数的取值,后面会详细介绍每个指标的含义。一般重点关注 F1 score ,即倒数第二个, F1 score 即 F1 得分的分值越高认为模型的分类效果越好。
二.模型评估
模型评估或者称作模型评价,训练模型后,需要通过一系列技术手段或指标从不同维度评估模型,确定模型是否能够达到预期。具体的评价维度依赖于模型的类型和模型的应用场景。
All models are wrong ,but some are useful ,是说所有的模型都是错的,不可能 100% 的精准的去预测,但是其中有一些模型是有用的。对不同的这个算法分类,对不同的算法或者模型,有一系列对应的不同的评估方法或者评估指标。
如分类、聚类、回归,评估方式都不一样。
1.分类模型:评估方法
(1)交叉验证:在做评估时,通常会使用一种叫做交叉验证 CV ( Cross-Validation )的方式,它的原理是。将原始数据进行分组,一部分作为训练集,另一部分作为测试集,首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型,以此来作为评价分类器的性能指标,可循环使用该方法进行评估,其目的是得到稳定可靠的模型。
刚才的例子实际不是交叉验证,是做了 Hold-out ,是一次的,是将数据分成了训练集和测试集,训练集训练,测试集测试。而交叉验证是重复多次的做这个动作。将数据集重新分成一个训练集和测试集去训练、测试,然后再分,这是交叉验证的思想。
(2)常见交叉验证的方法
①k-fold CV : k 折交叉验证,将所有样本分成k分,一般每份样本的数量相等或相差不多,取一份作为测试样本,剩余 k 减一份作为训练样本。这个过程重复k次,最后的平均测试结果可以衡量模型的性能。通常情况 k 取 10 的情况较多,要根据具体情况。
②Leave-One-Out CV ( LOO-CV ):留一法,K=N-1。一个数据集总共有多少条记录,每次只取一条记录作为测试样本,其他剩余所有记录都作为训练集,即为留一。
③ Hold-out Method :是 key CV 的一种特殊形式。将数据分成两份,一份进行训练,另一份进行测试或验证。如刚才的例子做的即为 Hold-out 。
(3)注意事项
①用于训练的数据集数量要多,通常超过整个数据集的 50%。即在进行拆分时,如 Hold-out 分成两部分,一部分进行训练,另一部分进行测试,训练级所占比重通常超过 50%,常见为七三分或八二分,即 70% 的数据或 80% 的数据用来训练,20% 或 30% 的数据用来测试。
②拆分程训练集和验证集的时候,要使用随机采样。由于人工或使用固定规则进行拆分时,通常数据具有一定的倾向性,对验证模型不好。
③验证集不能参加当次建模,只能用于模型验证。即训练集和测试集没有交集,若训练集中的一部分数据,还要参加测试进行验证时,这部分数据会打折,用训练的数据做验证,效果会比较好,会掩盖模型的缺陷。
2.分类模型:交叉验证
下图为交叉验证的简单示意图。如将一个数据集分为五部分为 5 折交叉验证,通常为 10 折,这里用 5 折举例子。将数据分为数量大体相等的五部分,一般均为相等。第一个回合时,将第一份数据作为测试数据集,剩余的四份数据作为训练集去训练,训练模型后用第一份数据进行测试。第二回合时,用第二份数据做测试,其他数据用来建模。第三回合时,用第三份数据做测试,剩余数据用来做训练。第四回合时,取第四份数据做测试集,剩余数据做训练集。第五回合前四份数据作为训练数据,最后一份数据用来做测试。
三.分类模型:评估方法和指标
1.常见分类模型评估方法:
(1)混淆矩阵( Confusion Matrix ):将实际的分类结果和模型预测的结果进行比对形成矩阵的形式,通过混淆矩阵,可以更容易的看清整个模型的分类效果
(2)常用评估指标
准确率( Accuracy ,正确率)
错误率( Error Rate )
查全率( Precision ,精确率,命中率)
查全率( Recall ,召回率,灵敏度: sensitivity )
特异度( specificity )
F 1 分值( F 1 Score ,F1 Measure )之前在多分类评估的统计信息中讲解过该指标
还有别的方式,如
ROC 曲线( Receiver Operating Characteristic Curve ,受试者操作特征曲线)
AUC( Area Under Curve ,曲线下面积)
PRC 曲线( Precious-Recall Curve ,精度-召回率曲线)其他:如比较检验,Gain(增益)、 Lift (提升)、基尼系数等。
评价分类模型的方法有很多,包括很多指标及评价方式,根据实际情况选择。
如下图是一个交叉验证的结果,通过五回合的验证。每一回合都可以看到误判率,错误率可通过多次交叉验证的结果,如取平均值或根据对风险的承受能力或使用情况来选择误判率最低的还是误判率较高的,还是选择平均的误判率。
2.分类模型评估:混淆矩阵
混淆矩阵通常用来比较无监督学习分类预测结果和实际结果行代表了真实,分类列代表了预测结果,通过行列交叉显示结果,可以直观的看到分类结果的整体信息。
如下例,如图左侧写着真实,则行代表真实的结果。第一行写了 0,此时分类结果为 0,实际中分类结果为0的记录总数为 104+8=112 个,实际记录为 1 的是 25+42,通过模型对数据进行预测,会得到一个预测结果。
如 104 加 25 为使用模型预测时得到的预测结果,8 加 42 为预测时预测值为 1 的结果。
对于实际值为 1 预测值也为一的结果称为 True Positive ,对于实际值为一,预测值为零的结果称为 False Negative ,对于实际值为 0,预测值也为 0 的结果称为True Negative ,对于预测值为 1,实际值为 0 的结果称为 False Positive 。
True 或 false 表示预测结果是否正确,即预测值与真实值是否一致。一致为 True ,不一致为 False 。
Positive 或 Negative 表示预测结果的值,即预测结果为何值。
3.分类模型评估:常用指标
可以基于混淆矩阵的结果定义相关系列的指标。
对应下面混淆矩阵图,TP 加 TN 均为 True 开头,即预测结果是否正确,因此 TP 加 TN 为所有预测结果为正确的记录条数,除以 TP+TN+FP+FN 所有预测记录的条数,结果为准确率。即预测结果和真实结果一致的结果占整体记录数的比例。
FP+FN 开头为 false 即错误率,预测结果和真实结果不一致的比例,错误率还等于 1-准确率,同样准确率也等于 1-错误率,准确率+错误率=1。
TP ÷( TP+FP ),TP 为实际预测结果为正确的且预测的为正例的记录条数,TP + FP 后一个字母均为 P ,则预测出的结果均为正例,即在预测出分类结果为正的结果中实际正确的比例,称为查准率,预测结果为正例的记录占预测出所有的正例的记录条数的比例。
TP ÷( TP+ FN ), TP 仍为预测正确的结果,FN 为预测错误的,预测为了负例,事实上为正例,即预测正确的正例占所有事实上正例的所有条数的比例。称为查全率,真实值为正例的结果被预测出的比例。
举例如有 100 条记录。其中 50 条为正例,50 条为负例,做一个模型,模型的预测结果为 1 个记录为正,99 个记录为负。计算查准率, TP 为预测出的正例且为对的只有 1 条,TP + FP 为所有的预测结果中正例只为一条,因此为 1÷1,查准率为 100%。看起来很好,实际 100 条记录中有 50 条为正,而只预测了 1 条为正。查准率为 100%,但模型应用价值不大,此时考虑查全率,预测出的正确的正例为一条,而事实有 50 条,查全率即为 1÷50=2%,将查准率与查全率结合,整个模型效果不好。
TN÷( TN + FP ),TN 为预测结果为负例且预测正确的记录条数,除以实际取值为负例的统计结果数,称为特异度,即真实只为负例的结果被预测出的比例。
以上内容最好将图画出,要理解其内涵更易计算理解,如四的上线记录的值。
每个上象限有两个字母表示,第一个字母及第二个字母的意思都要清楚,这里再次重复,第一个字母表示模型预测的结果是否正确,第二个字母表示模型预测出的结果是正例还是负例。
以上介绍了查准率及查全率,若只追求查准率则查全率较低,反之相同,若只追求差全率则查准率也较低。
继续上面的例子,假若有 100 条记录,50 个正例,50 个负例,为突出查准率,只预则 1 条结果为正例。若只考虑查全率,100 条记录预测出的结果均为正例,计算得 TP 为 50,因为预测出全部为正例,其中只有 50 条预测正确,因此 TP 为 50,TP + FN 为事实上真实值为正例的记录为 50 条,此时查全率为 1 即 100%。 TP 为 50, TP + FP 为 100,因此查准率为 50%。
因此这两个指标不可单独理解,要结合到一起,两个指标相互影响相互制约。若想用另外一个指标将查准率与查全率结合到一起该如何处理?此时利用 F-score ,下图为公式。
其中 β 为两者的权重,β 为 1 时,权重相同,即当 β 为 1 时,会以同样的权重看待查准率和查全率,二者同样重要。
当 β >1 时,更看重查准率。
β =1 时,将 F-score 称为 F1-score,即 F1 值,F1 得分,计算公式为二倍查准率×查全率÷查准率+查全率,因此一般不单一看查准率或查全率,更偏向于看 F1-score。F1-score 通常会将查全率和查准率的重要程度等同得到 F1-score 。