作者:陈浩然,北大在读,个人博客:chrer.com
对于一个机器学习工程而言,我们可以选择的模型众多,就之前的章节,我们已经可以选择:
北大才女笔记:这样学习线性回归和梯度下降(上篇)
北大陈浩然笔记:特征缩放和泛化能力(下篇)
logistics判别与线性模型中的4个问题
全面总结机器学习项目和面试中几乎绕不开的决策树
神经网络精炼入门总结:出现缘由,多层感知机模型,前向传播,反向传播,避免局部最小
对于一个模型而言,我们也有很多模型参数需要人工选择,本章将对模型的评估选择和优化进行详细介绍。
在机器学习中,我们期望通过训练集来得到在新样本上表现的很好的学习器,找出潜在样本的普遍规律,在训练过程中,可能会出现两种情形:
可以通过下图来辅助理解:
过拟合与欠拟合
在机器学习中,我们尤其要预防过拟合的发生,但由于机器学习的问题常常是NP难甚至是NP完全的,而有效的算法必定是多项式时间内完成的,所以只要承认P=NP,就需要承认过拟合无法完全避免。
当然,P=NP是目前尚未证明或证伪的结论,我倾向于认为P!=NP。
对于测试样本x,其真实标记为y,数据集中的标记
, 机器学习算法输出的标记为
,算法输出的期望值
,则有以下定义:
其中E()代表求期望,有数学推导可知:
即总误差可以分解为方差、偏差与噪声之和。
从直观理解的角度上看:
我们评估一个算法好坏的时候经常使用错误率,即算法输出与实际标记不一致的数据所占的比例。
然而有时候,我们会关心更加细致的数据,例如进行疾病检查,我们更关心检查出病症的病人占总病人数目的多少,或者是检测出病症的病人有多少真的有疾病,于是引入查准率和查全率:
首先,根据算法输出和实际标记,可以将数据分为四类:
真实情况 预测结果 | 正 | 反 |
---|---|---|
正 | TP | FN |
反 | FP | TN |
表格中T和F分别代表True和False(表示算法的预测结果是否正确),P和N分别代表Positive和negative(表示数据本身实际的分类意义)。
查准率P和查全率R定义如下:
查准率表示了被输出为正例的样本中真的是正例的比例
查全率表示了所有的正例中被算法识别出来的比例
一般而言,参数有两种,一种是模型中的参数,由算法进行自动的优化;另一种是模型本身自带的参数,又称超参数
在机器学习中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。
例如,我们再进行线性回归时,可以选择很多种形式的函数,例如:
也就是说,我们要选定到底哪个形式的模型效果会比较好,为了得到最好的模型,我们将数据集分为三个部分。
其中训练集用于算法的训练,由此,我们可以得到很多个不同的模型,再使用交叉验证集分别测试每个模型的泛化能力,选择其中最优的模型。
最后,使用测试集来测试最优模型的泛化能力,为什么不直接使用上一步的交叉验证集呢?因为, 这个交叉验证集误差是我们通过对比选择出来的, 它在这个数据集上肯定是最优的, 相当于我们已经看到了这些数据, 用它来代表对未知数据的泛化能力显然不行。
在划分数据集的过程中,要保证数据集的划分尽可能保持数据分布的一致性,即使得它们独立同分布,数据集划分的方法一般而言有以下几种:
在前面,已经介绍过查准率和查全率,当想要评估一个模型的好坏时,便可以使用这两项指标。
实际上,除了一些很简单的任务外,查准率和查全率是无法两全的:
对于一个算法而言,其查准率和查全率关系如图所示:
有了这两项指标,一般按照如下原则比较不同模型:
值,
值大的模型较为优秀
值,引入
,其中参数
是对于查全率的重视程度。
上述叙述了当机器学习模型已经训练完成之后,我们该如何评估模型的好坏。
但是一般而言,机器学习模型的训练时间较长,在训练过程中,我们怎么样判断模型训练的状态和优劣呢?
之前说过,训练过程中的最容易出现的问题就是过拟合和欠拟合,下面介绍判断拟合状态的方法。
之前介绍过方差、偏差的概念以及他们的意义,在训练过程中,我们会得到训练集和测试集的总误差,通过这两个参数,我们可以判断出算法的拟合状态。
首先,无论是过拟合还是欠拟合,由于一个特定的函数对于更多的数据更难以拟合,但是对预测是有利的,所以训练集误差会增加,测试集误差会减少。
在线性回归、支持向量机等算法中,都会加入正则化项来防止过拟合,因为正则化项可以使得参数尽可能小。
例如该式中的
即为正则化项的参数,其值越大,越可以避免过拟合,但是可能会陷入欠拟合泥淖之中。
随着
的增大,训练集误差会持续升高(因为拟合程度逐渐减小),而测试集误差会先下降后上升,期间有最低点。
如图,
较小时,会发生过拟合,所以测试集误差会很大,
较大时,会发生欠拟合,所以测试集误差也会很大。
过拟合与欠拟合
显然,选择的特性越多,模型越复杂。例如一个普通的线性回归,我们就可以选择:
模型越复杂,学习能力越强,故训练集误差越小。但是对于测试集误差,当它减少到一定程度时,模型可能因为过于复杂而出现过拟合现象,误差反而增大。
如果我们已经发现当前算法效果并不好,会试图对算法进行一些优化,例如:加更多的特征,增加数据集,增大正则化项等,下表列举了常见的措施和应对情况。
措施 | 应对情形 |
---|---|
搜集更多的数据 | 过拟合,高方差 |
使用更少的特征 | 过拟合,高方差 |
增加额外的特征 | 欠拟合,高偏差 |
增加多项式特征 | 欠拟合,高偏差 |
减小λ的值 | 欠拟合,高偏差 |
增加λ的值 | 过拟合,高方差 |
本文分享自 程序员郭震zhenguo 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!