主要内容

主成分分析を使用した直交回帰の近似

この例では,主成分分析(pca)により線形回帰を近似する方法を示します。Pcaは,デ,タから近似モデルまでの垂直距離を最小化します。この分析は,直交回帰または全最小二乗と呼ばれるものの線形バージョンであり,応答変数と予測子変数の間に自然な区分がない場合,またはすべての変数が誤差ありで測定される場合に適しています。これは,予測子変数が正確に測定され,応答変数のみが誤差成分をもつ,通常の回帰仮定とは対照的なものです。

たとえば2つのデータベクトルxとyがある場合は,各ポイント(x(我),(我)から直線までの垂直距離を最小化する直線を近似できます。さらに一般的な例としては,p観測変数を使用して,p次元空間でr次元超平面を近似できます(r < p)。rの選択は,PCAで保持するための成分の数を選択することに相当します。つまり,予測誤差に基づく選択の場合もあれば,管理しやすい次元数までデータを縮小するという実際的な選択の場合もあります。

この例では,観測される3の変数に関するデタを使用して,平面と直線を近似します。これと同じことは,任意の数の変数,および任意の次元のモデルに対して容易に実行できます。ただし,高次元で近似を可視化することは,明らかに単純ではありません。

3次元デタへの平面のあてはめ

まず,三変量法線デ,タを例として生成します。変数のうの2は非常に緊密に相関されています。

rng (5“旋风”);X = mvnrnd([0 0 0], [1 .2 .7;.2 10 0;.7 0 1],50);plot3 (X (: 1) X (:, 2), X (:, 3),“波”);网格;maxlim = max(abs(X(:)))*1.1;轴([-maxlim maxlim -maxlim maxlim -maxlim maxlim]);轴广场视图(9、12);

图中包含一个轴对象。axis对象包含一个line类型的对象。

次に,pcaを使用して平面をデ,タにあてはめます。最初の2の主成分の係数によって,平面の基底を形成するベクトルが定義されます。3番目のPCは最初の2つのPCと直交しており,その係数によって平面の法線ベクトルが定義されます。

[coeff,score,roots] = pca(X);基= coeff(:,1:2)
基础=3×20.6774 -0.0790 0.2193 0.9707 0.7022 -0.2269
Normal = coeff(:,3)
正常=3×10.7314 -0.0982 -0.6749

近似の説明はこれですべてです。それでは,結果を詳しく考察して,デ,タと共に近似をプロットしてみましょう。

最初の2つの成分は2次元で可能な限り多くの分散について説明しているので,平面はデータに対する最良の2次元線形近似になっています。同様に3番目の成分はデータ内の最小量の分散について説明しており,回帰における誤差項になっています。Pcaからの特性根(固有値)は,各成分の説明分散の量を定義します。

pctExplained = roots' ./ sum(roots)
pctExplained =1×30.6226 0.2976 0.0798

主成分スコアの最初の2の座標は,平面に対する各ポントの投影を,平面の座標系で表しています。オリジナル座標系における近似ポイントの座標を取得するには,各PC係数ベクトルをそれに対応するスコアで乗算して,データの平均値を加算します。残差は,オリジナルデ,タから近似ポ,ントを差し引いたものになります。

[n,p] = size(X);mean(X,1);Xfit = repmat (meanX n 1) +得分(:1:2)*多项式系数(:,1:2)”;残差= X - Xfit;

Xfitの各近似ポ电子邮箱ントによって満たされる近似された平面の方程式は,([x1 x2 x3] - meanX)*normal = 0です。平面はポ@ @ントmeanXを通過し,原点までの垂直距離はmeanX *正常になります。Xの各ポイントから平面までの垂直距離,つまり残差のノルムは,各中心点と平面に対する法線とのドット積です。近似された平面は,二乗誤差の合計を最小化します。

error = abs((X - repmat(meanX,n,1))*正常);Sse = sum(误差。^2)
Sse = 15.5142

近似を可視化するには,平面,オリジナルデータ,および平面に対するオリジナルデータの投影をプロットします。

[xgrid, ygrid] = meshgrid (linspace (min (X(: 1))马克斯(X (: 1)), 5),...linspace (min (X(:, 2))马克斯(X (:, 2)), 5));zgrid = (1/normal(3)) .* (meanX*normal - (xgrid.*normal(1) + ygrid.*normal(2))));H = mesh(xgrid,ygrid,zgrid,“EdgeColor”,[0 0 0],“FaceAlpha”, 0);持有above = (X-repmat(meanX,n,1))*normal < 0;下面= ~上面;Nabove = sum(上);X1 = [X(上,1)Xfit(上,1)nan*ones(nabove,1)];X2 = [X(above,2) Xfit(above,2) nan*ones(nabove,1)];X3 = [X(above,3) Xfit(above,3) nan*ones(nabove,1)];plot3 (X1, X2, X3 ',“- - -”X(上图,1)X(上图,2),X(上图,3),“o”“颜色”,[0 .7 0]);Nbelow = sum(下面);X1 = [X(below,1) Xfit(below,1) nan*ones(nbelow,1)];X2 = [X(below,2) Xfit(below,2) nan*ones(nbelow,1)];X3 = [X(below,3) Xfit(below,3) nan*ones(nbelow,1)];plot3 (X1, X2, X3 ',“- - -”X(下图1)X(下面,2),X(下面,3),“o”“颜色”,[1 0 0]);持有maxlim = max(abs(X(:)))*1.1;轴([-maxlim maxlim -maxlim maxlim -maxlim maxlim]);轴广场视图(9、12);

