一.前言
在机器学习中,特征往往对模型整体表现的影响非常大。而现实问题中,特征数量往往会非常大,而处理庞大的特征往往比较困难,所以就有了各种的降维方法。
降维的方法主要分为特征抽取 (Feature Extraction) 和特征选择 (Feature Selection) 两种。
特征抽取是指在原来特征的基础上,形成新的特征。抽取后的新特征是原来特征的一个映射。经典的特征抽取方法有主成分分析和线性评判分析。但是特征抽取后的新特征的空间结构被改变,因此无法进行后续预测模型的建立。
特征选择是指直接删除不相关且冗余的特征,保留原始数据最有价值的信息,形成一 个最优的特征子集,特征本身并没有被改变。依据特征选择和学习器的不同结合方式,特征选择方法可以分为三类:过滤法,包装法和嵌入法。
这里我们将关注特征选择的方法, 据特征选择和学习器的不同结合方式,特征选择方法可以分为三类:过滤法,包装法,嵌入法。
(1)过滤式(filter)。过滤式特征选择方法可以分为两种:基于特征排序的过滤式特征选择和基于搜索策略的过滤式特征选择。基于特征排序的过滤式特征选择是指使用相关 性指标对各个特征进行评分,选择分数越大的特征越有价值。常用的过滤式特征选择方法 有方差选择法、卡方检验法、皮尔森相关系数法、互信息系数法。基于搜索策略的过滤式 特征选择与前者不同的是会使用启发式搜索策略来对特征子集进行评价,且拥有独特的评 价准则来衡量已选的特征子集。常用方法有基于相关性的特征选择方法(CFS)。
如下图为基于特征排序的过滤式特征选择
如下图为基于搜索策略的过滤式特征选择
(2)包裹式(wrapper)。包裹式特征选择从初始特征集合中不断的选择特征子集,训练学习器,然后根据学习器的性能来对子集进行评价,直到选择出最佳的子集。常用的包裹式特征选择方法有递归特征消除。但是包裹式特征选择由于特征子集受特定的学习算法影响比较大,容易出现“过拟合”,并且使用不同的学习算法,得到的特征子集也不同, 所以获得的特征子集的稳定性和适应性较差。
(3)嵌入式(embedding)。在模型既定的情况下学习出对提高模型准确性最好的属
性。嵌入式特征选择算法嵌入在学习算法当中,当算法训练过程结束就可以得到特征子集。 常用的嵌入式特征选择方法有岭回归。
二.基于相关性的特征选择方法CFS
1.CFS特征选择原则
本文在进行特征选择时,主要遵循如下 3 个原则:
(1)发散性。特征自身的取值要有变化。当一个特征的取值波动很小,说明该特征 的取值很稳定,可以近似理解成该特征的每个值都接近,这样的特征对模型是没有任何效果。
(2)相关性。特征与目标之间的相关性越大,特征越能体现、代表目标。
(3)独立性。特征与特征之间相互独立。
2.CFS特征选择原理
基于相关性的特征选择方法(CFS)是基于搜索策略的过滤式特征选择方法中最经典的方法。该方法的核心是基于相关性的评估函数来评估特征子集的价值。如果特征子集中各个特征和目标之间具有较强的关联性,并且特征彼此之间具有较弱的关联性,那么这 个特征子集在评估函数中的表现就更好,更容易被评估函数选中。
3.CFS特征选择步骤
(1)连续变量离散化
在该方法中,通常假定所有变量是离散变量,然而有时候处理的操作数据是连续变量, 因此我们需要把连续变量离散化。在这里我们采用等宽离散法。等宽法是最简单的无监督离散化方法,指将连续变量的取值空间等分为多个取值区间。即将连续变量的值域{
X
m
i
n
,
X
m
a
x
X_{min},X_{max}
Xmin,Xmax}划分为n个区间,使得每个区间的宽度都相等。
区间的宽度为:
d
=
X
m
a
x
−
X
m
i
n
n
d = \frac{X_{max}-X_{min}}{n}
d=nXmax−Xmin
变量
x
i
x_i
xi对应的区间为:
m
=
x
i
−
X
m
i
n
d
m = \frac{x_i-X_{min}}{d}
m=dxi−Xmin
(2) 计算对称不确定性(Symmetric Uncertainty,SU)
S
U
=
2
∗
H
(
X
)
+
H
(
Y
)
−
H
(
X
,
Y
)
H
(
X
)
+
H
(
Y
)
SU = 2* \frac{H(X)+H(Y)- H(X,Y)}{H(X)+H(Y)}
SU=2∗H(X)+H(Y)H(X)+H(Y)−H(X,Y)
其中,
H
(
X
)
为
X
的
熵
,
H
(
X
,
Y
)
为
X
和
Y
的
联
合
熵
H(X) 为X的熵,H(X,Y)为X和Y的联合熵
H(X)为X的熵,H(X,Y)为X和Y的联合熵。
具体熵和联合熵的含义可以参考https://blog.csdn.net/weixin_44467105/article/details/111059530
(3)计算特征评估指标Merits
通过引入特征估计指标
M
e
r
i
t
s
Merits
Merits 来选择和目标相关性更强并且和其他特征相关性更弱的特征作为较好的特征:
M
e
r
i
t
s
=
k
∗
r
ˉ
c
f
k
+
k
(
k
−
1
)
r
ˉ
f
f
Merits = \frac{k*\bar{r}_{cf}}{\sqrt{k+k(k-1)\bar{r}_{ff}}}
Merits=k+k(k−1)rˉffk∗rˉcf
其中,
r
ˉ
f
f
\bar{r}_{ff}
rˉff是候选特征与其它特征之间的平均相关性(这里是指对称不确定性SU),
r
ˉ
c
f
\bar{r}_{cf}
rˉcf是候选特征与类之间的平均相关性。
CFS 首先从训练集中计算特征目标和特征-特征相关矩阵即SU,然后用最佳优先搜索(best first search)搜索特征子集空间。开始时没有特征选择,并产生了所有可能的单个特征;计算特征的评估值,并选择Merit 值最大的一个特征进入 M,然 后选择第二个拥有最大的Merit 值的特征进入 M,如果这两个特征的Merit 值小于原来的 Merit 值,则去除这个第二个最大的Merit 值的特征,然后在进行下一个,这样依次递进, 直到找出指定个使Merit 最大的特征组合。CFS采用的是一种贪心算法。