2034 字
10 分钟
可分性准则以及特征选择的经典方法
2026-06-20
无标签
对比维度特征提取(如PCA/LDA/KPCA)特征选择(如过滤法/包裹法)
输出结果全新生成的人工特征(原始特征的线性/非线性组合)原始特征池中的真子集(名字不变)
可解释性极差(新特征无明确物理意义)极强(选出来的特征就是业务里的具体指标)
数据改变改变特征空间(坐标轴旋转/变换)不改变特征空间(只删减坐标轴)
是否依赖模型可无监督(PCA/KPCA)或有监督(LDA)过滤法不依赖模型;包裹法/嵌入法依赖模型
典型场景图像像素压缩、隐式特征挖掘医疗诊断找关键指标、文本选关键词

可分性准则#

3个散布矩阵#

所有准则都建立在以下三个散布矩阵(Scatter Matrices)之上

μj\boldsymbol{\mu}_j 是类别 CjC_j 的均值,总共有CC个类别,μ\boldsymbol{\mu} 是总体均值,njn_j 是类别 CjC_j 的样本数,nn 是总样本数。

  • 类内散布矩阵SwS_w:衡量同一类别内部样本的聚集程度。

    SWj=1njxCj(xμj)(xμj)TSw=j=1CnjnSWj=1nj=1CxCj(xμj)(xμj)TS_W^j =\frac{1}{n_j}\sum_{\mathbf{x} \in C_j} (\mathbf{x} - \boldsymbol{\mu}_j)(\mathbf{x} - \boldsymbol{\mu}_j)^T\\ S_w = \sum_{j=1}^{C}\frac{n_j}{n}S_W^j=\frac{1}{n}\sum_{j=1}^{C} \sum_{\mathbf{x} \in C_j} (\mathbf{x} - \boldsymbol{\mu}_j)(\mathbf{x} - \boldsymbol{\mu}_j)^T
  • 类间散布矩阵SbS_b:衡量不同类别中心之间的分散程度。

    Sb=1nj=1Cnj(μjμ)(μjμ)TS_b = \frac{1}{n}\sum_{j=1}^{C} n_j (\boldsymbol{\mu}_j - \boldsymbol{\mu})(\boldsymbol{\mu}_j - \boldsymbol{\mu})^T
  • 总体散布矩阵StS_t:衡量所有样本的总体分散程度。

    St=Sw+Sb=1nj=1CxCj(xμ)(xμ)TS_t = S_w + S_b = \frac{1}{n}\sum_{j=1}^{C} \sum_{\mathbf{x} \in C_j} (\mathbf{x} - \boldsymbol{\mu})(\mathbf{x} - \boldsymbol{\mu})^T
TIP

分母上带n是标准写法,带n-1是无偏估计。对于特征选择来说,分母的常数因子不影响结果,所以不必纠结。

四个类别可分性判据#

衡量 特征子集 好坏的 4个公式J1J4J_1 \sim J_4)。判据值越大,代表该特征子集区分能力越强

J1(X)=tr(Sw1Sb)=i=1dλiJ_1(\mathcal{X}) = \text{tr}(S_w^{-1}S_b)=\sum_{i=1}^{d} \lambda_i

基于迹(Trace)的准则。衡量类间散布与类内散布在所有方向上的平均比值。其中 λi\lambda_iSw1SbS_w^{-1}S_b 的特征值,

J2(X)=tr(Sb)tr(Sw)J_2(\mathcal{X}) = \frac{\text{tr}(S_b)}{\text{tr}(S_w)}

迹的比值。直接看类间总离散度与类内总离散度的比值,物理直观(类间大、类内小)。

J3(X)=SbSw=Sw1SbJ_3(\mathcal{X}) = \frac{\|S_b\|}{ \| S_w \| } = \| S_w^{-1}S_b\|

基于行列式(Determinant)的准则。行列式对应散布 体积的平方,衡量类间散布椭球体积与类内散布椭球体积之比。 关注散布的整体形状和体积,而非平均程度。

J4(X)=StSwJ_4(\mathcal{X}) = \frac{\| S_t\| }{ \| S_w \| }

总体散布与类内散布行列式之比。因为St=Sw+SbS_t = S_w + S_b,该指标也间接反映类间差异。

TIP

对于特征提取,类内距离准则JWJ_W类间距离准则JBJ_B 作为最朴素的可分性模型:

  • JW=j=1kxCjxμj2J_W = \sum_{j=1}^{k} \sum_{\mathbf{x} \in C_j} \|\mathbf{x} - \boldsymbol{\mu}_j\|^2(越小越好)
  • JB=j=1knjμjμ2J_B = \sum_{j=1}^{k} n_j \|\boldsymbol{\mu}_j - \boldsymbol{\mu}\|^2(越大越好)

特征选择 使用的是J1J4J_1 \sim J_4(基于矩阵的全局判据),而JW/JBJ_W/J_B更多用于解释 LDA/FDA(特征提取) 的可分性思想。

单变量选择法#

把n维特征向量 x=(x1,x2,,xn)T\mathbf{x} = (x_1, x_2, \ldots, x_n)^T 的每个分量 xix_i 单独使用时的 可分性准则函数值 都算出来(每个特征单独拿出来,看看它和标签y的关系强不强。),然后按准则函数值按从大到小排序,选择前m个特征。

关于可分性准则函数,有两种情况:

用fisher score(J2J_2)来评估单变量特征#

条件:

  1. 数据分布:特征数据近似服从高斯(正态)分布
  2. 关系类型:特征与类别之间是线性关系(即类别均值差异明显,钟形曲线分的开)。
  3. 特征类型:通常用于连续型数值特征。

公式定义为“类间距离的平方”与“类内离散度之和”的比值:

