我正在为我的数据使用 python SKlearn DecisionTreeRegressor。由于 DecisionTreeRegressor 在叶节点处定义常量数据,因此我的预测看起来像一个步骤,相反,我想强制执行我感兴趣的 polyfit Equation。我正在寻找一些类似使用决策树的东西,然后在叶节点上应用正态回归来预测连续数据。对于我的数据集,正常回归不起作用,因为它寻找全局错误最小化,所以我正在寻找这个。我是初学者,任何回应将不胜感激。谢谢。
python - 如何强制DecisionTreeRegressor在python SKlearn的叶级使用polyfit方程而不是mse
数据挖掘
机器学习
Python
回归
scikit-学习
决策树
2022-01-28 16:39:23
1个回答
这是基于我的评论的扩展答案。
首先,除了决策树,还有很多有趣的高度非线性分类器。最广泛使用的是神经网络和SVM。(Nitpick 但 SVM 可以被视为神经网络。)
在决策树的世界中,有些东西像决策树一样在节点中具有线性回归。但是,这些训练非常缓慢。问题是您不能再利用决策树熵或基尼分数可以随着阈值的变化而递增计算的事实(其中是节点规则的右侧部分,)。这个技巧不能用于这些树。当然,除了决策树之外,还有很多其他的规则归纳算法,它们不是阶梯式的。
无论如何,通常使用合奏。合奏是由几个模型组成的模型,然后对结果“投票”。您可以将它们与任何类别的模型一起使用,但与决策树结合使用时它们特别出色,因为:
- 如果样本略有不同,决策树可能会产生非常不同的结果。合奏解决了这个问题;
- 决策树决策边界与特征正交,具有“阶梯”效应;
- 必须修剪决策树,而无需修剪即可使用某些集成;
- Kaggle 和其他数据挖掘竞赛的大多数获胜者都使用了决策树集成;
- 如果你需要的话,Ensembles 会给你概率;决策树的概率高度依赖于你如何修剪它们(未修剪的决策树根本不能给你概率)。
在这里查看一些决策树集成的结果:
有两种类型的合奏被广泛使用:
通常,Kaggle 获胜者使用梯度提升树,尤其是使用xgboost 包。但是它们有更多的超参数需要调整,所以如果你没有太多时间来调整它们,那就去随机森林吧。梯度提升树更难获得正确的结果,如果您更改参数,例如n_estimators. 另一方面,随机森林在时倾向于预期的行为。n_estimators
此外,梯度提升树可能会过拟合,尽管我认为这种情况很少见。(随机森林也可能过拟合,但这是因为基础估计量过拟合。随着您的增加,它们倾向于平均行为n_estimators。如果不清楚,请告诉我。)
注意: n_estimators在 sklearn 中有时非常低,你应该增加它。在实际问题中,人们使用数千棵树。
其它你可能感兴趣的问题
