1. ReliefF简介
ReliefF是特征选择的一种算法,在高维特征样本中,选取部分具有代表性的特征,从而降低样本特征维度。它也是relief算法的进阶。Relief算法只能用来做二分类,但其算法简单,效率高,结果不错,因此才有了其进阶算法ReliefF。ReliefF不仅可以完成多分类任务,也可以胜任回归任务。
2. relieff()函数
示例:
[ranks,weights] = relieff(X,y,k)
[ranks,weights] = relieff(X,y,k,Name,Value)
(1)输入参数
- X:样本数据集
- y:与X对应的样本标签
- k:一个超参数,relieff中用到了KNN最近邻算法,k为同类样本最近邻的数量。需要根据不同数据处理情况调整参数
- Name:一些拓展设置,一般不常用,详细可看matlab文档,其中‘method’比较常用,用来选择是做回归还是分类任务
- Value:为Name的值,‘method’对应的Value为’regression’或’classification’,对应的“回归”或分类
(2)输出参数
- ranks:对各个维度特征按照重要程度排序,例如ranks = [3,1,2],表示第3个维度最重要,第1个维度其次,第2个维度最不重要
- weights:原样本每个维度的重要权重,例如:weights = [0.5,0.1,0.4],表示第一个维度权重为0.5,最重要,第二个维度权重0.1,最不重要,第三个为0.4,第二重要
3. relieff()函数做分类任务特征选择
示例代码:
load fisheriris%matlab中自带的数据集
[ranks,weights] = relieff(meas,species,10,'method','classification')
结果如下:表示第4维度特征和第3维度特征权重较大,因此我们就可以取原数据中第4维度数据和第3维度数据用于分类,其余丢弃,将4维数据降到了2维
@注意@:标签是数字,函数会默认用于回归,如果想要标签是数字,但仍是用于分类,就需要加上‘method’,‘classification’;否则,函数会默认用于分类。上述例子中使用的species是字符串,因此默认用于分类,可以不需要加’method’,‘classification’。
4. relieff()函数做回归任务特征选择
%针对回归任务数据集,只需要将分类任务中的classification换成regression即可
[ranks,weights] = relieff(meas,species,10,'method','regression')
|