基于信息增益(Information Gain)的特征选择算法
算法描述
在文本分类、情感分析等自然语言处理任务中,我们通常将文档表示为一个高维特征向量(如词袋模型)。然而,并非所有词语特征都对分类有同等贡献。许多特征是冗余的、不相关的,甚至会引入噪声,影响模型性能与效率。基于信息增益的特征选择算法旨在从原始高维特征空间中,选择出那些对分类目标贡献最大(即“信息量”最大)的特征子集。其核心思想源自信息论:一个特征的信息增益,定义为“得知该特征的信息”前后,对分类目标不确定性(用熵衡量)减少的期望值。信息增益越大,说明该特征对分类越重要。
循序渐进解题过程
第一步:理解核心概念——信息论基础
- 信息熵:衡量随机变量不确定性的度量。对于一个分类任务,假设类别变量 \(C\) 有 \(m\) 个可能的取值 \(c_1, c_2, ..., c_m\),其概率分布为 \(P(c_i)\)。则类别 \(C\) 的熵定义为:
\[ H(C) = -\sum_{i=1}^{m} P(c_i) \log_2 P(c_i) \]
* **直观理解**:熵 $ H(C) $ 表示“我们不知道一个样本属于哪一类”这种不确定性的大小。类别分布越均匀,熵越大,越不确定;若所有样本都属于同一类,熵为0,完全确定。
- 条件熵:在已知另一个随机变量(这里是某个特征 \(F\) )的条件下,原随机变量(类别 \(C\) )剩余的不确定性。特征 \(F\) 通常是一个二值变量(例如,词语“足球”在文档中出现为1,否则为0)。条件熵定义为:
\[ H(C|F) = \sum_{f \in \{0, 1\}} P(f) H(C|F=f) = \sum_{f \in \{0, 1\}} P(f) \left[ -\sum_{i=1}^{m} P(c_i|f) \log_2 P(c_i|f) \right] \]
* **直观理解**:$ H(C|F) $ 表示“在知道了特征 $ F $ 的取值(出现或不出现)后,我们判断样本类别时仍然存在的不确定性”。这个值越小,说明特征 $ F $ 提供的分类信息越多。
第二步:定义信息增益的计算公式
信息增益 就是特征 \(F\) 为分类带来的不确定性减少量:
\[IG(F) = H(C) - H(C|F) \]
- 计算逻辑:
- 先计算整个数据集的类别熵 \(H(C)\),这是我们的“初始不确定性”。
- 再计算已知特征 \(F\) 后的条件熵 \(H(C|F)\),这是“得知特征信息后的剩余不确定性”。
- 二者之差,就是特征 \(F\) 所消除的不确定性,即其信息增益。
第三步:具体计算步骤(基于训练集)
假设我们有一个文本分类训练集,有 \(N\) 个文档,类别标签集合为 \(C = \{c_1, c_2, ..., c_m\}\)。现在要计算某个词语特征 \(t\) (例如“足球”)的信息增益。
-
计算总体类别熵 \(H(C)\):
- 统计每个类别 \(c_i\) 的文档数 \(count(c_i)\)。
- 计算每个类别的概率估计:\(P(c_i) = \frac{count(c_i)}{N}\)。
- 代入熵公式:\(H(C) = -\sum_{i=1}^{m} P(c_i) \log_2 P(c_i)\)。
-
计算特征 \(t\) 的条件熵 \(H(C|t)\):
- 需要统计四类文档的数量:
- \(A\):包含词语 \(t\) 且属于类别 \(c_i\) 的文档数。
- \(B\):包含词语 \(t\) 的总文档数(对所有类别求和 \(A\))。
- \(C\):不包含词语 \(t\) 但属于类别 \(c_i\) 的文档数。
- \(D\):不包含词语 \(t\) 的总文档数(对所有类别求和 \(C\))。
- 显然,\(B + D = N\)。
- 计算概率:
- \(P(t=1) = B/N\) (特征出现的概率)
- \(P(t=0) = D/N\) (特征不出现的概率)
- \(P(c_i | t=1) = A / B\) (给定特征出现时,属于某类的概率)
- \(P(c_i | t=0) = C / D\) (给定特征不出现时,属于某类的概率)
- 计算两部分的条件熵:
- \(H(C|t=1) = -\sum_{i=1}^{m} P(c_i|t=1) \log_2 P(c_i|t=1)\)
- \(H(C|t=0) = -\sum_{i=1}^{m} P(c_i|t=0) \log_2 P(c_i|t=0)\)
- 计算最终条件熵:\(H(C|t) = P(t=1)H(C|t=1) + P(t=0)H(C|t=0)\)。
- 需要统计四类文档的数量:
-
计算特征 \(t\) 的信息增益:
- \(IG(t) = H(C) - H(C|t)\)
第四步:特征选择流程与应用
- 为所有候选特征计算 IG:对词典中的每一个词语(或N-gram等特征),重复第三步,计算出其信息增益值 \(IG\)。
- 排序与筛选:将所有特征按照其 \(IG\) 值从大到小排序。
- 选择特征子集:根据实际需求,选择排名前 \(K\) 个的特征(例如前5000个词),或者选择 \(IG\) 值大于某个阈值的所有特征。这些被选中的特征被认为是与分类目标最相关的。
- 应用:在后续的文本表示(如构建TF-IDF向量)和模型(如朴素贝叶斯、SVM)训练中,只使用这个筛选后的特征子集,从而降低特征空间的维度。
算法总结与特点
- 优点:
- 理论基础坚实:基于信息论,数学解释清晰。
- 能捕捉非线性关系:相比某些基于相关性的方法,信息增益能更好地处理特征与类别之间的非线性依赖关系。
- 计算相对高效:只需在训练集上统计词频和类别分布,计算复杂度为 \(O(|\text{词汇表}| \times |\text{类别数}| \times N)\),通常可接受。
- 缺点:
- 偏向于多值特征:一个特征可能的取值越多(如一个取值非常分散的词),其信息增益可能被高估,尽管它可能对分类并无实际帮助。不过,在文本处理中通常用二值特征,此问题不显著。
- 未考虑特征间关联:它是独立评估每个特征,忽略了特征之间的组合效应或冗余性。
- 依赖于数据分布:计算结果基于训练集的统计,如果数据分布有偏,选择的特征可能不具普适性。
基于信息增益的特征选择是文本挖掘中一种经典、有效且广泛使用的降维与预处理方法,它能显著提升模型训练效率,并在一定程度上避免过拟合,提高模型泛化能力。