| 对比维度 | 特征提取(如PCA/LDA/KPCA) | 特征选择(如过滤法/包裹法) |
|---|
| 输出结果 | 全新生成的人工特征(原始特征的线性/非线性组合) | 原始特征池中的真子集(名字不变) |
| 可解释性 | 极差(新特征无明确物理意义) | 极强(选出来的特征就是业务里的具体指标) |
| 数据改变 | 改变特征空间(坐标轴旋转/变换) | 不改变特征空间(只删减坐标轴) |
| 是否依赖模型 | 可无监督(PCA/KPCA)或有监督(LDA) | 过滤法不依赖模型;包裹法/嵌入法依赖模型 |
| 典型场景 | 图像像素压缩、隐式特征挖掘 | 医疗诊断找关键指标、文本选关键词 |
可分性准则#
3个散布矩阵#
所有准则都建立在以下三个散布矩阵(Scatter Matrices)之上
μj 是类别 Cj 的均值,总共有C个类别,μ 是总体均值,nj 是类别 Cj 的样本数,n 是总样本数。
-
类内散布矩阵Sw:衡量同一类别内部样本的聚集程度。
SWj=nj1x∈Cj∑(x−μj)(x−μj)TSw=j=1∑CnnjSWj=n1j=1∑Cx∈Cj∑(x−μj)(x−μj)T
-
类间散布矩阵Sb:衡量不同类别中心之间的分散程度。
Sb=n1j=1∑Cnj(μj−μ)(μj−μ)T
-
总体散布矩阵St:衡量所有样本的总体分散程度。
St=Sw+Sb=n1j=1∑Cx∈Cj∑(x−μ)(x−μ)T
TIP分母上带n是标准写法,带n-1是无偏估计。对于特征选择来说,分母的常数因子不影响结果,所以不必纠结。
四个类别可分性判据#
衡量 特征子集 好坏的 4个公式(J1∼J4)。判据值越大,代表该特征子集区分能力越强:
J1(X)=tr(Sw−1Sb)=i=1∑dλi基于迹(Trace)的准则。衡量类间散布与类内散布在所有方向上的平均比值。其中 λi 是 Sw−1Sb 的特征值,
J2(X)=tr(Sw)tr(Sb)迹的比值。直接看类间总离散度与类内总离散度的比值,物理直观(类间大、类内小)。
J3(X)=∥Sw∥∥Sb∥=∥Sw−1Sb∥基于行列式(Determinant)的准则。行列式对应散布 体积的平方,衡量类间散布椭球体积与类内散布椭球体积之比。 关注散布的整体形状和体积,而非平均程度。
J4(X)=∥Sw∥∥St∥总体散布与类内散布行列式之比。因为St=Sw+Sb,该指标也间接反映类间差异。
TIP对于特征提取,类内距离准则JW 和类间距离准则JB 作为最朴素的可分性模型:
- JW=∑j=1k∑x∈Cj∥x−μj∥2(越小越好)
- JB=∑j=1knj∥μj−μ∥2(越大越好)
特征选择 使用的是J1∼J4(基于矩阵的全局判据),而JW/JB更多用于解释 LDA/FDA(特征提取) 的可分性思想。
单变量选择法#
把n维特征向量 x=(x1,x2,…,xn)T 的每个分量 xi 单独使用时的 可分性准则函数值 都算出来(每个特征单独拿出来,看看它和标签y的关系强不强。),然后按准则函数值按从大到小排序,选择前m个特征。
关于可分性准则函数,有两种情况:
用fisher score(J2)来评估单变量特征#
条件:
- 数据分布:特征数据近似服从高斯(正态)分布
- 关系类型:特征与类别之间是线性关系(即类别均值差异明显,钟形曲线分的开)。
- 特征类型:通常用于连续型数值特征。
公式定义为“类间距离的平方”与“类内离散度之和”的比值:
针对第k个特征再声明一下符号:
- 类别总数:C,类别c的样本数:nc,
- 所有特征向量在第 k 维的均值:μk,
- 第 c 类在第 k 维的类内均值:μc,k,
- 第 c 类在第 k 维的类内离散度:σc,k2=∑x∈Cc(xk−μc,k)2
G(xk)=∑c=1Cσc,k2∑c=1Cnc(μc,k−μk)2对于两类问题,Fisher Score可以简化为:
G(xk)=σ1,k2+σ2,k2(μ1,k−μ2,k)2从可分性准则的角度来看,仅取第k 维数据计算得到的 1×1 散布矩阵(此时迹就是它本身)。
G(xk)=tr SW(k)tr Sb(k)=J2(k)条件:
- 数据分布:不知道或不服从正态分布(如均匀分布、双峰分布、长尾分布)。
- 关系类型:存在非线性关系(比如课件例子:均值一样,但分布形状完全不同)。
- 特征类型:既可用于连续型,也可用于离散型/文本型(比如词频)。
回顾一下定义:
互信息量:
I(x;y)=I(x)−I(x∣y)=logP(x)P(x∣y)=logP(x)P(y)P(x,y)互信息:
I(X;Y)=EI(x;y)=x∈X∑y∈Y∑P(x,y)logP(x)P(y)P(x,y)这里就是求每个特征 xk 与类别标签 y 之间的互信息 I(xk;y),然后按互信息值从大到小排序,选择前m个特征。
搜索法(序列搜索(Sequential Search))#
在每一轮迭代中 用上述判据J作为“打分器” 来评价特征:
| 搜索策略 | 核心逻辑 | 使用的准则 |
|---|
| SFS(顺序前进法) | 从空集开始,每次加入一个使判据J最大的特征 | 每轮用J评估候选特征 |
| SBS(顺序后退法) | 从全集开始,每次删除一个使判据J下降最小的特征 | 每轮用J评估删除后的损失 |
| 广义 SFS/SBS | 每次批量增加或删除r个特征 | 仍然依赖J来评估组合效果 |
| 增l-减r法 | 先增l个(SFS),再删r个(SBS),循环进行(l>r) | 交替使用J进行评价 |
分支定界法#
当使用 分支定界法(Branch and Bound) 进行最优特征搜索时,可分性判据必须满足单调性。
- 单调性定义:若X1⊂X2,则必须有J(X1)≤J(X2)。即特征越多,判据值不会变小。
- 上面的 J1,J2,J3,J4全部满足单调性,因此可用于分支定界法保证最优解。
构建一棵“自顶向下”的搜索树(根节点是全特征集,逐层删除特征,叶子节点是目标维数)。
采用“深度优先 + 回溯”策略。它会先试探一条路径,算出当前最优值;回到分叉点时,如果发现另一条分支的理论上限还比不上已经找到的最优值,就直接剪枝(不再往下搜),否则就进去搜。这种“走不通就退回来换条路”的能力,是搜索法完全没有的。
如果每个分支的可分性判据都大于其左端分支的可分性判据,计算量会超过穷举法。而且如果最优解藏在最右边,前面剪枝效率极低,照样算到天荒地老。
嵌入式的方法#
嵌入式方法把“特征选择”作为模型训练过程的一部分,修改模型的损失函数,在优化分类器损失函数的同时,强行让不重要的特征权重变为 0,从而实现自动选择。
基于稀疏正则化(L1 正则化 / Lasso)#
目标函数加上一个 L1 正则化项(Lasso)
给权重加 L1 惩罚,在贝叶斯理论中等价于假设权重服从拉普拉斯先验分布。这种分布的特点就是峰值在 0 处特别尖锐,所以最大后验估计出来的权重极容易正好落在 0 上。
基于 SVM 的递归特征消除(SVM-RFE)#
算法流程(三步循环):
-
训练:用当前所有的特征训练一个 SVM 分类器。
-
排序:计算每个特征的权重 wi(SVM 超平面的系数),权重绝对值越小,说明这个特征对分类决策边界的影响越微弱。
-
消除:删掉权重最小的那个(或那一批)特征。
-
重复:用剩下的特征重新训练 SVM,再次删除,直到特征数达标。