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

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\}为预测结果数据,则:

  • 均方误差(平方损失)MSE:回归任务中常用的性能度量
    M S E=\frac{1}{n} \sum_{i=1}^{n}\left(y_{i}-\hat{y}_{i}\right)^{2}
  • 均方根误差 (root mean squared error)RMSE:
    R M S E=\sqrt{MSE}=\sqrt{\frac{1}{n} \sum_{i=1}^{n}\left(y_{i}-\hat{y}_{i}\right)^{2}}
  • 平均绝对误差 (mean absolute error) MAE:
    M A E=\frac{1}{n} \sum_{i=1}^{n}\left|y_{i}-\hat{y}_{i}\right|
  • 均方根对数误差 (root mean squared logarithmic error) RMSLE:
    R M S L E=\sqrt{\frac{1}{n} \sum_{i=1}^{n}\left(\log \left(\hat{y}_{i}+1\right)-\log \left(y_{i}+1\right)\right)^{2}}
3.2 分类任务
  • 错误率:分类错误样本数占总样本数的比例。
  • 精度:分类正确样本数占总样本数的比例,精度 = 1 - 错误率。
  • 混淆矩阵:
    对于二分类问题,根据分类结果可以得到以下混淆矩阵:
真实情况 预测结果 -
- 正例 反例
正例 TP(真正例) FN(假反例)
反例 FP(假正例) TN(真反例)
  • 查准率:预测为正例的结果中,预测正确的占比
    P=\frac{TP}{TP+FP}
  • 查全率(召回率):真实正例中,预测正确的占比
    R=\frac{TP}{TP+FN}
  • P-R曲线(查准率-查全率曲线):查准率为纵轴,查全率为横轴
    P-R曲线与平衡点示意图

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

  • F1度量:直接用平衡点去度量有些简化,在实际评估中,更多的是用F1度量(基于查准率与查全率的调和平均\frac{1}{F 1}=\frac{1}{2} \cdot\left(\frac{1}{P}+\frac{1}{R}\right)
    F 1=\frac{2 \times P \times R}{P+R}=\frac{2 \times TP}{样本总数+TP-TN}
  • F_{\beta}度量:在实际应用中,可能对查全率与查准率重视程度不同,F_{\beta}是加权调和平均:\frac{1}{F_{\beta}}=\frac{1}{1+\beta^{2}} \cdot\left(\frac{1}{P}+\frac{\beta^{2}}{R}\right)F_{\beta}表达式如下:
    F_{\beta}=\frac{\left(1+\beta^{2}\right) \times P \times R}{\left(\beta^{2} \times P\right)+R}
    {\beta}>0代表查全率对查准率的重要性,当{\beta}=1则变为F1;{\beta}>1查全率更重要,{\beta}<1查准率更重要。
  • 宏F1(\operatorname{macro}-F1)度量:在实际应用中,可能会<1>对样本进行多次训练/测试、<2>对不同样本进行训练/测试、<3>多分类任务,对没两个类别组个成一个混淆矩阵 等。这些都会产生n个混淆矩阵,最终我们想根据这n个混淆矩阵去度量模型。所以有了以下表达式:
    \operatorname{macro}-F 1=\frac{2 \times \operatorname{macro}-P \times \operatorname{macro-R}}{\operatorname{macro}-P+\operatorname{macro}-R}
    其中:
    宏查准率(\operatorname{macro}-P
    \operatorname{macro}-P=\frac{1}{n} \sum_{i=1}^{n} P_{i}
    宏查全率(\operatorname{macro}-R
    \operatorname{macro}-R=\frac{1}{n} \sum_{i=1}^{n} R_{i}
  • 微F1(\operatorname{micro}-F1)度量:在宏F1计算中,先根据每个混淆矩阵计算其查全率与查准率,最后进行平均;我们也可以先对所有混淆矩阵求TP、FP、TN、FN的平均值,然后再进行求解,此时得到微F1(\operatorname{micro}-F1)度量:
    \operatorname{micro}-F 1=\frac{2 \times \operatorname{micro}-P \times \operatorname{micro}-R}{\operatorname{micro}-P+\operatorname{micro}-R}
    其中:
    "微查准率" (micro-P):
    \operatorname{micro}-P=\frac{\overline{T P}}{\overline{T P}+\overline{F P}}
    "微查全率" (micro-R):
    \operatorname{micro}-R=\frac{\overline{T P}}{\overline{T P}+\overline{F N}}
  • ROC曲线:纵轴为:真正例率(TPR),横轴为:假正例率(FPR)(这里可以做如下设想:预测结果是0-1的概率,则对于二分类问题,阈值越接近0,则FPR会逐渐增大,但是TPR也会增大)
    "真正例率" (TPR): 真实正例中,预测正确的占比(与查全率\召回率相同)
    \mathrm{TPR}=\frac{T P}{T P+F N}
    "假正例率" (FPR): 真实反例中,预测错误的占比(真实为反例,却预测成正例的占比)
    \mathrm{FPR}=\frac{F P}{T N+F P}
    ROC曲线与AUC示意图

    当模型A将B的ROC曲线完全包住,则模型A优于B;
    当两个模型有交集,则与坐标轴围成的右下角面积越大,则约优。
  • AUC:ROC曲线下方面积,面积越大,模型越好。理想目标:TPR=1,FPR=0,即上图a中(0,1)点,所以ROC曲线越靠拢(0,1)点,越偏离45度对角线越好。
  • 代价敏感错误率与代价曲线:在实际应用中,对一些类别的误判可能造成的后果是不同的。例如:在医学生,将患者误判为健康人,与将健康人误判为患者的代价是不同的。所以此时需要考虑不代价敏感错误率。令D^{+}D^{-}分别代表样本集D 的正子集和反子集,则"代价敏感" (cost-sensitive)错误率为:
    \begin{aligned} E(f ; D ; c o s t)=& \frac{1}{m}\left(\sum_{\boldsymbol{x}_{i} \in D^{+}} \mathbb{I}\left(f\left(\boldsymbol{x}_{i}\right) \neq y_{i}\right) \times \operatorname{cost}_{01}\right.\\ &+\sum_{\boldsymbol{x}_{i} \in D^{-}} \mathbb{I}\left(f\left(\boldsymbol{x}_{i}\right) \neq y_{i}\right) \times \cos t_{10} ) \end{aligned}
    其中,\cos t_{i j}表示将第i 类样本预测为第j 类样本的代价,m为总样本数。
    关于代价曲线这里不做太多介绍,有兴趣可以参考知乎上一篇帖子知乎上一篇帖子,分析的比较详细。这里只需要知道对于不同的分类错误,会有不同的代价,具体需根据实际情况进行设计。

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、方差与偏差

  • 方差(\operatorname{var}(\boldsymbol{x})):反映的是预测与真实结果之间的偏离程度,即反映了模型本身的拟合能力。
  • 偏差(\operatorname{bias}^{2}(\boldsymbol{x})):反映的是由于训练集的改变(样本量不变)所引起模型性能的变化。
  • 噪声(\varepsilon^{2}):反映的是问题本身的难度。
    通过推导(详见周志华老师《机器学习》P45页),可以得到模型的泛化误差为:
    E(f ; D)=\operatorname{bias}^{2}(\boldsymbol{x})+\operatorname{var}(\boldsymbol{x})+\varepsilon^{2}
  • 偏差一方差窘境:一般情况下,如果将模型学习的太好,则可能会出现过拟合,测试偏差将非常小,但是方差将很大;如果偏差大,则可能是欠拟合,此时由于模型还没有学习好,所以方差会比较小。下图是偏差与方差,以及泛化误差的示意图:
    泛化误差与偏差、方差关系示意图

    所以,在实际应用中,要似泛化误差足够小,则应该去平衡方差与偏差,不能只最求某个足够小。

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,423评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,147评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,019评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,443评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,535评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,798评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,941评论 3 407
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,704评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,152评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,494评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,629评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,295评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,901评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,742评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,978评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,333评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,499评论 2 348

推荐阅读更多精彩内容