!<a href="https://media.geeksforgeeks.org/wp-content/uploads/20251108104742414616/decisiontreesplit.webp">decisiontreesplit信息增益与互信息
基于信息的度量指标的必要性
这些度量指标之所以至关重要,原因如下:
- 能够识别出最有效减少目标预测不确定性的属性。
- 通过选择有意义的切分点,改善基于树的模型中的决策边界。
- 支持高维数据集(如文本或基因组学)中的特征选择。
- 通过展示哪些特征对结果影响最大,提高模型的可解释性。
- 通过避免使用噪声或不相关的特征,防止过拟合。
信息增益量化了在特定特征上分割数据后熵的减少量。增益越高意味着分割越有用。
公式
> IG(S, A) = H(S) – \sum \frac{
}{
} H(Sv)
其中:
- H(S) 是分割前的熵,
- H(S_v) 是分割后每个子集的熵。
特性
- 倾向于能产生纯子节点的属性。
- 在 ID3 和 C4.5 等决策树算法中工作高效。
- 略微偏向于多值属性。
实现
使用 iris 数据集计算信息增益。
Python
CODEBLOCK_305d7736
输出:
> Information Gain for each feature: [0.50576572 0.27875048 0.98425371 0.99358193]
与萼片长度和萼片宽度相比,花瓣长度和花瓣宽度是预测鸢尾花品种信息量更大的特征。
互信息用于衡量两个变量之间的依赖程度。它对于线性和非线性关系都能很好地发挥作用。
公式
> I(X;Y) = \sum_{x,y} p(x,y) \log \frac{p(x,y)}{p(x)p(y)}
其中:
- p(x, y) 是联合概率,
- p(x) 和 p(y) 是边缘概率。
特性
- 可以捕捉任何形式的依赖关系,不仅仅是线性关系。
- 在高维特征空间中表现稳定。
- 与单纯的相关性相比,对噪声具有更强的鲁棒性。
实现
使用 mutualinforegression 实现互信息并生成合成数据。
Python
CODEBLOCK_136b0f20
输出:
> Mutual Information for each feature: [0.42283584 0.54090791]
较高的互信息值表明特征与目标变量之间存在更强的关系或依赖性。
信息增益率
信息增益率是对信息增益进行归一化处理,以减少对具有多个值的属性的偏好。
公式
> \mathrm{IGR} = \frac{IG(S, A)}{H(A)}
其中:
- IG(S,A) 是基于属性分割获得的信息增益,
- H(A) 是属性 A 的熵,表示它分割数据的广度。
- IGR 是归一化值,用于避免偏向具有多个不同值的属性。
特性
- 减少多值分割的偏差。
- 在 C4.5 算法中用于做出平衡的决策。
- 提高模型在未见数据上的泛化能力。
实现
计算 IGR。
Python
CODEBLOCK_56ba0b8a
输出:
> IGR: 0.11232501392736335
0.1123 的 IGR 值被认为是较低的,这意味着与其他可能的特征相比,该特征对于分割数据的信息量不大。
信息增益 vs 互信息
信息增益和互信息之间的区别:
信息增益 (IG)
—
衡量当已知某个特征时,目标变量不确定性的减少量。