图中包含一个轴对象。axis对象包含53个类型为surface、line的对象。

緑のポaapl . exeントは平面の上,赤いポaapl . exeントは平面の下になります。

3次元デタへの直線のあてはめ

これよりさらに簡単なのがデ,タへの直線のあてはめです。また,pcaには入れ子特性があるため,既に計算された成分を使用できます。直線を定義する方向ベクトルは,最初の主成分の係数によって指定されます。2番目と3番目のPCは最初のPCと直交し,これらのPCの係数によって,直線に対する垂直方向が定義されます。直線を描くための最も簡単な方程式はmeanX + t*直接です。ここで,tは直線に沿った位置をパラメ,タ,表現します。

direct = coeff(:,1)
dirVect =3×10.6774 0.2193 0.7022

主成分スコアの最初の座標は,直線に対する各ポ。2次元近似の場合と同様に,スコアで乗算されるPC係数ベクトルは,オリジナル座標系における近似ポイントを指定します。

Xfit1 = repmat (meanX n 1) +得分(:1)*多项式系数(:1)';

直線,オリジナルデ,タ,および直線に対するオリジナルデ,タの投影をプロットします。

T = [min(score(:,1))-。2,马克斯(得分(:1))+ 2];endpts = [meanX + t(1)*直接';meanX + t(2)* direct '];plot3 (endpts (: 1) endpts (:, 2), endpts (:, 3),“k -”);X1 = [X(:,1) Xfit1(:,1) nan*ones(n,1)];X2 = [X(:,2) Xfit1(:,2) nan*ones(n,1)];X3 = [X(:,3) Xfit1(:,3) nan*ones(n,1)];持有plot3 (X1, X2, X3 ',“b -”X (: 1) X (:, 2), X (:, 3),“波”);持有maxlim = max(abs(X(:)))*1.1;轴([-maxlim maxlim -maxlim maxlim -maxlim maxlim]);轴广场视图(9、12);网格

图中包含一个轴对象。axis对象包含52个line类型的对象。

このプロット内の多くの投影は直線に対して垂直になっていないように見えますが,これは3次元データを2次元でプロットしようとしているためです。実稼動時のMATLAB®の图ウィンドウでは,プロットをさまざまな視点に対話形式で回転することで,投影が実際に垂直であることを確認したり,直線とデータの近似の度合いを把握したりすることができます。