最近由于工作需要,对数据进行降维处理,通过对各种算法的研究,想寻找一种比较理想的算法,处理数据维度,达到降维的目的,对PCA进行研究,但是PCA是对当前多维数据的空间变换,无法达到物理降维的目的,因此想选择物理降维的算法,因此对卡方算法和relief算法进行相关研究,这两种算法是对数据的物理降维,是特征选择的操作算法。
通过几天的查找资料,整理和总结一下内容:
个人总结:
relief算法是基于现有训练数据样本的预测算法。
即:需要有当前数据集,能够从中分辨出同类样本和不同类样本,然后,从不同分类中选择相关的样本数据,计算各个属性的相关权重。
这也是我开始比较迷茫的一点:不知道如何选择样本R,H,M。我从开始的观点是没有训练样本,是对未知数据集的特征选择。因此在算法的开始,无法选择样本R,H,M。后来同事提醒我,这是有训练样本数据的,从这个观点出发,可以很容易的获取R,H,M。
在以下算法代码中,使用了随机抽取R样本,根据距离获取H和随机抽取M样本的方式实现代码。
relief的算法相关原理:
Relief算法是一种特征权重算法(Feature weighting algorithms),根据各个特征和类别的相关性赋予特征不同的权重,权重小于某个阈值的特征将被移除。Relief算法中特征和类别的相关性是基于特征对近距离样本的区分能力。算法从训练集D中随机选择一个样本R,然后从和R同类的样本中寻找最近邻样本H,称为Near Hit