机器学习-模型评估与选择

2019-06-09  本文已影响0人  田浩thao

1、前言

    对于相同的数据及问题,可以有不同的算法模型解决,那么如何评价不通算法的优劣,以及最终应该选择哪一种?针对这些问题,本文将做简单介绍。

2、常见术语

3、模型性能度量

3.1 回归任务

假设Y=\left\{y_{1}, y_{2}, \ldots, y_{n}\right\}为真实数据,\hat{Y}=\left\{\hat{y}_{1}, \hat{y}_{2}, \ldots, \hat{y}_{n}\right\}为预测结果数据,则:

3.2 分类任务
真实情况 预测结果 -
- 正例 反例
正例 TP(真正例) FN(假反例)
反例 FP(假正例) TN(真反例)

上图中A曲线将C曲线完全包住,则A优于C;
A与B有交点,则比较A与B平衡点(" 查准率=查全率"),所以A有于B

4、模型评估方法

  利用训练样本(“训练集”)之外的测试样本(“测试集”),对模型性能进行评估,将模型在测试集上的表现(“测试误差”)近似为模型的泛化能力(“泛化误差”)

4.1 留出法

  对样本进行分层采样,例如对于二分类样本中,正、反样本各有500个,留30%作为测试样本,则应该分别对正、反样本采样150个作为测试样本(分层采样)。
  利用不同的训练样本,其训练的模型也是有差异的,所以一般会采用多次留出法,最后对每次结果进行平均作为最终模型的评估结果。
  该方法中涉及留出一定比例的样本作为测试集,但是这个比例是无法计算的。留的太多,则训练的模型可能离真实模型比较远;留的太少,则评估结果可能不够准确。一般选择1/5-1/3比例的样本作为测试样本。

4.2 交叉验证

  交叉验证法通常称为“k折交叉验证”(“k-fold cross validation”),k最常见的取值为10,下图是10折交叉验证示意图:

10折交叉验证示意图
  交叉验证通常会对样本重复划分p次,每次进行k此交叉验证,例如:“10次10折交叉验证”。
留一法:交叉验证的特例,每次只留一个样本作为测试集,如果有m个样本,则k=m时变成了“留一法”。该方法对于样本量较大时的时间开销将非常大,在实际中应用较少。
4.3 自助法

  假设样本集D共有m个样本,则对D进行有放回采样m次,形成新的数据集D^{\prime},则D^{\prime}中一共有m个样本,但是这些样本中有一些是重复的,在样本集D中一直不被采到的概率为\left(1-\frac{1}{m}\right)^{m},取极限有:
\lim _{m \rightarrow \infty}\left(1-\frac{1}{m}\right)^{m} \mapsto \frac{1}{e} \approx 0.368
  利用D^{\prime}的m个样本作为训练集,其余没有被采样到的数据作为测试集,这样的测试结果称为“包为估计”。这种方法经常用在样本集较少的情况下,因为通过采样之后,数据集D^{\prime}的分布与原始D的分布将有区别,这将会产生估计误差,所以在实际应用中,如果样本足够多,则一般会采用留出法和交叉验证法。

5、方差与偏差

以上内容如有理解不当,请指出,谢谢!另,文章中有些内容来源于一些书籍或其他博客,这里就不一一列举,如有侵权,请与我联系删除。

上一篇 下一篇

猜你喜欢

热点阅读