1、特征选择与压缩特征选择与压缩 目录 1. Relieff 算法算法 2 1.1 算法原理算法原理 2 1.2 主要代码主要代码 2 主程序: 2 ReliefRelief 核心算法:核心算法: .4 随机抽取随机抽取 K K 近邻代码:近邻代码: .6 1.3 结果分析结果分析 7 2. K-L 变换算法变换算法9 2.1 算法原理算法原理 9 2.2 主要代码主要代码 9 2.3 结果分析结果分析 . 10 对比两种方法图如下:对比两种方法图如下: 11 1. RELIEFF算法算法 1.1 算法原理算法原理 RELIEF 算法最早由 KIRA 提出, 最初局限于两类数据的分类问题。 REL
2、IEF 算法是一种特征权重算法(FEATURE WEIGHTING ALGORITHMS),根据各个特征 和类别的相关性赋予特征不同的权重,权重小于某个阈值的特征将被移除。 RELIEF 算法中特征和类别的相关性是基于特征对近距离样本的区分能力。 算 法从训练集 D 中随机选择一个样本 R,然后从和 R 同类的样本中寻找最近邻 样本 H,称为 NEAR HIT,从和 R 不同类的样本中寻找最近邻样本 M,称为 NEARMISS,然后根据以下规则更新每个特征的权重:如果 R 和 NEAR HIT 在 某个特征上的距离小于 R 和 NEAR MISS 上的距离,则说明该特征对区分同类 和不同类的最
3、近邻是有益的, 则增加该特征的权重; 反之, 如果 R 和 NEAR HIT 在某个特征的距离大于 R 和 NEAR MISS 上的距离,说明该特征对区分同类和 不同类的最近邻起负面作用,则降低该特征的权重。以上过程重复 M 次,最 后得到各特征的平均权重。特征的权重越大,表示该特征的分类能力越强, 反之,表示该特征分类能力越弱。RELIEF 算法的运行时间随着样本的抽样次 数 M 和原始特征个数 N 的增加线性增加,因而运行效率非常高。 1.2 主要代码主要代码 主程序: % 特征选择测试 nSample = 500, 500, 500; % 2维情况 dim = 6; coeff = -2
4、 0.8; -1 0.9; 2 0.7; -1 1.5; -1 1.4; -2 1.1, 1 0.9; -2 0.7; -2 0.8; 1 1.2; -1 1.1; -1 1.0, . -2 0.7; 2 0.8; -1 0.9; -1 1.3; 1 1.2; 1 1.3, ; data = createSample(nSample, dim , coeff); % 得到训练数据 nClass = length(nSample); tlabel = ; tdata = ; for i = 1 : nClass tlabel = tlabel; i * ones(nSample(i), 1);
5、tdata = tdata; datai; end % 调用relieff算法 m = 500; k = 20; outDim = 2; outData = stpReliefF( tlabel, tdata, nSample, m, k, outDim); % 绘制数据 result = cell(1, nClass); index = 0; for i = 1 : nClass resulti = outData(index+1 : index+nSample(i), :); index = index + nSample(i); end figure; subplot(1, 2, 1);
6、 plot(result1(:, 1), result1(:, 2), *, . result2(:, 1), result2(:, 2), o, . result3(:, 1), result3(:, 2), x); title(Relieff特征选择法); % KL变换法 outData = stpKLTransformAll( tdata, outDim); % 绘制数据 index = 0; for i = 1 : nClass resulti = outData(index+1 : index+nSample(i), :); index = index + nSample(i); end subplot(1, 2, 2); hold on; plot(result1(:, 1), result1(:, 2), *, . result2(:, 1), result2(:, 2), o, . result3(:, 1), result3(:,