改进回归模型和特征选择

数据挖掘 预测建模 回归 特征选择 特征工程 天蓝色毫升
2021-09-17 17:49:56

我正在使用 Azure ML Studio 并尝试创建一个回归模型来预测数值。我将尝试描述我的特点以及到目前为止我所做的事情。

我的数据大约有 300 万行:

特征:

  • 从 1 到 25 的 8 个整数特征
  • 2 个带有 0 和 1 的布尔特征
  • 从 1 到 10 的 3 个整数特征
  • 2 个整数特征,从 0 到 500.000(分别为 1.000.000),具有大约 4.500 个唯一值
  • 从 20 到 50 的 1 个整数特征
  • 从 1 到 15 的 1 个整数特征
  • 1 个从 0 到 100 的整数特征

标签:

  • 从 10.000 到 100.000.000 的整数,具有大约 5.000 个唯一值

我做了什么:

  • 将数据集拆分为 80%(训练)和 20%(测试)。然后我再次将训练数据集拆分为 60%(实际训练)和 40%(验证)。
  • 标准化具有许多唯一值的特征(上面列表中的第 4 个项目符号)
  • 训练提升决策树回归模型。
  • 使用扫描参数模块找到最佳组合

我也尝试过神经网络、贝叶斯线性回归,但 BDTR 给出了最好的分数。

我尝试排除列并仅从几个列开始(基于我认为它会影响模型的内容),然后一一添加更多列。

然而,我能达到的最低 MSE 是 1.500.000(加上我有很多负分值)

所以,我在想我可以使用哪些其他技术来改进模型。

3个回答

我同意@Hoap。对于您拥有的训练观察量,您的特征可能很低。不要排除列,而是查看您是否缺少更多功能。特征工程,而不是特征选择。
但是,如果你正在寻找功能选择,那么 Azure ML 有一个功能选择模块,其中包含指定要保留多少功能的选项。

在开始建模之前要做一些简单的验证:

  • 可视化任何非线性关系的数据集。
  • 您还可以执行简单的相关分析来检查多重共线性。
  • 我还认为,将所有数据在 0 到 1 之间进行归一化以获得特征之间的一致可比值会很有帮助。

希望其中之一会在您的数据中显示一些意想不到的模式。如果您已经执行了这些检查,我深表歉意。只是想把它们放在那里。

看起来您几乎使用了 Azure ML 库中的每个回归模型。

我认为您必须采取的下一个选择是添加更多功能。你有大量的训练样本,这很好,但特征的数量非常少。添加更多功能是提高机器学习性能的最常用方法之一。

此外,最好尝试了解您的功能如何影响您的模型。想象一下,您有一个线性模型,例如y = theta1*feat1 + theta2*feat2 + theta3*feat3. 如果 theta3 接近 0,则 feat3 不会影响模型。

改进的最佳方法是进行错误分析,这意味着检查模型在验证试验中所犯的错误并了解我们如何改进,或者通过添加项交互、多项式(对非线性关系进行建模),或者简单地使用您的数据的其他模型也可能是非线性的。此外,尝试进行更多的特征工程、清理和预处理,以最好地优化模型性能。