我的理解是:
1)回归树中每个叶子的目标值计算为在训练期间到达该叶子的实例的目标值的平均值。
2)模型树中每个叶子的值是使用特征子集的线性函数,通过对训练期间到达该叶子的实例进行线性回归来确定。
scikit中的tree.DecisionTreeRegressor是学习回归树还是模型树?
答案 0 :(得分:4)
你理解是对的。在数学上,回归树代表piecewise constant function,而(线性)模型树代表piecewise linear function。
DecisionTreeRegressor
是回归树。
答案 1 :(得分:0)
模型树与决策树不同,因为它们计算拟合叶中简单线性模型的线性近似值(而不是常数值)。< /p>
对于我的一个项目,我开发了 linear-tree:一个 python 库,用于在叶子上构建带有线性模型的模型树。
linear-tree
的开发旨在与 scikit-learn
完全集成。
from sklearn.linear_model import *
from lineartree import LinearTreeRegressor, LinearTreeClassifier
# REGRESSION
regr = LinearTreeRegressor(base_estimator=LinearRegression())
regr.fit(X, y)
# CLASSIFICATION
clf = LinearTreeClassifier(base_estimator=RidgeClassifier())
clf.fit(X, y)
LinearTreeRegressor
和 LinearTreeClassifier
作为 scikit-learn
BaseEstimator 提供。它们是包装器,在拟合来自 sklearn.linear_model
的线性估计器的数据上构建决策树。 sklearn.linear_model
中可用的所有模型都可以用作线性估计器。
比较决策树和模型树: