机器学习笔记:模型选择与评估
前言
在机器学习中,我们需要用一些方法去衡量我们选择的模型效果的优劣。这里我记录了一些比较常见的方法,以此来评估我们选择的模型在此场景下的优劣程度。
一、介绍
我们将学习器预测输出与样本真实输出的差异称为误差。预测正确的样本数占样本总数比例称为准确率(accuracy),相反错误样本数占样本总数的比例称为错误率(error rate) 。 但是准确率并不能有效说明机器学习性能,实际上达到准确率100%的学习器在大多数情况都不好。
我们实际希望得到的是能够在新样本上表现很好的机器。在新样本上的误差,我们称为泛化误差。训练学习器的时候,学习器学习训练集“太好”,导致将训练集的一些特点当成所有样本的普遍规律,这样会导致泛化性能下降,这种现象在机器学习中被称为“过拟合”(overfitting)。相反的学习器学习训练集太差,训练集一般的性质都没有学好,称为“欠拟合”(underfitting)。
二、评估方法
现实任务中,我们需要选择合适的模型和合适的参数。那么我们方案通常是,对候选的模型进行泛化误差评估,选取泛化误差最少的模型。
我们需要使用一个测试集来测试学习器对新样本的泛化能力。测试样本也是从样本真实分布中独立同分布采样而得。测试集和训练集尽可能互斥。
2.1 留出法
-
把数据集分成互不相交的两部分,一部分是训练集,一部分是测试集。
-
保持数据分布大致一致,类似分层抽样
-
训练集数据的数量应占2/3~4/5
-
为了保证随机性,将数据集多次随机划分为训练集和测试集,然后在对多次划分结果取平均。
2.2 交叉验证法 如图2-1所示:
图2-1 交叉验证法图例-
将数据集随机分为互斥的k个子集,为保证随机性,P次随机划分取平均。
-
将k个子集随机分为k-1个一组剩下一个为另一组,有k种分法。
-
将每一种分组结果中,k-1个子集的组当做训练集,另外一个当做测试集,这样就产生了k次预测,对其取平均
-
称为p次k折交叉验证,一般取k=10
2.3 自助法
-
适用于样本量较小,难以划分时。换句话说,样本量足够时,用自助法并不如留出法和交叉验证法,因其无法满足数据分布一致。
-
每次随机从数据集(有m个样本)抽取一个样本,然后再放回(也就是说可能被重复抽出),m次后得到有m个样本的数据集,将其作为训练集
-
始终不被抽取到的样本的比例:
-
也就是说这保证了训练集样本数(不重复)在2/3左右
2.4 小结
(1)自助法在数据量较小,训练集测试集难分的时候比较适用。在初始数据量足够时,留出法和交叉验证法更加适用。
(2)我们在对比不同算法模型的泛化性能时,我们用测试集来评估模型实际的泛化能力,而把训练集另分为训练集和验证集,用验证集评估来做模型选择和调参。
(3)当模型选择完成后,学习算法和参数配置已选定,此时应该将所有数据集用来重新训练模型,这个模型在训练过程中使用了所有的样本,这才是最终我们提交给用户的模型。
三、评估指标
3.1举例
我们需要从100名同学中(男50名,女50名),选出所有女生。通过分类器模型后,选取结果为40名女生20名男生。
分类结果混淆矩阵 如图 3-1 所示:
图3-1 分类结果混淆矩阵
我们需要的是女生所以,选取女生称为相关,选取的男生为无关。即我们可以得到混淆矩阵,如图3-2所示:
图 3-2 分类结果混淆矩阵
accuracy(准确率)是用来计算识别正确的人数在总人数中的比例,即分类正确的女生数占总人数比例,TP/(TP+FP+FN+TN)=40/(40+20+10+30)。根据accuracy,在某些场合可以说明一个分类器的有效度,但是很多时候,并不能充分评估一个模型的好坏。
precision(精准率)计算检测到的正确人数占模型中所有检测到的人群比例,即分类出的女生人数占所有分类人数比例,P=TP/(TP+FP)=40/(40+20)
recall(召回率)计算检测到正确人数占正确的总人数比例,即分类正确的女生数量占所有女生数的比例,R = TP/(TP+FN) = 40/(40+10)
F1 为了衡量召回率和精准率两个综合评估值,计算公式:F1=2*PR/(P+R)
-
理性状态是召回率与精准率都高
-
通常召回率和精准率在大规模数据集合中相互制约,召回率高,精准率低;精准率高,召回率低;我们通常需要找一个平衡点。如果两者都低,则表示出了问题。
-
在不同场景,我们会用不同的阈值统计不同阈值下的召回率精准率,如搜索场景,我们会保证召回率,提升精准率。
3.2 mAP(mean Average Precision)
mAP是为解决P,R,F-measure的单点值局限性的。Average Precision,即平均精确度。mAP即平均AP值。
根据P-R图,我们可以直观表示全局性能的指标。precision,即准确率;recall,即召回率。P-R即以precision 和 recall作为纵、横轴坐标的二维曲线。 如图3-3所示
图3-3 P-R曲线与平衡点示意图如何根据P-R图评价学习性能:
-
第一种方法是比较曲线下面积,但值不太容易估算;
-
第二种方法是比较两条曲线的平衡点,平衡点是“查准率=查全率”时的取值,在图中表示为曲线和对角线的交点。平衡点在外侧的曲线的学习器性能优于内侧。
-
第三种方法是F1度量和Fβ度量。F1是基于查准率与查全率的调和平均定义的,Fβ则是加权调和平均。
F1、Fβ、mAP数学公式:如图3-4、3-5、3-6所示:
图3-4 F1数学公式
图3-5 Fβ数学公式
图3-6 mAP数学公式
3.3 ROC(Receiver Operating Characteristic)
ROC可以用来说明二分类器在识别阈值变化时的性能, 在逻辑回归中,我们设置一个阈值,大于阈值我们称为正类,小于阈值为负类。我们降低阈值,会使更多样本分为正类,同时也会使得一部分负类被错分为正类。ROC曲线可以形象表示这一变化,评价分类器的好坏。
ROC有两个重要指标,一个TPR代表正例分对的概率,另一个为FPR,代表负例错分为正例的概率。
True Positive Rate ( TPR ) = TP / [ TP + FN] ,TPR代表能将正例分对的概率
False Positive Rate( FPR ) = FP / [ FP + TN] ,FPR代表将负例错分为正例的概率
在 ROC 空间中,每个点的横坐标是 FPR,纵坐标是 TPR,这也就描绘了分类器在 TP(真正率)和 FP(假正率)间的 trade-off2。如图3-7所示
图3-7 ROC示意图
由于二值分类问题往往是连续的,通过变化阈值大小,进行分类。根据分类结果计算得到ROC空间上的点,连接这些点形成的ROC curve。ROC curve经过(0,0)(1,1),实际上(0, 0)和(1, 1)连线形成的ROC curve实际上代表的是一个随机分类器。一般情况下,这个曲线都应该处于(0, 0)和(1, 1)连线的上方。
3.4 AUC(Area Under roc Curve)
通过ROC curve可以直观的看出分类器的performance,但是我们希望有一个数值来表示这个分类器具体的好坏,这个就是AUC(Area Under roc Curve) 。
顾名思义AUC就是ROC curve下方与坐标轴围成的面积。
-
随机挑选一个正样本以及一个负样本,分类器判定正样本的值高于负样本的概率就是 AUC 值。
-
通常AUC值在0.5~1.0之间,AUC值越大,表示分类器效果越好。
-
ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反)。
3.5 方差与偏差
学习器在新样本上产生的误差被称为泛化误差,泛化误差又可以分解为偏差(bias), 方差(variance) 和噪声(noise) 。
-
偏差(bias):顾名思义,就是偏离了某个“标准”,离真实值距离大小。偏差度量了学习算法的期望预测与真实结果的偏离程度, 即刻画了学习算法本身的拟合能力。
-
方差(variance):方差表示的是离散程度,在期望值附近的波动程度。方差度量了同样大小的训练集的变动所导致的学习性能的变化, 即刻画了数据扰动所造成的影响 。
-
噪声:噪声表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界, 即刻画了学习问题本身的难度。巧妇难为无米之炊, 给一堆很差的食材, 要想做出一顿美味, 肯定是很有难度的.
噪声属于不可约减的误差,所以这里我们只需关注方差和偏差。
我们利用靶心图来直观体现偏差与方差,如图 3-8所示:
图 3-8 方差与偏差图例-
假设红色的靶心区域是学习算法完美的正确预测值, 蓝色点为每个数据集所训练出的模型对样本的预测值, 当我们从靶心逐渐向外移动时, 预测效果逐渐变差.
-
很容易看出有两副图中蓝色点比较集中, 另外两幅中比较分散, 它们描述的是方差的两种情况. 比较集中的属于方差小的, 比较分散的属于方差大的情况.
-
再从蓝色点与红色靶心区域的位置关系, 靠近红色靶心的属于偏差较小的情况, 远离靶心的属于偏差较大的情况
泛化误差:
图3-9 泛化误差表达式方差:
图3-10 方差表达式偏差:
图3-11 偏差表达式f(x;D):由训练集D学得的模型f对x的预测输出
f¯(x):模型f对x的期望预测输出
一般来说,我们希望方差和偏差都尽可能小,但实际上方差和偏差有冲突,称为偏差-方差窘境 (bias-variance dilemma)
-
给定一个学习任务, 在训练初期, 由于训练不足, 学习器的拟合能力不够强, 训练集扰动能力不足以使学习器显著变化,也就是欠拟合的情况,此时偏差影响最大。
-
随着训练程度的加深, 学习器的拟合能力逐渐增强, 训练数据的扰动也能够渐渐被学习器学到,此时方差逐渐主导了泛化错误率。
-
充分训练后, 学习器的拟合能力已非常强, 训练数据的轻微扰动都会导致学习器发生显著变化, 当训练数据自身的、非全局的特性被学习器学到了, 则将发生过拟合。
3-6 均方误差(MSE)和均方根误差(RMSE)和平均绝对误差(MAE)
(1)均方误差MSE: Mean Squared Error
均方误差是指参数估计值与参数真值之差平方的期望值; 回归任务最常用的评估指标,MSE可以评价数据的变化程度,MSE的值越小,说明预测模型描述实验数据具有更好的精确度。如图3-12所示:
图3-12 均方误差MSE(2)均方根误差(RMSE)
均方误差:均方根误差是均方误差的算术平方根。如图3-13所示:
图3-13 均方根误差RMSE
(3)平均绝对误差(MAE: Mean Absolute Error)
平均绝对误差是绝对误差的平均值,平均绝对误差能更好地反映预测值误差的实际情况。如图3-14所示:
图3-14 平均绝对误差MAEfi表示预测值,yi表示真实值
总结
这里介绍了一下用于评估模型的一些常见的方法,更多的评估方案都是根据自己实际项目需求来自己定制,欢迎对此感兴趣的小伙伴一起学习探讨。最近会写一些机器学习相关的内容,都是自己的笔记,如果有什么错误,还请大家指出来,非常感谢。