【机器学习】如何快速找到模型算法中存在的问题

本文探讨了机器学习中的模型问题,包括训练集、验证集和测试集的划分,Bias和Variance的平衡,学习曲线的重要性,以及如何处理倾斜数据。通过理解这些概念,可以帮助优化模型性能,降低欠拟合和过拟合的风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

训练集、验证集和测试集

训练集(train sets)主要用于训练模型,调整参数,验证集(validation sets)用于进一步调参,而测试集(test sets)用于最后评估模型的精度。一般训练集、验证集和测试集的比例为60%,20%,20%。

Bias&Variance

我们的学习模型和真实值之间的误差主要来自三个方面:Bias,Variance和随机误差。其中随机误差,也叫噪声,是我们无法避免的。所以我们主要讨论Bias和Variance。
Bias通常是由于我们的模型欠拟合(underfit)造成的,而Variance通常是由于模型过拟合(Overfit)造成的。
下图是形象地表示出多项式的度与High Bias和High Variance的关系。(图来自Andrew Ng)
在这里插入图片描述
下图是正则化参数 λ \lambda λ与Bias/Variance之间的关系
在这里插入图片描述
注意:在计算 λ \lambda λ与误差之间的关系时,先用带有正则参数的损失函数 J ( θ ) J(\theta) J(θ)计算出 Θ \Theta Θ,然后将求出的 Θ \Theta Θ计算出不带正则的 J c v ( θ ) J_{cv}(\theta) Jcv(θ) J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ)

学习曲线(learning curve)

学习曲线(learning curve)是表示样本数目大小(m)与训练集误差( J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ))和验证集误差( J c v ( θ ) J_{cv}(\theta) Jcv(θ))之间的关系图。
当模型有high bias的问题时,如果样本数量很小,那么 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ)比较小, J c v ( θ ) J_{cv}(\theta) Jcv(θ)会较大,但是当样本数量增加后, J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ) J c v ( θ ) J_{cv}(\theta) Jcv(θ)会慢慢变得相近,但是都大于期望的误差。所以对于高偏差的模型,仅仅增加样本的数量对模型帮助不是很大。
在这里插入图片描述
当模型有high variance时,如果样本数量很小,那么 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ)比较小, J c v ( θ ) J_{cv}(\theta) Jcv(θ)会较大,当样本数量变大之后, J c v ( θ ) J_{cv}(\theta) Jcv(θ)会变小,而 J t r a i n ( θ ) J_{train}(\theta) Jtrain(θ)会变大,但 J t r a i n ( θ ) < J c v ( θ ) {J_{train}(\theta)}<{J_{cv}(\theta)} Jtrain(θ)<Jcv(θ),且两者之间有一些差距。对于high variance来说,增加样本数量可以帮助改善模型的准确度。
在这里插入图片描述

经验总结

下面总结了一些可以有效减小high bias或者high variance的方法:
在这里插入图片描述
对于神经网络来讲,如果隐藏单元或者隐藏层很少,即模型比较简单,可能会导致欠拟合,但是如果隐藏单元或者隐藏层很多,可能会导致过拟合。所以,对神经网络问题,一般来讲应设计神经网络应优先考虑3层网络(即有1个隐层)。一般地,靠增加隐层节点数来获得较低的误差,其训练效果要比增加隐层数更容易实现。
一般在写模型算法时,比较推荐的方法是:
1.首先花较少的时间完成一个简单的算法,并且在验证集上测试一下
2.画出学习曲线帮你决定你可以通过什么途径来减少误差。
3.误差分析:手动在验证集中检查那些被弄错了的样本,分析出哪些类型的的特征可能能帮助你有效减少误差。

倾斜数据(Skewed Data)

数据倾斜是指数据的分散度不够,导致大量的数据集中在某一类或者某几类中。对于这类数据,我们不能通过简单的准确度来评判模型的好坏,而是通过Precision和Recall两个维度来评判。
对于Precision和Recall的定义如下:
在这里插入图片描述
对于有些模型来讲,Precision变大,那么Recall就会变小,Precision变小,Recall就会变大,那么就需要在Precision和Recall中权衡。F1 分数(F1 score)是衡量的一个指标。具体的表示为:
F 1   S c o r e = 2 ∗ P r e c i s i o n ∗ R e c a l l P r e c i s i o n + R e c a l l F_1\space Score = 2*\frac{Precision*Recall}{Precision+Recall} F1 Score=2Precision+RecallPrecisionRecall
如果Precision和Recall都能很高就最好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值