首页 > 编程知识 正文

机器学习python,机器学习过程

时间:2023-05-06 09:46:53 阅读:258866 作者:1098

机器学习笔记——学习曲线的绘制 为何要绘制学习曲线学习曲线高偏差(bias)的情况高方差(variance)情况 重点总结高方差(high variance)高偏差(high bias)如何改变 λ 对拟合函数的影响 来看看在神经网络上的应用

为何要绘制学习曲线

如何你要检查算法运行是否正常或者希望优化算法的表现那么就需要一款工具来实现,学习曲线就是一个很好的工具。
同样的,使用学习曲线可以检查出算法是处于偏差问题还是方差问题,或者是二者皆有!

学习曲线

先来看看数据样本数量与误差之间的关系,通过下图看一下:

在右侧,可以看到,当样本数量很小的时候,很容易就可以将其拟合出来了,误差也很小,但是得到的拟合函数的泛化能力很弱。所以:
当 m ≈ low 时,J(train)θ ≈ 0 ,但是 J(cv)θ ≈ high;

在右侧,可以看到,当样本数量很大的时候,很难就可以将其拟合出来了,误差也很大,但是得到的拟合函数的泛化能力相对增强。所以:
当 m ≈ high 时,J(train)θ ⬆ ,但是 J(cv)θ ⬇;

这样就获得左侧学习曲线的样子。

高偏差(bias)的情况

直接看图:

解释:
在高偏差的时候,随着样本数量的增大,J(train)θ是逐渐增大的,可以这么理解,一条直线拟合很少的数据时,效果还可以,但是拟合较多的数据时,就不能很好的兼顾拟合效果了,但是随着要拟合数据的增加,拟合效果其实并没有多大的改变;
再来看J(cv)θ,随着样本数量的增大,J(cv)θ是逐渐减小的,可以这么理解,一条直线拟合很少的数据时,效果还可以,但是这个直线的泛化能力很差,所以J(cv)θ很大,但是拟合较多的数据时,这条直线已经在尽可能地拟合较多的数据点了,所以这条直线的泛化能力是相对增大的,但是随着要拟合数据的增加,拟合效果其实并没有多大的改变,所以他的泛化能力也就相对没有多大变化了。

重点来了
当拟合函数处于高偏差的时候,继续的增大样本数据量是无意义的!

高方差(variance)情况

直接看图:

在高方差的情况下,随着样本数量的增大,J(train)θ是逐渐增大的,可以这么理解,一条曲线拟合很少的数据时,效果还可以,但是拟合较多的数据时,虽然可以,但是要不断地提高多项式的次数,所以现有的多项式曲线就不能很好的兼顾拟合效果了,所以随着要拟合数据的增加,J(train)θ是逐渐增大的;

来看J(cv)θ,因为是高偏差情况,J(cv)θ本身就很大,随着样本数量的增大,J(cv)θ是逐渐减小的,可以参考“”直线的“”理解,曲线拟合很少的数据时,效果还可以,但是这个曲线的泛化能力很差,所以J(cv)θ很大,但是拟合较多的数据时,这条曲线已经在尽可能地拟合较多的数据点了,所以这条曲线的泛化能力是相对增大的,所以随着要拟合数据的增加,J(cv)θ是逐渐下降的,所以他的泛化能力是相对变好的。

重点来了
当拟合函数处于高方差的时候,继续的增大样本数据量是有意义的!

重点总结


不同的做法对应不同的问题:

高方差(high variance)

(1)增加样本数量
(2)减少特征

高偏差(high bias)

(1)增加样本特征
(2)增加高次多项式

如何改变 λ 对拟合函数的影响

(1)λ⬆ 解决高方差(high variance)的问题
(2)λ⬇ 解决高偏差(high bias)的问题

图片来源参考这里:机器学习笔记——正则化(Regularization)对偏差(bias)和方差(variance)的影响

到了这里基本对学习曲线的使用就有了更清晰的认识了。

来看看在神经网络上的应用

直接上图:

(1)相对小的神经网络模型容易出现“欠拟合 under fit” 的情况,但是优点是计算量小;
(2)相对大的神经网络模型容易出现“过拟合 over fit” 的情况,但是优点是预测准确;可是计算量很大;
(3)解决“过拟合”的问题,可以使用正则化的方法,优化过拟合的情况;

(4)如何选择隐含层的的数量?
这个可以参考之前将的将数据集划分为训练集、测试集、交叉验证集的方法,然后选择不同隐含层的神经网络模型(隐含层=“1”、“2”、“3”.。。。),然后分别计算出不同隐含数量对应的J(cv)θ,最后选择误差最小的隐含层数量即可。

PS:此学习笔记为学习斯坦福健康的台灯机器学习视频笔记。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。