DecisionTreeRegressor全量拟合与分批连续拟合结果是否一致
结论
两种场景训练得到的模型完全不相同。
具体原因
- 你用的scikit-learn版本的
DecisionTreeRegressor默认没有增量续训能力,每次调用fit()方法时,都会直接清空模型之前存储的所有树结构、分裂规则、节点参数,完全基于当前传入的数据集从零开始训练新模型,不会保留任何上一次训练的结果。 - 场景1的模型是基于完整训练集的所有样本训练生成的,树的每一次特征选择、分裂阈值、叶节点预测值,都是用全量数据计算得到的最优结果。
- 场景2连续三次调用
fit(),前两次分别在第一份、第二份训练子集上训练出的模型,都会被后续的fit()操作直接覆盖。最终你得到的模型,本质上只使用了拆分后的第三份子集X_train3、y_train3完成训练,完全没有用到前两个子集的样本信息,和全量数据训练出的模型不可能一致。
小提示:如果你需要实现分批喂数据的增量训练,需要选择实现了
partial_fit()接口的模型,原生的单棵决策树不支持这种训练方式,多次调用fit()只会覆盖之前的训练结果。
内容的提问来源于stack exchange,提问作者Rustamov
相关产品推荐
相关产品推荐

