欠拟合、过拟合的解决办法?

欠拟合解决方法:

1)添加其他特征项,有时候我们模型出现欠拟合的时候是因为特征项不够导致的,可以添加其他特征项来很好地解决。例如,“组合”、“泛化”、“相关性”三类特征是特征添加的重要手段,无论在什么场景,都可以照葫芦画瓢,总会得到意想不到的效果。除上面的特征之外,“上下文特征”、“平台特征”等等,都可以作为特征添加的首选项。

2)添加多项式特征,这个在机器学习算法里面用的很普遍,例如将线性模型通过添加二次项或者三次项使模型泛化能力更强。例如上面的图片的例子。

3)减少正则化参数,正则化的目的是用来防止过拟合的,但是现在模型出现了欠拟合,则需要减少正则化参数。

过拟合解决办法:

1)重新清洗数据,导致过拟合的一个原因也有可能是数据不纯导致的,如果出现了过拟合就需要我们重新清洗数据。

2)增大数据的训练量,还有一个原因就是我们用于训练的数据量太小导致的,训练数据占总数据的比例过小。

3)采用正则化方法。正则化方法包括L0正则、L1正则和L2正则,而正则一般是在目标函数之后加上对于的范数。但是在机器学习中一般使用L2正则,下面看具体的原因。

L0范数是指向量中非0的元素的个数。L1范数是指向量中各个元素绝对值之和,也叫“稀疏规则算子”(Lasso regularization)。两者都可以实现稀疏性,既然L0可以实现稀疏,为什么不用L0,而要用L1呢?个人理解一是因为L0范数很难优化求解(NP难问题),二是L1范数是L0范数的最优凸近似,而且它比L0范数要容易优化求解。所以大家才把目光和万千宠爱转于L1范数。

L2范数是指向量各元素的平方和然后求平方根。可以使得W的每个元素都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0。L2正则项起到使得参数w变小加剧的效果,但是为什么可以防止过拟合呢?一个通俗的理解便是:更小的参数值w意味着模型的复杂度更低,对训练数据的拟合刚刚好(奥卡姆剃刀),不会过分拟合训练数据,从而使得不会过拟合,以提高模型的泛化能力。还有就是看到有人说L2范数有助于处理 condition number不好的情况下矩阵求逆很困难的问题(具体这儿我也不是太理解)。

4)采用dropout方法。这个方法在神经网络里面很常用。dropout方法是ImageNet中提出的一种方法,通俗一点讲就是dropout方法在训练的时候让神经元以一定的概率不工作。

过拟合欠拟合是机器学习中常见的问题,可以通过以下方法来解决: 过拟合(Overfitting):模型在训练集上表现良好,但在测试集或新数据上表现不佳。 1. 数据集扩充:增加更多的训练数据可以减少模型过拟合的风险,通过收集更多样本或者使用数据增强技术(如翻转、旋转、裁剪等)来生成更多的训练样本。 2. 正则化(Regularization):正则化是一种通过约束模型参数来防止过拟合的方法。常见的正则化技术包括L1正则化和L2正则化,它们分别通过参数的绝对值和平方和来惩罚模型复杂度,使得模型更加简单。 3. 特征选择:选择最相关的特征来训练模型,减少不相关或冗余特征的影响。可以使用特征选择算法(如相关系数、信息增益等)或者基于模型的特征选择方法(如LASSO回归)来进行特征选择。 欠拟合(Underfitting):模型无法很好地拟合训练集数据,无法捕捉到数据中的复杂关系。 1. 增加模型复杂度:如果模型太简单,无法拟合数据的复杂关系,可以尝试增加模型的复杂度,如增加神经网络的层数或神经元的个数,增加决策树的深度等。 2. 减少正则化:如果使用了正则化方法(如L1正则化或L2正则化),可以尝试减少正则化的程度,以降低对模型的约束,使其更加灵活。 3. 增加特征数量:如果模型无法捕捉到特征之间的非线性关系,可以尝试添加更多的特征,如特征的高次项、交互项等。 需要根据具体情况综合考虑这些方法,并进行实验调优,以找到最适合的解决办法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值