我对随机森林回归的理解是,每个叶节点都包含一个或多个训练数据中的示例。预测时,每棵树找到最合适的叶子并取样本目标值的平均值,然后森林取每棵树的值的平均值。那是对的吗?
现在来看我的具体示例:使用来自 sklearn 的 RandomForestRegressor 我使用以下参数:
{
'n_estimators': 100,
'max_depth': 9,
'max_features': 1 / 3,
'criterion': 'mse',
}
训练数据在 -2.3 和 2.3 [1]之间的范围内。训练后,我预测新值,得到 33.5 的输出。如果我对随机森林模型的理解是正确的,那应该是不可能的,因为它应该只能预测训练数据范围内的值。
更奇怪的是,如果我重新调整训练数据使其在 0 和 2.3 [2]之间的范围内并在此基础上进行训练,则预测都在预期范围内。
任何人都可以找出可能导致此问题的原因吗?
[1] 严格来说,原始数据在 0.1 到 10 的范围内,经过 ln 变换得到 -2.3 到 +2.3。通常我不会对这个范围内的数据使用对数变换,但这是一个更大数据集的子集,它可以有从 0.1 到 100,000 的任何数据。
[2] 我将所有小于 1 的原始值四舍五入到 1,所以在对数变换之后它是 0 到 +2.3。