RF 和 DT 过拟合

数据挖掘 Python 随机森林 决策树 预测重要性
2022-02-24 13:31:52

我是机器学习的新手,我从 Kaggle 的一些课程开始。在那里,我学会了如何使用DecisionTreeRegressor()RandomForestRegressor()sklearn.


但是,我无法真正理解如何验证我的解释变量不会过度拟合模型。例如,课程包括使用平均绝对误差进行评估。MAE 和 MRSE 可以评估我的决策树深度是否最佳,但如果我的解释数据甚至相关,则不能。


我来自经济学,所以我习惯于使用诊断或R2. 有没有相当于R2基准来确定我的解释变量是否过度拟合我的模型?

3个回答

我认为您可以执行预测变量重要性测试,看看哪些变量解释得最多。

有一个名为Boruta的包,您可以通过链接在 python 中实现。

您可以消除高度相关的变量。例如,如果您将年龄作为目标变量,并且将 DOB 作为特征,那么构建模型就没有任何意义。因此,您需要确保消除与目标变量高度相关的变量。

在我的场景中,我有以下可视化

预测器重要性

如您所见,这 2 个变量(用红色短划线加下划线)与目标变量高度相关,在删除这些变量之前,MAE 为 0.9(约),在删除这些特征(向后逐步消除)后,MAE 为 3.5(约)但那是实际的错误。目前正在努力获取一些外部特征来解释数据并提高准确性。每次都不是关于模型的准确性/错误率,而是关于我们的模型可以泛化到什么程度以及我们的模型应该有多健壮。

为了检查数据是否过拟合,然后我尝试通过取这两个变量来测试它并尝试建模,MAE 是 1.6(大约),由此我们可以理解这两个变量解释得最多。

因此,尝试应用并查看特征如何与目标变量相关联。

用于解决决策树中过度拟合的方法之一称为修剪,这是在初始训练完成后完成的。在剪枝中,您修剪树的分支,即从叶节点开始移除决策节点,从而不影响整体准确性。这是通过将实际训练集分成两组来完成的:训练数据集 D 和验证数据集 V。使用分离的训练数据集 D 准备决策树。然后继续相应地修剪树以优化决策树的准确性验证数据集,V。

您可以浏览此链接,了解如何通过调整参数来避免过度拟合。

是的,该基准称为验证数据。这个想法是将您的数据拆分为一些训练数据,这是您将要适合您的模型以估计其中的参数(并使它们学习)和一些验证数据,这是您要使用的数据用于评估您的模型。

您可以做的是为您想要使用的不同模型计算验证数据(模型尚未经过训练)的误差,并且您希望保持模型具有最低验证误差。

我认为您要问的是您的变量是否重要。没有任何问题,因为变量过度拟合模型,但是您可以通过调整和最小化偏差来过度拟合模型。

在决策树和多决策树集成(随机森林)等模型中,您可以使用变量的熵度量来计算变量重要性。这将引导您了解哪些变量实际上是重要的。

最后,在诸如随机森林之类的模型中,直觉是有多个决策树,其中每个分裂节点在许多树中都有不同的变量。大多数时候,您甚至不会在单个树中使用数据集中的所有变量。这可以减少模型的方差,同时不影响您的偏差。