Coursera机器学习(Andrew Ng)笔记:ML算法指导与系统设计

ML算法指导与系统设计

机器学习初学者,原本是写来自己看的,写的比较随意。难免有错误,还请大家批评指正!对其中不清楚的地方可以留言,我会及时更正修改

当机器学习的效果不理想时,可以尝试以下操作:
1 获取更多的训练数据样本
2 减少特征数量
3 增加一些额外的特征
4 多项式特征
5 增加或减小参数 λ
实际使用时,不能只随机使用一种方法,下面我们来探索一些方法来进行诊断,帮助进行选择上述方法。

评估假设函数

一个假设函数可能在训练集上误差很低,但在新的数据集上可能仍旧不准确(过拟合),我们可以把训练样本分成训练集和测试集(一般按7:3的比例)。使用这两个数据集的过程如下:
1 使用训练集进行最小化 Jtrain(Θ) 得到 Θ
2 计算测试集误差 Jtest(Θ)
-测试集误差-
1 对于线性回归: Jtest(Θ)=12mtestmtesti=1(hΘ(x(i)test)y(i)test)2
2 对于分类问题(又称作0/1误分类误差):

err(hΘ(x),y)={1if hΘ(x)0.5 and y=0 or hΘ(x)<0.5 and y=10otherwise

对于测试集的平均测试误差可以表示为:
TestError=1mtesti=1mtesterr(hΘ(x(i)test),y(i)test)

模型选择和训练/验证/测试集

为了选择一个更合适的模型,我们可以选择多个不同阶数的假设函数(例如 d=1,2,3... ),分别来看一看它的误差结果。
这里,我们还使用一个交叉验证集,即将训练样本分成3部分,分别为训练集、交叉验证集、测试集,一般按照6:2:2的比例进行分配,现在我们可以计算三个不同的误差值
1 使用不同阶数的假设函数在训练集上进行训练得到 Θ(d)
2 使用 Θ(d) 在交叉验证集上计算误差,得到使得误差最小的 d
3 估算泛化误差Jtest(Θ(d))

偏差Bias 和方差 Variance

学习算法的效果不理想,要么是偏差大,要么是方差大,对应的分别是欠拟合和过拟合。搞清楚偏差和方差的关系,可以帮助我们更好的找到算法的问题所在,有效改进算法。
训练集误差: Jtrain(θ)=12mmi=1(hθ(x(i))y(i))2
交叉验证误差: Jcv(θ)=12mcvm[cv]i=1(hθ(x(i)cv)y(i)cv)2
对于训练集来说,随着假设函数次数的增大,算法由欠拟合过渡到过拟合,误差减小。
对于测试集或交叉验证集来说,当假设函数次数很小或很大时,欠拟合或过拟合均造成交叉验证误差很大,而当次数是当时,交叉验证误差达到最小。
这里写图片描述
对应的,左边的这一端就是高偏差问题,右边的这一端就是高方差问题。

正则化与偏差/方差

在过拟合的情况下,我们来看一下 λ 对误差的影响。
λ 很小时,相当于没有进行正则化,依旧是过拟合的状态,此时,训练误差很小,而交叉验证误差很大。当 λ 很大时,惩罚过于严重,假设函数变成一条水平线,此时的训练误差和交叉验证误差都很大。
这里写图片描述

学习曲线

首先来看再给定假设函数次数的情况下,训练集大小与误差之间的关系
当训练集样本很小时,假设函数可以很容易的拟合的很好,训练误差也很小;当样本数量增大时,想让假设函数拟合的更好,就变得更加困难了,因此,训练误差会越来越大。
显然,当训练集样本数量很少时,泛化程度很差,交叉验证误差就很大。只有当训练集样本数量很大时,才能够更好的拟合数据,交叉验证误差较小。
这里写图片描述
考察高偏差的情况,当样本数量很大时,训练集误差和交叉验证误差都很高,此时增大训练样本来改善算法性能显然是没有意义的。
这里写图片描述
再来考察高方差的情况,当训练样本数量增大时,拟合变的越来越困难,训练误差增大,但总体来说还是很小。对于交叉验证误差,由于假设函数处于过拟合的状态,交叉验证误差会一直很大,当训练样本数量增大时,交叉验证误差呈递减趋势。高方差的一个主要特点是,当训练样本数量m很大时,训练误差和交叉验证误差有很大的差距。
总体上,随着m的增大,两个误差是逐渐靠近的,因此,对于高方差的情况,增加样本数量可能会有帮助。
这里写图片描述

如何选择有效的方法

1 获取更多的训练数据样本:高方差
2 减少特征数量:高方差
3 增加一些额外的特征:高偏差
4 增加多项式特征或次数:高偏差
5 减小参数 λ :高偏差
6 增大参数 λ :高方差

机器学习系统设计

推荐方法步骤

1 首先构建一个很简单的机器学习算法,保证能够快速实现它,即使结果不完美,也要运行一遍,并使用交叉验证集来检验数据
2 画出学习曲线,看算法是否存在高偏差或高方差,或者其他问题。分析之后,再来决定是否使用更多样本,更多特征或一些其他方法
3 误差分析:对验证集中造成较大误差的样本进行分析,寻找这些样本可能存在的规律,这个过称可能启发出一些新的思路和想法。在交叉验证集上进行误差分析

数值评估的重要性

如交叉验证错误率等误差度量值。设定某个实数来评估学习算法,并衡量她的表现

偏斜类问题Skewed Classes

使用合适的误差度量值,就是偏斜类问题。
-查准率precision和召回率recall-
希望检测的出现较少的类用来计算查准率和召回率
这里写图片描述

查准率与召回率之间的权衡

在很多应用中,我们希望能够保证查准率和召回率的相对平衡。
比如在逻辑回归的例子中,当 hθ(x)threshold 是,预测结果为1,当 hθ<threshold 时,预测结果为0。在之前的例子中, threshold=0.5 ,实际上,我们可以根据实际情况更改阈值。在癌症预测的例子中,阈值增大,会得到更高的查准率和更低的召回率;阈值减小,会得到更高的召回率和更低的查准率。
这里写图片描述
-F 值-
F值可以用来作为对查准率和召回率平衡的一个度量,一般也叫做F1值,其计算公式如下

F1=2PRP+R

F值越大,说明查准率和召回率的平衡性越好

机器学习中的数据

一个较大的训练集可以帮助提高学习算法的性能,但在特征信息不足等情况下,再多的训练集也没用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值