《machine learning》10 机器学习算法诊断

本文介绍了机器学习中如何诊断和改进模型。内容包括正确选择特征、评估假设函数、训练集与测试集的划分、偏差与方差的诊断、正则化参数对模型的影响以及学习曲线的运用。通过训练误差、交叉验证误差和测试误差来判断模型的欠拟合或过拟合,并提供相应的解决方案,如增加训练样本、调整特征数量、选择合适的正则化参数等。
摘要由CSDN通过智能技术生成

10.1 正确选择

如果预测出现很大偏差,需要尝试去:

  1. 收集更多的训练样本
  2. 尝试使用更少的特征
  3. 尝试使用更多的特征
  4. 增加特征的多项式,例如增加 x 1 2 , x 2 2 , x 1 x 2 , e t c . x^2_1,x^2_2,x_1x_2,etc. x12,x22,x1x2,etc.
  5. 尝试增大或减小正则化参数 λ \lambda λ

诊断法:

是一种测试方法,通过测试可以了解算法问题所在,如何改进

10.2 评估假设函数

将样本分为训练集 m m m和测试集 m t e s t m_{test} mtest 7:3(样本需随机分布)

线性回归算法举例:

  1. 从训练集中学习出模型参数 θ \theta θ(最小化损失函数 J ( θ ) J(\theta) J(θ)
  2. 将得到的 θ \theta θ带入测试集计算出测试误差 J t e s t ( θ ) = 1 2 m t e s t ∑ i = 1 m t e s t ( h θ ( x t e s t ( i ) ) − y t e s t ( i ) ) 2 J_{test}(\theta)={1\over 2m_{test}}\sum_{i=1}^{m_{test}}(h_\theta(x_{test}^{(i)})-y_{test}^{(i)})^2 Jtest(θ)=2mtest1i=1mtest(hθ(xtest(i))ytest(i))2

逻辑回归算法举例:

  1. 从训练集中学习出模型参数 θ \theta θ(最小化损失函数 J ( θ ) J(\theta) J(θ)

  2. 将得到的 θ \theta θ带入测试集计算出测试误差 J t e s t ( θ ) = 1 2 m t e s t ∑ i = 1 m t e s t [ y t e s t ( i ) l o g h θ ( x t e s t ( i ) ) + ( 1 − y t e s t ( i ) ) l o g h θ ( x t e s t ( i ) ) ] J_{test}(\theta)={1\over 2m_{test}}\sum_{i=1}^{m_{test}}[y_{test}^{(i)}logh_\theta(x_{test}^{(i)})+(1-y_{test}^{(i)})logh_\theta(x_{test}^{(i)})] Jtest(θ)=2mtest1i=1mtest[ytest(i)loghθ(xtest(i))+(1ytest(i))loghθ(xtest(i))]

  3. 或者使用错误分类误差(0/1错误分类误差)

    截屏2020-10-26 下午12.22.44

10.3 训练集、验证集、测试集

训练集误差不能体现模型对样本拟合情况的好坏

到底选择几次多项式的假设函数呢?设 d d d为最高次数

  1. 使用算法求不不同的多项式,得出不同的 Θ \Theta Θ参数矩阵
  2. 引入最高次 d d d这一参数使用验证集对不同的参数矩阵的假设函数进行评估
  3. 再使用测试集验证泛化能力。

训练集 m m m、交叉验证集 m c v m_{cv} mcv、测试集 m t e s t m_{test} mtest:6:2:2

训练误差training error:

J t r a i n ( θ ) = 1 2 m ∑ i − 1 m ( h θ ) ( x ( i ) − y ( i ) ) 2 J_{train}(\theta)={1\over 2m}\sum_{i-1}^m(h_\theta)(x^{(i)}-y^{(i)})^2 Jtrain(θ)=2m1i1m(hθ)(x(i)y(i))2

交叉验证误差cross validation error:

J c v ( θ ) = 1 2 m ∑ i = 1 m c v ( h θ ( x c v ( i ) ) − y c v ( i ) ) 2 J_{cv}(\theta)={1\over 2m}\sum^{m_{cv}}_{i=1}(h_\theta(x_{cv}^{(i)})-y_{cv}^{(i)})^2 Jcv(θ)=2m1i=1mcv(hθ(xcv(i))ycv(i))2

测试误差test error:

J t e s t ( θ ) = 1 2 m t e s t ∑ i = 1 m t e s t ( h θ ( x t e s t ( i ) ) − y t e s t ( i ) ) 2 J_{test}(\theta)={1\over 2m_{test}}\sum_{i=1}^{m_{test}}(h_\theta(x_{test}^{(i)})-y_{test}^{(i)})^2 Jtest(θ)=2mtest1i=1mtest(hθ(xtest(i))ytest(i))2

10.4 诊断偏差(欠拟合)方差(过拟合)

高偏差问题——欠拟合——训练误差和交叉验证误差(比训练误差大点)都很大

高方差问题——过拟合——训练误差极小,交叉验证误差很大

截屏2020-10-27 下午10.47.56

10.5 正则化参数对偏差和方差的影响

  • 选择不同的正则化参数 λ \lambda λ
  • 首先 λ \lambda λ从0开始到0.01再以两倍递增,算出不同 λ \lambda λ值下的误差函数 J ( θ ) J(\theta) J(θ)
  • 再通过最小误差函数值 m i n J ( θ ) minJ(\theta) minJ(θ)得出某个参数向量 Θ ( i ) \Theta^{(i)} Θ(i)
  • 再使用交叉验证评估不同 λ \lambda λ值在交叉验证集下的误差平方和
  • 选择这些 λ \lambda λ值不同的模型中交叉验证集误差最小的
  • 最后验证所选出来 λ \lambda λ值对应的参数向量 Θ ( i ) \Theta^{(i)} Θ(i)在测试集中的表现
截屏2020-10-27 下午11.22.22

当正则化参数 λ \lambda λ过大时,训练误差会很大,当 λ \lambda λ值很小时,训练误差很小

当正则化参数 λ \lambda λ过大时,交叉验证误差会很大(欠拟合高偏差),当 λ \lambda λ值很小时,交叉验证误差也会很大(过拟合高方差)

注意:这里误差函数有正则化项,训练误差函数和交叉验证函数没设正则化项。

截屏2020-10-27 下午11.30.16

10.6 学习曲线(诊断)

在假设函数次数一定时,随着训练样本集数量的增多,训练平均误差会逐渐增大。交叉验证平均误差会随着训练样本数量增多而逐渐减小。

截屏2020-10-27 下午11.55.54

当模型过于简单时平均误差曲线:(高偏差问题)

模型过于简单处于高偏差问题时,增加训练样本也没用

截屏2020-10-28 下午10.12.29

当模型过于复杂时的平均误差曲线:(高方差问题)

训练误差和交叉验证误差有很大一段距离

当模型过于复杂处于高方差问题时,增加训练数据集会使训练误差和验证误差接近,对改进算法有帮助。

截屏2020-10-29 下午6.42.39

10.7 判断改进方法

  1. 收集更多的训练样本数量——解决高方差问题
  2. 尝试使用更少的特征数量——解决高方差问题
  3. 尝试使用更多的特征数量——解决高偏差问题
  4. 增加特征的多项式,例如增加 x 1 2 , x 2 2 , x 1 x 2 , e t c . x^2_1,x^2_2,x_1x_2,etc. x12,x22,x1x2,etc.——解决高偏差问题
  5. 尝试增大正则化参数 λ \lambda λ值——解决高方差问题
  6. 尝试减小正则化参数 λ \lambda λ值——解决高偏差问题

使用大型神经网络更精准,如果出现了过拟合可以通过增大 λ \lambda λ值改善

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值