运用机器学习算法时由于初始数据集的各种问题,往往需要进行预处理,特征选择通常也作为预处理的一种,用于剔除无关特征,减少特征维度,减小维度灾难的问题。举个例子的话,在评估某市的房价时,房价和地段、交通、城市区域等因素关系密切,但与街道名字这种因素就可能完全没有关系,需要去除掉。

根据《机器学习》的内容粗略做一下笔记。

过滤式选择(relief)

如果用一个量值来表示一个特征与样本是否有关,让与样本相关度高的特征的这个值比相关度低的大。我们可以这样考虑:

如果某个特征与样本相关度高,那么同类样本的此特征差异普遍较小,而不同类别的样本此特征差异普遍较大;反之如果相关度低,那么同类样本与不同类样本之间的差异普遍不明显。那么可以根据此性质,用猜对的最近邻$x_{i,nm}$(猜中近邻)和猜错的最近邻$x_{i,nm}$(猜错近邻)两个样本来代表所有样本

对于特征j的统计分量为:

$$ \delta^{j}=\sum_{i}-diff(x_{i}^{j},x_{i,nh}^{j})^{2}+diff(x_{i}^{j},x_{i,nm}^{j})^{2} $$

其中$diff(a,b)$对于离散型数据,a,b相同为0,不同为1,对于连续性数据,表示规范化(归一化)后的a,b距离。

判断特征是否相关时,可以设置阈值$\tau$筛选,或者指定取k个最相关的特征。

此算法只适合二分类问题,多分类问题需要进行调整为:

$$ \delta^{j}=\sum_{i}-diff(x_{i}^{j},x_{i,nh}^{j})^{2}+\sum_{l\neq k}\left(p_{l}*diff(x_{i}^{j},x_{i,l,nm}^{j})^{2}\right) $$

其中$p_{l}$为第l类样本在数据集中的比例。

包裹式选择

通过最终学习器得到的结果来决定特征选择,时间开销大,需要采用适当停止策略。

随机选择特征子集,用交叉验证计算误差,把误差更小或者误差近似但特征数更少的特征子集保留下来。

子集搜索采用随机策略(拉斯维加斯方法)

嵌入式选择

与用于预处理的特征选择不同,嵌入式选择是与机器学习算法结合在一起的,在执行算法的过程中同时完成特征选择。

如果解的特征矩阵有许多0解,可以使一些特征的权重为 0,即得到稀疏解。使用$L_{1}$范数的正则化可以减少非零解的数量,就间接的进行了特征选择的过程。

给自己记一下之后应该会用到的重点,稀疏表示