Relief算法是一种特征权重算法(Feature weighting algorithms),根据各个特征和类别的相关性赋予特征不一样的权重,权重小于某个阈值的特征将被移除。Relief算法中特征和类别的相关性是基于特征对近距离样本的区分能力。算法从训练集D中随机选择一个样本R,而后从和R同类的样本中寻找最近邻样本H,称为Near Hit,从和R不一样类的样本中寻找最近邻样本M,称为NearMiss,而后根据如下规则更新每一个特征的权重:若是R和Near Hit在某个特征上的距离小于R和Near Miss上的距离,则说明该特征对区分同类和不一样类的最近邻是有益的,则增长该特征的权重;反之,若是R和Near Hit在某个特征的距离大于R和Near Miss上的距离,说明该特征对区分同类和不一样类的最近邻起负面做用,则下降该特征的权重。以上过程重复m次,最后获得各特征的平均权重。特征的权重越大,表示该特征的分类能力越强,反之,表示该特征分类能力越弱。Relief算法的运行时间随着样本的抽样次数m和原始特征个数N的增长线性增长,于是运行效率很是高。具体算法以下所示:算法
因为Relief算法比较简单,但运行效率高,而且结果也比较使人满意,所以获得普遍应用,可是其局限性在于只能处理两类别数据,所以1994年Kononeill对其进行了扩展,获得了ReliefF做算法,能够处理多类别问题。该算法用于处理目标属性为连续值的回归问题。ReliefF算法在处理多类问题时,每次从训练样本集中随机取出一个样本R,而后从和R同类的样本集中找出R的k个近邻样本(near Hits),从每一个R的不一样类的样本集中均找出k个近邻样本(near Misses),而后更新每一个特征的权重,以下式所示:3d