相関性の高いコンポーネントを削除する際に問題が発生しました。これを行う方法を尋ねることができますか?
たとえば、20 個の機能 (ランダムに作成) を持つ 40 個のインスタンスがあります。特徴 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 を使用するのと同じですか?