信息、熵、信息增益、基尼指数

本文深入探讨了信息论在机器学习中的应用,包括信息、熵、条件熵等概念,解析了决策树中信息增益与信息增益比的计算方法,以及基尼指数在CART算法中的作用。

信息

信息是用来消除随机不确定性的东西,放在机器学习的语境里是这样的,每个类xi的信息为:
在这里插入图片描述
I表示信息,p(xi)表示指xi的概率

熵是对随机变量不确定性的度量,是信息的期望值

在这里插入图片描述
熵只依赖于随机变量的分布,和其取值没有关系
熵是用来度量不确定的,所以熵越大,X=xi的不确定性越大
给了样本集合D后,其经验熵为:
在这里插入图片描述
k表示有k个分类,|CK|为样本集中属于K类的样本数

条件熵

在一个条件下,随机变量的不确定性

机器学习中可以理解为给定某个特征后的熵
比如在一个集合中,年龄特征下有青年、中年、老年三项,最后的分类分为是、否两类
那在年龄中==青年、中年、老年的情况下,在各自集合里都有样本属于是、否不同的类别
可以分贝算出H(Y|X=青年)、H(Y|X=中年)和H(Y|X=老年),以及p(青年)、p(中年)、p(老年),相乘求和就可以计算在年龄条件下的条件熵

经验条件熵
在这里插入图片描述

信息增益

熵 - 条件熵
信息增益可以作为决策树中用来选择特征的指标
由于 熵 是随机变量的不确定性, 条件熵是在某一条件下随机变量的不确定性,所以信息增益就是某一条件下随机变量不确定性减少的程度
在这里插入图片描述
在决策树构建时,H(Y)表示划分前的熵,H(Y|X)表示划分后的条件熵,后者越小,说明在此条件下随机变量的不确定度越小,相应的信息增益越大,我们想要的正是随机变量的不确定性变小、纯度变高,也就是选择信息增益最大的,ID3算法中就以此为特征选择的方式(sklearn中决策树的critir参数为‘entropy’)

但是信息增益偏向取值较多的特征,要解决这个缺点可以用信息增益比

信息增益比

在这里插入图片描述
在这里插入图片描述就是上面在A条件下的熵

基尼指数

Gini系数是一种与信息熵类似的做特征选择的方式,可以用来数据的不纯度。在CART(Classification and Regression Tree)算法中利用基尼指数构造二叉决策树(选择基尼系数最小的特征及其对应的特征值)。
基尼指数(基尼不纯度):表示在样本集合中一个随机选中的样本被分错的概率。
是sklearn决策树的默认选择标准

注意: Gini指数越小表示集合中被选中的样本被分错的概率越小,也就是说集合的纯度越高,反之,集合越不纯。
基尼指数(基尼不纯度)= 样本被选中的概率 * 样本被分错的概率

在这里插入图片描述
在这里插入图片描述
CART是个二叉树,也就是当使用某个特征划分样本集合只有两个集合:1. 等于给定的特征值 的样本集合D1 , 2 不等于给定的特征值 的样本集合D2

实际上是对拥有多个取值的特征的二值处理。
某个特征划分后的Gini指数:
在这里插入图片描述(毕竟是二叉)
因而对于一个具有多个取值(超过2个)的特征,需要计算以每一个取值作为划分点,对样本D划分之后子集的纯度Gini(D,Ai),(其中Ai 表示特征A的可能取值)

然后从所有的可能划分的Gini(D,Ai)中找出Gini指数最小的划分,这个划分的划分点,便是使用特征A对样本集合D进行划分的最佳划分点。