针对第kk个特征再声明一下符号:

  • 类别总数:CC,类别cc的样本数:ncn_c
  • 所有特征向量在第 kk 维的均值:μk\boldsymbol{\mu}_{k}
  • cc 类在第 kk 维的类内均值:μc,k\boldsymbol{\mu}_{c,k}
  • cc 类在第 kk 维的类内离散度:σc,k2=xCc(xkμc,k)2\sigma_{c,k}^2=\sum_{\mathbf{x}\in C_c} (x_k - \boldsymbol{\mu}_{c,k})^2
G(xk)=c=1Cnc(μc,kμk)2c=1Cσc,k2G(x_k)=\frac{\sum_{c=1}^{C} n_c (\boldsymbol{\mu}_{c,k} - \boldsymbol{\mu}_{k})^2}{\sum_{c=1}^{C} \sigma_{c,k}^2}

对于两类问题,Fisher Score可以简化为:

G(xk)=(μ1,kμ2,k)2σ1,k2+σ2,k2G(x_k)=\frac{(\boldsymbol{\mu}_{1,k} - \boldsymbol{\mu}_{2,k})^2}{\sigma_{1,k}^2 + \sigma_{2,k}^2}

从可分性准则的角度来看,仅取第k 维数据计算得到的 1×1 散布矩阵(此时迹就是它本身)。

G(xk)=tr Sb(k)tr SW(k)=J2(k)G(x_k) = \frac{\text{tr }S_b^{(k)}}{\text{tr }S_W^{(k)}} = J_2^{(k)}

用互信息(Mutual Information)来评估单变量特征#

条件:

  1. 数据分布:不知道或不服从正态分布(如均匀分布、双峰分布、长尾分布)。
  2. 关系类型:存在非线性关系(比如课件例子:均值一样,但分布形状完全不同)。
  3. 特征类型:既可用于连续型,也可用于离散型/文本型(比如词频)。

回顾一下定义:

互信息量:

I(x;y)=I(x)I(xy)=logP(xy)P(x)=logP(x,y)P(x)P(y)I(x; y) = I(x) - I(x|y) = \log \frac{P(x|y)}{P(x)} = \log \frac{P(x, y)}{P(x) P(y)}

互信息:

I(X;Y)=EI(x;y)=xXyYP(x,y)logP(x,y)P(x)P(y)I(X; Y) =\mathbb{E}I(x;y) = \sum_{x \in X} \sum_{y \in Y} P(x, y) \log \frac{P(x, y)}{P(x) P(y)}

这里就是求每个特征 xkx_k 与类别标签 yy 之间的互信息 I(xk;y)I(x_k; y),然后按互信息值从大到小排序,选择前m个特征。

在每一轮迭代中 用上述判据JJ作为“打分器” 来评价特征:

搜索策略核心逻辑使用的准则
SFS(顺序前进法)从空集开始,每次加入一个使判据JJ最大的特征每轮用JJ评估候选特征
SBS(顺序后退法)从全集开始,每次删除一个使判据JJ下降最小的特征每轮用JJ评估删除后的损失
广义 SFS/SBS每次批量增加或删除rr个特征仍然依赖JJ来评估组合效果
ll-减rr先增ll个(SFS),再删rr个(SBS),循环进行(l>rl>r交替使用JJ进行评价

分支定界法#

当使用 分支定界法(Branch and Bound) 进行最优特征搜索时,可分性判据必须满足单调性

  • 单调性定义:若X1X2\mathcal{X}_1 \subset \mathcal{X}_2,则必须有J(X1)J(X2)J(\mathcal{X}_1) \leq J(\mathcal{X}_2)。即特征越多,判据值不会变小
  • 上面的 J1,J2,J3,J4J_1, J_2, J_3, J_4全部满足单调性,因此可用于分支定界法保证最优解。

构建一棵“自顶向下”的搜索树(根节点是全特征集,逐层删除特征,叶子节点是目标维数)。

采用“深度优先 + 回溯”策略。它会先试探一条路径,算出当前最优值;回到分叉点时,如果发现另一条分支的理论上限还比不上已经找到的最优值,就直接剪枝(不再往下搜),否则就进去搜。这种“走不通就退回来换条路”的能力,是搜索法完全没有的。

如果每个分支的可分性判据都大于其左端分支的可分性判据,计算量会超过穷举法。而且如果最优解藏在最右边,前面剪枝效率极低,照样算到天荒地老。

嵌入式的方法#

嵌入式方法把“特征选择”作为模型训练过程的一部分,修改模型的损失函数,在优化分类器损失函数的同时,强行让不重要的特征权重变为 0,从而实现自动选择。

基于稀疏正则化(L1 正则化 / Lasso)#

目标函数加上一个 L1L_1 正则化项(Lasso)

给权重加 L1 惩罚,在贝叶斯理论中等价于假设权重服从拉普拉斯先验分布。这种分布的特点就是峰值在 0 处特别尖锐,所以最大后验估计出来的权重极容易正好落在 0 上。

基于 SVM 的递归特征消除(SVM-RFE)#

算法流程(三步循环):

  1. 训练:用当前所有的特征训练一个 SVM 分类器。

  2. 排序:计算每个特征的权重 wiw_i​(SVM 超平面的系数),权重绝对值越小,说明这个特征对分类决策边界的影响越微弱。

  3. 消除:删掉权重最小的那个(或那一批)特征。

  4. 重复:用剩下的特征重新训练 SVM,再次删除,直到特征数达标。

可分性准则以及特征选择的经典方法
https://biscuit0613.github.io/posts/ml/featureselection/
作者
Biscuit
发布于
2026-06-20
许可协议
CC BY-NC-SA 4.0
深度学习的基本结构:层,块,组件,网络
LDA-线性判别分析 (Linear Discriminant Analysis)