
1.1 原理介绍
ReliefF算法能够直接对多分类问题中的参数进行选择,搜索当前样本的各种近邻,然后综合计算。ReliefF算法的原理是根据各个特征和类别的相关性赋予特征不同的权重,而特征参数的权重是各特征的统计量指标之和,权重小于某个阈值的特征将被移除。特征的权重越大,表示该特征对分类贡献度越高,反之,表示该特征对分类贡献度越低。选取那些对分类贡献度高的特征组成特征参数子集,即可优化选取特征。
1.1.1 算法思想
ReliefF算法需要有分类标签或回归标签,以分类问题为例,该算法基于目标特征的样本的类内和类外距离作为衡量标准,来计算样本集各维特征的重要性得分,得分越高代表越重要。
1.1.2 算法流程
ReliefF算法的总体思想可以用一句话概括:对分类有用的是重要特征,对分类无用的是不重要特征。
ReliefF算法的输入包括3个变量,即训练数据集、样本个数和最邻近样本个数,分别设输入为训练数据集D、样本个数为m、最近邻样本个数为k,输出为预测的特征权值向量W,其具体流程包括以下8个步骤。
第1步:初始化特征权值向量W(A)=0,特征A=1,2,…,p。
第2步:for i=1:m。
第3步:从D中随机选择一个样本记为Ri。
第4步:找到与样本Ri同类的k个最近邻Hj。
第5步:对每个类C≠class(Ri),找出与Ri不同类的k个最近邻Mj(C)。
第6步:for A=1:p,更新权重W(A)=W(A)+A对特征下k个类外样本距离和求函数值-对A特征下k个类内样本距离和求函数值。
第7步:循环第6步1到p个特征。
第8步:转到第2步,循环m个样本。
1.1.3 算法详细介绍
ReliefF算法可以处理多分类问题,也可以用于处理目标属性为连续值的回归问题。ReliefF算法在处理多分类问题时,每次从训练样本集中随机取出一个样本R,然后从和R同类的样本集中找出R的k个近邻样本(Near Hits),再从每个R的不同类样本集中找出k个近邻样本(Near Misses),更新每个特征的权重。下面首先介绍分类问题中的ReliefF算法。
假设样本集X={x1 ,x2 ,…,xn}, 任一样本由q维特征表示, 样本所属的标签集L={l1 ,l2 ,…,lr}。
第1步, 先对样本集的每一维进行标准化:,
是样本均值。 为方便起见, 下文继续使用符号X表示经过标准化之后的样本集。
第2步,将样本随机排序:根据标签将不同类的样本分到各类别下的样本集中。下文用Xli表示所有属于li类的样本组成的样本集,i∈{1,2,…,r}。
从样本X中随机选择m个样本, 用于特征选择 (一般m=n, 即只是对全样本顺序进行打乱)。
第3步, 计算距离: 假设其中某个样本及其标签
, 采用一种距离计算公式, 如欧几里得距离 (以下简称欧氏距离)。

计算与在
中的同类样本的距离大小, 并取出距离最小的前k个样本 (不算自身) , 即取出的样本为:

其中,表示
中与
有相同标签的样本中与
的欧式距离第k小的距离值。
同样, 依次计算在
中的某一非同类样本的距离大小, 并分别取出该类中与
距离最小的前k个样本, 即在某一标签为
的非同类样本集中取出的样本为:

其中,表示
中标签为
, 且与
不同的样本中与
欧式距离第k小的距离值, j共有r-1种取值, 因为除
以外的标签有r-1种。
先利用中的样本进行类内k近邻距离和计算。
对中的样本取其某一维的特征, 即上述样本集中第j维特征为:

使用1范数计算两个样本在第j维特征上的距离:

用, (i=1,2,…,k) 给这k个样本赋权, 通常参数δ默认值为+∞, 即每个样本的权重均为1/k, 可以通过调节δ对权重分配进行调整。
计算的第j维特征在
范围内的类内k近邻距离和为:

再利用中的样本进行类外k近邻距离和计算。
用表示标签集L中与
不同的r-1个其他标签。
用表示标签为
的样本占
的比例。
则的第j维特征在
范围内的类外k近邻距离和为:

式 (1-7) 表达的是:的第j维特征在
范围内, 与各种其他类别的k近邻样本在第j维特征上的距离加权和的类概率加权和的标准化结果。
第4步, 计算每一维特征的重要性得分:所提供的第j维特征的重要性得分score(i,j)为其类外k近邻距离和与类内k近邻距离和之差, 即:

第5步,遍历每一个样本,加总每一维特征的重要性得分,得到最终重要性得分:整个样本集x反映的第j维特征的重要性得分scorej为中所有样本的第j维特征的重要性得分之和
, 即:

通过比较各维特征的得分,可以得出哪些特征对体现样本的类别有重要帮助的结论。从式(1-9)可知,每一维特征的得分评价标准是:每种非同类的k个最近邻样本在该维上的距离越大、同类的k个最近邻样本在该维上的距离越小,则这样的特征越好。