在机器学习中,信息增益(Information Gain)基尼系数(Gini Index)是两个用于决策树构建过程中特征选择的重要指标。它们分别基于信息统计学原理,用于衡量数据集的纯度以及特征对数据集划分的有效性。 ### 信息增益 信息增益是基于信息(Entropy)的概念来定义的。信息用于衡量一个系统的不确定性,越大,系统的不确定性越高。对于分类任务,可以用来衡量一个数据集的纯度,如果一个数据集的所有样本都属于同一类别,则其为0;如果样本均匀分布在各个类别中,则最大。 信息增益定义为划分数据集前后信息的减少量: $$ \text{Gain}(A) = H(A) - H(A|F^{(j)}=f) $$ 其中,$ H(A) $ 是划分前数据集的信息,$ H(A|F^{(j)}=f) $ 是在特征 $ F^{(j)} $ 上取值为 $ f $ 的条件下数据集的信息信息增益越大,说明使用该特征进行划分后数据集的不确定性减少得越多,即该特征对分类越有帮助。 信息增益的一个问题是它偏向于选择具有较多取值的特征。为了解决这个问题,引入了信息增益率(Gain Ratio),它通过引入分裂信息(Split Information)对信息增益进行归一化处理。 ```python def entropy(y): from collections import Counter import math counts = Counter(y) total = len(y) ent = 0 for count in counts.values(): p = count / total ent -= p * math.log2(p) return ent def information_gain(X, y, feature_index): original_entropy = entropy(y) values = set(X[:, feature_index]) weighted_entropy = 0 for value in values: subset_indices = [i for i, x in enumerate(X) if x[feature_index] == value] subset_y = [y[i] for i in subset_indices] weight = len(subset_y) / len(y) weighted_entropy += weight * entropy(subset_y) return original_entropy - weighted_entropy ``` ### 基尼系数 基尼系数是另一种衡量数据集纯度的指标,其定义为: $$ \text{Gini}(A) = 1 - \sum_{k=1}^{K} p_k^2 $$ 其中 $ p_k $ 表示第 $ k $ 类样本在数据集中所占的比例。基尼系数越小,表示数据集的纯度越高。在决策树中,使用基尼系数来选择划分特征时,会选择使划分后的基尼系数最小的特征。 基尼系数的计算公式可以扩展为: $$ \text{Gini}(A, F^{(j)}=f) = \frac{|A_1|}{|A|} \cdot \text{Gini}(A_1) + \frac{|A_2|}{|A|} \cdot \text{Gini}(A_2) $$ 其中 $ A_1 $ $ A_2 $ 是根据特征 $ F^{(j)} $ 的取值 $ f $ 划分后的子集。最终选择使 $ \text{Gini}(A, F^{(j)}=f) $ 最小的特征作为划分特征。 ```python def gini(y): from collections import Counter counts = Counter(y) total = len(y) impurity = 1 for count in counts.values(): prob = count / total impurity -= prob ** 2 return impurity def gini_index(X, y, feature_index): values = set(X[:, feature_index]) weighted_gini = 0 for value in values: subset_indices = [i for i, x in enumerate(X) if x[feature_index] == value] subset_y = [y[i] for i in subset_indices] weight = len(subset_y) / len(y) weighted_gini += weight * gini(subset_y) return weighted_gini ``` ### 信息增益基尼系数的区别 - **计算方式**:信息增益基于信息,而基尼系数基于平方概率之。 - **偏向性**:信息增益偏向于具有较多取值的特征,而基尼系数则没有这种明显的偏向性。 - **计算复杂度**:基尼系数的计算通常比信息增益更简单,因为它不需要对数运算。 - **应用场景**:在C4.5决策树中使用信息增益率进行特征选择,而在CART(分类与回归树)中使用基尼系数进行特征选择。 ### 决策树中的作用 在决策树的构建过程中,信息增益基尼系数都用于选择最佳的特征进行划分。通过递归地选择信息增益最大或基尼系数最小的特征,决策树能够逐步将数据集划分为更纯净的子集,从而提高分类的准确性。信息增益基尼系数的选择会影响决策树的结构性能,因此在实际应用中需要根据具体问题选择合适的指标。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值