分享

Stanford机器学习

 精诚至_金石开 2017-02-24

 第六周.学习曲线、机器学习系统的设计

Learning Curve and Machine Learning System Design

关键词

          学习曲线、偏差方差诊断法、误差分析、机器学习系统的数值评估、大数据原理

概要

         本周内容分为两讲:

         第一讲.Advice for applying machine learning,主要内容是关于偏差、方差以及学习曲线为代表的诊断法,为改善机器学习算法的决策提供依据;

         第二讲.Machine learning system design,主要内容是机器学习算法的数值评估标准:准确率(交叉验证集误差)、查准率precision、召回率recall以及F值,给出了机器学习系统的设计流程.

==============================第一讲==============================

=========                关于偏差、方差以及学习曲线为代表的诊断法         ==========

(一)模型选择Model selection

在评估假设函数时,我们习惯将整个样本按照6:2:2的比例分割:60%训练集training set20%交叉验证集cross validation set20%测试集test set,分别用于拟合假设函数、模型选择和预测。


三个集合对应的误差如下图所示(注意没有不使用正则化项):


基于以上划分,我们有模型选择的三个步骤:

step1.用测试集training set对多个模型(比如直线、二次曲线、三次曲线)进行训练;

step2.用交叉验证集cross validation set验证step1得到的多个假设函数,选择交叉验证集误差最小的模型;

step3.用测试集test setstep2选择的最优模型进行预测;



以线性回归为例,假设你利用线性回归模型最小化代价函数J(θ)求解得到一个假设函数h(x),如何判断假设函数对样本的拟合结果是好是坏,是不是说所有点都经过(代价函数J最小)一定是最理想的?

或者这样说,给你下图的样本点,你是选择直线、二次曲线、还是三次曲线......作为假设函数去拟合呢?



以下图为例,你的模型选取其实直接关系到最终的拟合结果

=======================================

欠拟合Underfit          ||  高偏差High bias

正常拟合Just right    ||  偏差和方差均较小

过拟合Overfit              ||   高方差High variance

=======================================


★★★以上问题只是模型选择过程中需要考虑的一点------多项式次数d,实际上,我们还会去考虑这样两个参数:正则化参数λ、样本量m.

下面我将从多项式次数d、正则化参数λ、样本量m这三个量与拟合结果之间的关系做一个简单的概括.


(二)偏差、方差、学习曲线Bias、Variance、Learning curve

1.特征量的度d

还是之前的例子,用二次曲线拟合,训练集和交叉验证集的误差可能都很小;但是你用一条直线去拟合,不管使用多高级的算法去减小代价函数,偏差仍然是很大的,这时候我们就说:多项式次数d过小,导致高偏差、欠拟合;类似的当用10次曲线去拟合,样本点都能经过,对应的代价函数(误差)为0,但是带入交叉验证集你会发现拟合很差,这时候我们说:多项式次数d过大,导致高方差、过拟合。

所以,多项式次数d与训练集、交叉验证集误差的关系如下图:


2.正则化参数λ

正则化参数我们在第三周有介绍到,正则化参数λ越大,对θ惩罚的越厉害,θ->0,假设函数是一条水平线,欠拟合、高偏差;正则化参数越小,相当于正则化的作用越弱,过拟合、高方差。关系如下图所示:


3.样本量m与学习曲线Learning curve

学习曲线是样本量与训练集、交叉验证集误差之间的关系,分为高偏差和高方差两种情况(欠拟合和过拟合)。

高偏差(欠拟合):

根据下图右部分分析有,通过增加样本量两者误差都很大,即m的增加对于算法的改进无益。


高方差(过拟合):

根据下图右部分分析有,通过增加样本量训练集样本拟合程度很好(过拟合),训练集误差很小,即m的增加对于算法的改进有一些帮助。


★★★(三)如何决策

综上所述,你会发现有这样的一个结论,就是:

训练集误差大、交叉验证集误差也大:欠拟合、高偏差、多项式次数d太小、λ太大;

训练集误差小、交叉验证集误差却很大:过拟合、高方差、多项式次数d太大、λ太下、样本量太少。

这就为我们改善机器学习算法提供了依据。



==============================第二讲==============================

=======                                     机器学习系统的设计                                         ======


(一)机器学习系统的设计流程

Step1.使用快速但不完美的算法实现;

Step2.画出学习曲线,分析偏差、方差,判断是否需要更多的数据、增加特征量....;

Step3.误差分析:人工检测错误、发现系统短处,来增加特征量以改进系统。


以垃圾邮件的分类为例:起初你可能找不到太多特征量,除了$、buy、discount等关键词,这时候你应该先快速实现它,然后用交叉验证集去检验,人工去检查出错的邮件的共同特征(比如你发现http超链接比较多等一开始你没想到的特征量);最后你就可以把这些特征量加进你的模型中去重新实验去优化。


(二)数值评估机器学习算法的标准

1.交叉验证集误差(accuracy)

这个很好想到,设计的拟合函数如果用交叉验证集检验误差很大,那么肯定不是一个很好的学习算法;

但,是不是说误差很低就一定是好的学习算法呢?举个例子,这个例子也叫斜偏类

某种癌症的患病率是0.50%,你设计的一个学习算法(综合考虑各种特征量最小化代价函数)得到交叉验证集准确率99.0%,但实际上有这样的一种预测---直接认为样本不发病(不管样本有怎样的特征量),它的交叉验证集准确率却有99.5%,这种预测是不是好的?显然并不是我们的目的。


所以评估学习算法优劣还有下面一个标准:尽可能高的查准率和召回率。

2.查准率、召回率与F值precision、recall、F score

查准率:你预测样本发病样本最后真发病的概率;

召回率:一个最终患病的样本,你之前也预测他患病的概率;

高的查准率意味着,我们在极为确定样本患病的情况下才告诉他患病(或者理解为不轻易预测他患病);

高的召回率意味着,样本有可能患病我们就告诉他(或者理解为普世关怀);

表达式如下图所示:



还是拿之前癌症的例子,你始终预测不患病y=0,召回率就为0,我们希望得到的学习算法是不仅有高的预测准确率,还要有尽可能高的查准率和召回率,所以这种简单的预测y=0的方法并不好。

查准率和召回率有时候不可兼得,所以需要权衡二者,基于二者的判断标准---F值。

F值给出了一个很好判断查准率和召回率的数值计算标准(评估度量值),计算公式见下图:


(三)大数据原理Large data rationale

大量数据往往能大幅度提高学习算法的最终性能,而不在于你是否使用更高级的求解算法等,所以有这样的一句话:

"It's not who has the best algorithm that wins.It's who has the most data."

当然要基于两点前提假设

1.假设样本的特征能够提供充足的信息进行预测;

你不可能指望只知道房子的面积来预测房价,不管你是不是房地产方面的专家;

2.假设样本能提供尽可能多的特征量;

特征量越多,越不容易出现欠拟合、高偏差的问题;



所以也有这样的结论成立:

1.数据量越大,高方差、过拟合问题越不可能发生;

2.特征量越多,高偏差、欠拟合问题越不可能发生;

================================结语==============================

    本周主要讲述了关于偏差、方差以及学习曲线为代表的诊断法和机器学习算法的数值评估标准:准确率、查准率、召回率以及F值,重点是如何根据训练集和交叉验证集误差的大小对系统的改进,或者说如何对机器学习系统做一个评估和改良。这一章的内容以经验性的内容为多,希望对后来的学习者能起到些许帮助。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多