sklearn DecisionTreeClassifier根节点特征选择规则相关问题咨询
sklearn DecisionTreeClassifier 根节点选择逻辑说明
根节点的选择逻辑和决策树后续其他节点的分裂规则完全一致,核心目标是找到能最大化分裂前后样本纯度提升的特征和对应分裂阈值,作为根节点的分裂规则。
判定准则
sklearn中通过criterion参数指定不纯度计算规则,用于判定分裂收益的高低,支持三种可选准则:
- 基尼系数(默认值,
criterion="gini"):计算公式为Gini = 1 - Σ(p_i)²,其中p_i是当前节点内第i类样本的占比,数值越低代表节点样本纯度越高 - 信息熵(
criterion="entropy"):计算公式为Entropy = - Σ(p_i * log2(p_i)),分裂前后的信息熵差值即为信息增益,同样数值越低纯度越高 - 对数损失(
criterion="log_loss"):计算逻辑和信息熵完全一致,主要用于和后续集成算法的损失函数对齐,输出结果和entropy参数无差异
分裂收益的计算方式为:父节点不纯度 - (左子节点样本占比 * 左节点不纯度 + 右子节点样本占比 * 右节点不纯度),所有特征的所有可能分裂方式中,收益最高的就会被选为根节点的分裂规则。
阈值计算规则
对单个特征的最优分裂阈值,默认按照如下逻辑计算:
- 对该特征所有样本的取值去重后从小到大排序
- 取每两个相邻取值的中间值作为候选分裂阈值
- 遍历所有候选阈值,计算每个阈值下二分分裂的收益,取收益最高的作为该特征的最优分裂阈值
如果配置了splitter="random"参数,sklearn会随机抽取部分候选阈值进行计算,不需要遍历全部,适合高维数据集加快训练速度;默认splitter="best"为遍历所有候选阈值找全局最优解。
内容的提问来源于stack exchange,提问作者Любовь Пономарева
相关产品推荐
相关产品推荐

