0
私は現在、固有行列を使ってPCAを研究しています。 PCAを行うためには、共分散行列を求めることは不可欠ですが、私が手で共分散行列を求め、Matlabの結果と比較するたびに、それらは完全に異なります。共分散行列の基本概念とMatlabでの使用方法
以下は、共分散行列を取得する簡単なコードです。
x=[-4 9 5;3 3 5;1 3 -1;8 1 7];
c=cov(x);
M=[2 4 4];
beforecov=x-repmat(M,4,1);
summat=zeros(3,3,4);
for i=1:4
summat(:,:,i)= beforecov(i,:)'*beforecov(i,:);
end
cov_onmyown=(summat(:,:,1)+summat(:,:,2)+summat(:,:,3)+summat(:,:,4))/4;
x
は、3つの特徴を有する4つのサンプルを有するマトリックスである。結果は
c=[24.667 -16 6;
-16 12 0;
6 0 12]
です。これで、手動で共分散行列を取得しました。私は何をしようとしたが、以下に書かれている共分散行列の定義を使用することである:
COV[X]=E[(X-u)(X-u)']
平均行列は私は各サンプル(コードでbeforecov
)用X-u
た[2 4 4]
あります。次に、4つのサンプルごとに3x3のマトリックスを作成し、4(サンプル数)で割った。
しかし、コード内のc
とcov_onmyown
の結果はまったく異なります。
cov_onmyown=[18.5, -12, 4.5;
-12, 9, 0;
4.5, 0, 9]
私の考えに間違っていますか?