机器学习-评估方法与性能度量


学习模型的泛化能力需要进行评估,现将主要的评估方法和性能度量总结如下

评估方法

留出法(hold-out)

将数据集D划分为互斥的两部分,一个作为训练集S,另一个作为测试集T,其中T的规模大约为D的1/5到1/3。该法的优点在于足够明了,缺点在于若令S较大,T较小,则使用T进行测试的结果可能不够准确;如果令T较大,S和D的规模会相差较大,用S训练得出的模型可能和用D训练得出的模型差别较大。一般的,往往不会单次使用留出法,而是多次随机划分S和T,将多次评估结果的平均值作为最终的评估结果。另外,为保证T和D的分布一致,可能需要分层采样。

交叉验证法(cross validation)

将数据集D划分为大小相似的k个互斥子集,然后进行k(通常取5、10,20)次评估,每次评估时,使用$D_i$子集作为测试集,剩余k-1个子集作为训练集,最终的评估结果为k次评估的平均值。通常该验证法会随机划分多次子集,最终结果取其平均值。交叉验证法相比留出法的优点是:能够保证所有样本都参与了训练和测试。

自助法(bootstrapping)

对具有m个样本的数据集D进行有放回随机抽取m次,得到一个新的数据集$D\prime$,将$D\prime$用作训练集,D $D\prime$(D中没有被抽到$D\prime$中的样本组成的集合)用作测试集。该法的优点在于避免留出法和交叉验证法由于训练集S和样本集D规模不同引发的偏差。显然,$D\prime$和D的分布情况不同,会导致偏差,通常数据集较小时使该法有用,数据量足够多时,留出法和交叉验证法更为常用。

评估度量指标

用于回归问题的度量方法有:

  • 均方误差:$E(f;D)= \frac{1}{m}\sum_{i=1}^m(f(x_i)-y_i)^2$

用于分类问题的度量方法有:

  • 错误率:$E(f;D)= \frac{1}{m}\sum_{i=1}^m \amalg (f(x_i) \neq y_i)$
  • 准确率:$acc(f;D)= \frac{1}{m}\sum_{i=1}^m \amalg (f(x_i) = y_i)=1-E(f;D)$

二分类问题的度量方法

用如下符号表示测试结果(课程中和书籍中的TNFP表示方式太绕,此处使用很好理解的“正负”的表示方式):

  • 正正:正例被判断为正例
  • 正负:正例被判断为负例
  • 负正:负例被判断为正例
  • 负负:负例被判断为负例

准确率为:$P=\frac{正正}{正正+负正}$,查全率为:$R=\frac{正正}{正正+正负}$,准确率表示的是预测为正例中真正正例的比例,查全率表示的是所有正例中被预测为正例的比例。准确率和查全率此消彼长,在实际应用中衡量取舍,如电商推荐类似产品看中准确率,找出谁是犯罪分子更看中查全率。通常用F1(准确率和查全率的调和平均数)度量综合准确率和查全率:
$$F1=\frac{1}{2}(\frac{1}{P}+\frac{1}{R})=\frac{2PR}{P+R}= \frac{2*正正}{总样本+正正-负负}$$
可加入参数$\beta$调整准确率和查全率的权重:
$$F_\beta=\frac{1}{1+\beta^2}(\frac{1}{P}+\frac{\beta^2}{R}) = \frac{(1+\beta)^2PR}{\beta^2P + R}$$
当$\beta$大于1时查全率有更大影响,当$\beta$小于1时,准确率有更大影响。

ROC和AUC

在二分类问题中,除了准确率和查全率,还可以使用TPR(True Positive Rate)和FPR(False Positive Rate)度量。其中:
$$TPR=\frac{正正}{正正+正负}$$
$$FPR=\frac{负正}{负正+负负}$$
即:TPR表示所有正例被正确预测为正例的比例(也就是查全率),FPR表示负例被错误的预测为正例的比例。不同于精确率和查全率,精确率和查全率此消彼长,如果想把尽可能多的甜西瓜挑出来(提高查全率),就不免会出现把更多的生瓜当甜瓜的情况(精确率下降),而TPR和FPR并不是此消彼长,而是同向变化。

该概念常应用于医学检测,假设某种疾病的判断标准为:如果检查结果大于某阈值,则认为患病,否则为不患病,TPR表示确诊率,FPR表示误诊率,当医生下结论非常谨慎时,TRP较高,同时也把更多的非患病者诊断为了患病者,即FPR也高了。将测试样本排序,最可能是正例的样本放到首位,最不可能是正例的样本放到末位,初始阈值设为最大,即所有的样本均预测为反例,此时TPR和FPR都是0,逐步降低阈值会得到多组TPR和FPR,当阈值降到最低,即所有的样本都被预测为正例,此时TPR和FPR都是1,以TPR为纵轴、FPR为横轴绘制的曲线叫做ROC(Receiver Operation Characteristic),大致如下图(实际情况中,由于阈值个数有限,曲线不会如下图这般平滑)所示:
ROC.png-12.3kB
可见,给定一组坐标,TPR较高而FPR较低为是更为理想的结果,可以用ROC曲线下方面积来度量,容易知道:面积越大,结果越是理想,该面积被称为AUC(Area Under ROC Curve)
$$AUC=\frac{1}{2}\sum_{i=1}^{m-1}(x_{i+1}-x_i)(y_{i+1} + y_i)$$

参考:
《机器学习工程师》网易云课堂出品
《机器学习》 周志华著
ROC曲线与AUC值

猜你喜欢

转载自www.cnblogs.com/zzy0471/p/9420878.html