文章目录
一、WEEK 10:应用机器学习的建议(Advice for Applying Machine Learning)
10 - 1 - Deciding What to Try Next
本节主要介绍改进算法的思路
假如你在开发一个机器学习系统,或者想试着改进一个机器学习系统的性能,你应如何决定接下来应该选择哪条道路?使用预测房价的学习例子,假如你已经完成了正则化线性回归,也就是最小化代价函数J的值,假如,在你得到你的学习参数以后,如果你要将你的假设函数放到一组新的房屋样本上进行测试,假如说你发现在预测房价时产生了巨大的误差,现在你的问题是要想改进这个算法,接下来应该怎么办?
获得更多的训练实例——通常是有效的,但代价较大,下面的方法也可能有效,可考虑先采用下面的几种方法。
1.尝试减少特征的数量
2.尝试获得更多的特征
3.尝试增加多项式特征
4.尝试减少正则化程度λ
5.尝试增加正则化程度λ
我们不应该随机选择上面的某种方法来改进我们的算法,而是运用一些机器学习诊断法来帮助我们知道上面哪些方法对我们的算法是有效的。
10 - 2 - Evaluating a Hypothesis
本节主要介绍如何评估你的算法的假设函数的好坏
还记得前面提到的过拟合吗?如果你的假设函数完全拟合训练样本,那么训练误差就能最小化,但是在新的数据集上表现不好,所以如果认为训练误差最小化就是一个好的结果来判断假设函数的好坏这是行不通的,因为它可能过拟合。
如何判断一个假设函数是过拟合的呢?为了检验算法是否过拟合,我们将数据分成训练集和测试集,通常用70%的数据作为训练集,用剩下30%的数据作为测试集。很重要的一点是训练集和测试集均要含有各种类型的数据,通常我们要对数据进行“洗牌”,然后再分成训练集和测试集。模型在训练集上学习到参数后,在测试集上运用学习到的模型,通过计算测试集的模型误差来评估模型。
10 - 3 - Model Selection and Train_Validation_Test Sets
本节主要介绍模型选择和交叉验证
假设有十个模型可供选择,哪个模型是适合的呢?首先介绍三个数据集:训练集,验证集,测试集
训练集:训练模型最小化代价函数的参数,用来调整参数
验证集:通过训练我们可能得到不止一组的参数结果,验证集用于确定一组参数,选择具有最好性能的那一组超参数
测试集:训练集调整参数,验证集确定参数,测试集判断模型泛化能力。
三者的区别在上面我给的链接文章里写的很好,这里我截图贴出来:
交叉验证的概念:将原始数据划分,一部分用来训练,一部分用来评估模型。
交叉验证的优点:解决有效数据不足的问题。减少过拟合。
交叉验证的方法:
留出法,随机把原始数据分为训练集验证集和测试集。
K折交叉法,留出法只做一次分割,首先一定程度上减少了训练数据,其次数据划分也会影响最优模型的选取,因为数据的分布也被分割了,不同的划分可能会选取不同的最优模型。所以又了k折交叉法。利用不同的集合划分对模型做多组训练和测试。具体做法是把数据集划分成K份,取一份进行测试,剩余的K-1份训练,然后求平均。
假如我们有一组没有划分的数据:
第一步,不重复抽样将原始数据随机分为 k 份。
第二步,每一次挑选其中 1 份作为测试集,剩余 k-1 份作为训练集用于模型训练。
第三步,重复第二步 k 次,这样每个子集都有一次机会作为测试集,其余机会作为训练集。
在每个训练集上训练后得到一个模型,
用这个模型在相应的测试集上测试,计算并保存模型的评估指标,
第四步,计算 k 组测试结果的平均值作为模型精度的估计,并作为当前 k 折交叉验证下模型的性能指标。
10 - 4 - Diagnosing Bias vs. Variance
本节主要介绍偏差和方差的概念
为什么要介绍偏差和方差?因为它们跟模型的欠拟合过拟合密切相关。还记得上一节讲的验证集吗,当时有说验证集可以一定程度上减少过拟合,为什么呢?首先看下图:
欠拟合和过拟合的问题通常通过将训练误差和验证误差绘制在同一张表上进行分析。当训练集越来越小时,说明模型的拟合能力越来越强,有过拟合的风险,验证集是为了在多组超参中确定一组合适参数的,所以当模型训练误差越来越小时验证误差反而越来越大,告诉我们这组参数不是最合适的。
训练误差和验证集误差的曲线关系我们知道了,跟方差偏差又有什么关系?
我们来总结一下这张图,这张图的画法不是特殊的而是通用的,当我们训练一个模型的时候显然它的训练误差是越来越小越来越小越来越拟合,曲线是一个从高到低的过程;当我们验证模型的时候,模型随着训练学习到的参数逐渐从不合适(欠拟合)到合适到不合适(过拟合),所以是一个先降后升的曲线过程。
红色箭头部分,训练误差和验证误差几乎相近,模型此时训练不充分,欠拟合,欠拟合的模型偏差大
黄色箭头部分,训练误差和验证误差有一定的距离但相差不大,参数是相对合适的
蓝色箭头部分,验证误差远高于训练误差,说明此事模型过拟合,过拟合的模型方差大
10 - 5 - Regularization and Bias_Variance
本节介绍正则化参数的选择
还记得正则化是干嘛的吗?正则化是约束模型过拟合的惩罚系数。在训练过程中选择λ的值时也需要跟选择哪一组参数一样的考虑。模型训练会生成多组参数,验证集确定一组合适的参数。同理,正则化的参数也是要一个一个试出来的。我们选择一系列的想要测试的 λ 值,通常是 0-10之间的呈现2倍关系的值(如:0,0.01,0.02,0.04,0.08,0.15,0.32,0.64,1.28,2.56,5.12,10共12个)
选择λ的方法为:
1.使用训练集训练出12个不同程度正则化的模型
2.用12个模型分别对交叉验证集计算的出交叉验证误差
3.选择得出交叉验证误差最小的模型
4.运用步骤3中选出模型对测试集计算得出推广误差,我们也可以同时将训练集和交叉验证集模型的代价函数误差与λ的值绘制在一张图表上
上面是验证误差,下面是测试误差,横坐标是正则化参数。当参数越来越大时模型会逐渐欠拟合,训练误差会呈上升曲线;在到大合适点时,验证误差递减,越过合适点递增,仍是一个先降后升的曲线。可以总结出正则化参数和偏差方差的关系:
当训练误差与验证误差相似时,模型欠拟合,偏差大,正则化参数过大,应减小惩罚
当训练误差与验证误差相差不算太远时,模型差不多合适
当训练误差与验证误差相差较远时,模型过拟合,方差大,正则化参数过小,应加大惩罚。
10 - 6 - Learning Curves
使用学习曲线来判断某一个学习算法是否处于偏差、方差问题。学习曲线是将训练集误差和交叉验证集误差作为训练集实例数量(m)的函数绘制的图表。
10 - 7 - Deciding What to Do Next Revisited
- 获得更多的训练实例——解决高方差(过拟合)
- 尝试减少特征的数量——解决高方差(过拟合)
- 尝试增加正则化程度λ——解决高方差(过拟合)
- 尝试获得更多的特征——解决高偏差(欠拟合)
- 尝试增加多项式特征——解决高偏差(欠拟合)
- 尝试减少正则化程度λ——解决高偏差(欠拟合)
week10 课后习题
第1题
你训练一个学习算法,发现它在测试集上的误差很高。绘制学习曲线,并获得下图。算法是否存在高偏差、高方差或两者都不存在?
答案:高偏差
第2题
假设您已经实现了正则化逻辑回归来分类图像中的对象(即,还没有实现图像识别)。然而,当你在一组新的图像上检验你的模型时,你会发现它对新图像的预测有误差非常大。然而,你的假设在训练集上拟合的很好。以下哪个做法可以改善?选出所有正确项
答案:说明模型过拟合,解决过拟合1.增加样本2减少特征3增加正则化系数,选BC
第3题
假设您已经实现了正则化的逻辑来预测客户将在购物网站上购买哪些商品。然而,当你在一组新的客户身上测试你的模型时,你发现它在预测中的误差很大。此外,该模型在训练集上表现不佳。以下哪个做法可以改善?选出所有正确项
答案:模型欠拟合。解决欠拟合:增加样本,增加特征,减少正则化系数。选AB
第4题
以下哪项陈述是正确的?选出所有正确项
答案:AD
第5题
以下哪项陈述是正确的?选出所有正确项
答案:ABD.
二、WEEK11:机器学习系统的设计(Machine Learning System Design)
11 - 1 - Prioritizing What to Work On
主要说这一章讲什么,讲的是如何高效构建一个机器学习系统。
11 - 2 - Error Analysis
本节主要讲误差分析的概念
构建一个学习算法的推荐方法为:
- 从一个简单的能快速实现的算法开始,实现该算法并用交叉验证集数据测试这个算法
- 绘制学习曲线,决定是增加更多数据,或者添加更多特征,还是其他选择
- 进行误差分析:人工检查交叉验证集中我们算法中产生预测误差的实例,看看这些实例是否有某种系统化的趋势
11 - 3 - Error Metrics for Skewed Classes
本节主要介绍precision和recall
我们将算法预测的结果分成四种情况:经常区分不了这四个结果的表示,所以我的理解方法是,第二个字母表示预测的结果,P是预测为正,N是预测为负。第一个字符是预测结果的对不对,T是预测的对,F是预测的错。举个例子,FP:P-预测为正,F-预测的不对那么实际应是假——>预测为真,实际为假
- 正确肯定(True Positive,TP):预测为真,实际为真
- 正确否定(True Negative,TN):预测为假,实际为假
- 错误肯定(False Positive,FP):预测为真,实际为假
- 错误否定(False Negative,FN):预测为假,实际为真
查准率precision = TP/(TP+FP)
查全率recall = TP/(TP+FN)
11 - 4 - Trading Off Precision and Recall
上节介绍查准率和召回率是为了干什么呢?用来评估算法的。
不同的阈值会影响查准率和查全率的取值。将查全率与查准率的关系绘制成图表,曲线的形状根据数据的不同而不同:
一般查准率越高查全率越低。
因为要想查准率高我们需要设置一个较高的阈值,这里阈值指的是判断是否为正样本的阈值,比如判断是否为欺诈用户,一个判断标准是当月贷款的数目,把该属性的阈值设定的越高,过滤出的结果中为欺诈用户的可能性越高,但是可能就会漏掉一些贷款量较低的欺诈用户,从而导致查全率较低。
11 - 5 - Data For Machine Learning
许多不同的学习算法有时倾向于表现出非常相似的表现,这还取决于一些细节,但是真正能提高性能的,是你能够给一个算法大量的训练数据。像这样的结果,引起了一种在机器学习中的普遍共识:“取得成功的人不是拥有最好算法的人,而是拥有最多数据的人”。
WEEK11 课后习题
第1题
你正在研究一个垃圾邮件分类系统,准备使用正则化的逻辑回归。“垃圾邮件”是正类(y=1),“非垃圾邮件”是负类(y=0)。您已经训练了分类器,交叉验证集中有m=1000个示例。预测类与实际类的图表为:
分类器的召回是多少?
这个的表我没看懂……
第2题
假设一个庞大的数据集可以用来训练一个学习算法。当以下两个条件成立时,对大量数据进行训练可能会产生良好的性能。两个条件是哪两个?
答案:AC
第3题
查准率上升,召回率下降
D
A
第4题
假设您正在使用垃圾邮件分类器,其中垃圾邮件是正例(y=1),非垃圾邮件是反例(y=0)。您有一组电子邮件训练集,其中99%的电子邮件是非垃圾邮件,另1%是垃圾邮件。以下哪项陈述是正确的?选出所有正确项
BCD
A不对,precison和recall是负相关,一个高另一个就低
第5题
以下哪项陈述是正确的?选出所有正确项
BDE