Har*_*nya 15 python scikit-learn
我正在浏览sklearn类DecisionTreeClassifier.
查看该类的参数,我们有两个参数min_samples_split和min_samples_leaf.它们背后的基本思想看起来很相似,您指定了将节点决定为叶子或进一步拆分所需的最小样本数.
当一个意味着另一个时,为什么我们需要两个参数?是否有任何理由或情景可以区分它们?
Ale*_*lex 33
从文档:
两者之间的主要区别在于
min_samples_leaf
保证叶子中的样本数量最少,同时min_samples_split
可以创建任意小叶子,尽管min_samples_split
在文献中更为常见.
为了掌握这篇文档,我认为你应该区分一个leaf(也称为外部节点)和一个内部节点.内部节点将具有进一步的分裂(也称为子节点),而叶子根据定义是没有任何子节点的节点(没有任何进一步的分裂).
min_samples_split
指定拆分内部节点所需的最小样本数,同时min_samples_leaf
指定在叶节点处所需的最小样本数.
例如,如果min_samples_split = 5
内部节点上有7个样本,则允许分割.但是,让我们说分裂结果是两个叶子,一个有1个样本,另一个有6个样本.如果min_samples_leaf = 2
,那么将不允许拆分(即使内部节点有7个样本),因为得到的叶子之一将少于叶子节点所需的最小样本数量.
正如上面提到的文档所述min_samples_leaf
,无论价值如何,都保证每个叶子中的样本数量最少min_samples_split
.
小智 11
两个参数都会产生类似的结果,区别在于角度不同。
min_samples_split参数将评估节点中的样本数量,如果数量小于最小值,则将避免分割,并且该节点将成为叶子。
min_samples_leaf参数在生成节点之前进行检查,即如果可能的拆分导致子节点的样本数较少,则将避免拆分(因为尚未达到子节点成为叶子的最小样本数)并且该节点将被叶子替换。
在所有情况下,当我们在叶子中拥有多个类别的样本时,根据训练中达到的样本,最终类别将是最有可能发生的。
假设min_samples_split = 9 和min_samples_leaf =3。
内部节点不允许右分割(3<9),允许左分割(10>9)。但因为 min_samples_leaf =3 并且一片叶子是 2(右边的叶子),所以 10不会分裂为 2 和 8。
查看数字为 3 的叶子(从第一次分裂开始)。如果我们决定 mim_samples_leaf =4 而不是 3,那么即使第一次分裂也不会发生(13 到 10 和 3)。
小智 6
在决策树中,可以设置许多规则来配置树的结束方式。粗略地说,还有更多面向“设计”的规则,例如 max_depth。Max_depth 更像是当你盖房子时,建筑师问你想要房子有多少层。
其他一些规则是“防御”规则。我们通常称其为停止规则。min_samples_leaf 和 min_samples_split 属于这种类型。已经提供的所有解释都说得很好。我的观点是:在构建树时,规则会相互作用。例如,min_samples_leaf=100,您很可能会得到所有终端节点都大于 100 的树,因为其他规则会阻止树扩展。
归档时间: |
|
查看次数: |
11214 次 |
最近记录: |