我在删除高度相关的组件时遇到了问题。我可以问如何做到这一点?
例如,我有 40 个实例和 20 个特征(随机创建)。特征 2 和 18 与特征 4 高度相关。而特征 6 与特征 10 高度相关。那么如何去除高度相关(冗余)的特征,例如 2、18 和 10?本质上,我需要剩余特征的索引 1、3、4、5、6、...、9、11、...、17、19、20。
Matlab代码:
x = randn(40,20);
x(:,2) = 2.*x(:,4);
x(:,18) = 3.*x(:,4);
x(:,6) = 100.*x(:,10);
x_corr = corr(x);
size(x_corr)
figure, imagesc(x_corr),colorbar
相关矩阵x_corr
看起来像
编辑:
我想出了一个办法:
x_corr = x_corr - diag(diag(x_corr));
[x_corrX, x_corrY] = find(x_corr>0.8);
for i = 1:size(x_corrX,1)
xx = find(x_corrY == x_corrX(i));
x_corrX(xx,:) = 0;
x_corrY(xx,:) = 0;
end
x_corrX = unique(x_corrX);
x_corrX = x_corrX(2:end);
im = setxor(x_corrX, (1:20)');
我对吗?或者你有更好的想法请发帖。谢谢。
edit2:这种方法与使用 PCA 相同吗?