Press "Enter" to skip to content

机器学习法术 | 5个法宝应对机器学习领域重大问题之数据过拟合问题

前言:在数据可视化过程中,我们常常会遇见数据欠拟合和数据过拟合问题,其中主要原因分别是由于模型缺少数据依赖和过度数据依赖问题,无法完成后续的分类和预测问题。因此我给大家提供5个有效的方法来专门解决数据过拟合问题。

 

关于模型的复杂性,偏差越小,方差越大。后面会用到这个概念识别过拟合和欠拟合问题。

 

偏差的定义:

 

偏差指预测模型在平均预测值后对训练数据的接近程度。算法具有较高的偏差时,有助于快速学习和理解,但是灵活性会低很多,也对于复杂问题的预测无能为力,所以无法解释算法偏差,此时模型获得更多的训练数据也没有作用了。

 

方差的定义:

 

方差指表明何时数据值会发生变化,或者使用不同数据的数量分别对同一模型活不同模型的预测值有多大的影响。理想时,如果从一个训练数据集变为另一个数据集,模型的方差高,模型预测值受数据值影响大。

 

 

一、0x01交叉验证法器

 

交叉验证法器可以实现快速解决问题能力。交叉验证是指重复的交叉使用数据,进行数据样本切分,然后组合成为多片训练集和测试集,用训练集来训练模型,然后用相应的测试集评估模型的预测情况。

 

在标准的K折交叉验证中,先将数据划分为K个样本,然后选择一个样本作为测试集,用剩下所有的样本训练数据集。实际上,就是把实验重复做K次,每次都选不同的样本作为测试集,剩下的部分作为训练集,最后把K个实验结果平均化得到做好的结果 。

 

 

二、0x02增加训练法器

 

增加训练法器可以实现第二次解决问题能力。很多时候我们最根本的原因就是不因为没有足够多的数据,而是没有使用更多的数据进行训练,使用更多的数据进行训练可以帮助算法更好的检测信息。

 

在检测儿童的早期身高与年龄的模型中,选择更多学校的学生样本将有助于训练模型。同时,我们应该增加干净的数据,而不是噪数据,否则会使我们的这种方法失效。

 

 

三、0x03删除特征法器

 

删除特征法器可以实现第三中解决问题的能力。由于 许多算法的内部都会提供特征选择,帮助我们提前筛选已经确定的有效的特征。如果没有,那幺原理就是就可以通过删除不相关的特征提高模型的通用性,增加每个特征与模型的相关性。同时,机器学习领域提供特征选择算法,就像我们使用一般机器模型一样简单。

 

递归特征消除(RFE)方法是一种特征选择方法。它的工作原理是递归地删除属性,并在那些保留的属性上建立一个模型。它使用模型精度来确定哪些属性(和属性组合)对预测目标属性贡献最大。

 

 

Python代码实战RFE算法:

 

# 递归特征消除
from sklearn import datasets
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
# 导入鸢尾花数据集(经典)
dataset = datasets.load_iris()
# 创建用于评估属性子集的基本分类器
model = LogisticRegression()
# 创建RFE模型并选择3个属性
rfe = RFE(model, 3)
rfe = rfe.fit(dataset.data, dataset.target)
# 得到3个选择的属性
print(rfe.support_)
print(rfe.ranking_)

 

四、0x04正则化法器

 

正则化法器可以实现人为的迫使模型更加简单的一种技术。这种技术取决于用户正在使用的学习模型。

在决策树中,可以修建决策树。
在神经网络中,可以使用Drpout。
在成本函数中,可以使用惩罚参数。

通常,正则化也是超参数,代表与交叉验证同源,所以可以在交叉验证中调整。

 

 

五、0x02迭代停止法器

 

迭代停止,是指在迭代第训练学习算法或模型时,我们可以测量模型每次迭代执行的程度。当达到一定次数的迭代时,新的迭代开始改进模型,相当于产生了质变,学习神经网络的可能比较熟悉。

 

重点来了,然后在此之后,模型的预测能力和防过拟合能力会随着训练数据而开始变化,提前停止是在学习算法通过此处时停止过程。这可能比较难以理解,因为深入的要涉及到深度学习基础。

 

 

六、总结

 

通过一系列的学习,可以把握机器学习的基础,但是还是要回归书籍做到系统的思考。

 

资料链接:

 

1.​​ ​https://machinelearningmastery.com/k-fold-cross-validation/​

 

2.​ ​https://www.baeldung.com/cs/k-fold-cross-validation​

 

3.​ ​https://www.geeksforgeeks.org/cross-validation-in-r-programming/​

 

4.​ ​https://machinelearningmastery.com/feature-selection-in-python-with-scikit-learn/​

 

5.​ ​https://scikit-learn.org/stable/modules/feature_selection.html​

 

6.​ ​https://optuna.org/​

 

7.​ ​https://machinelearningmastery.com/difference-between-a-parameter-and-a-hyperparameter/​

 

8.​ ​https://www.geeksforgeeks.org/regularization-in-machine-learning/​

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注