私が持っていると仮定次元データセットNの寸法が略直交する(相関ゼロを有する)を。
次の点で有用性はありますか?
- 可視化
- 表現(分類子の効率のため)
- または他の基準
データの次元削減を実行するには?
私が持っていると仮定次元データセットNの寸法が略直交する(相関ゼロを有する)を。
次の点で有用性はありますか?
データの次元削減を実行するには?
回答:
@ Peter-Flomの回答の下に残したコメントを明確にしたかったのですが、おそらく回答に書き込む価値があります。ほぼ直交するデータに対してPCAを実行することで、どの程度次元を削減できますか?答えは、相関行列と共分散行列のどちらでPCAを実行するかによって異なります。
相関行列でPCAを使用している場合、これは単位行列とわずかに異なるだけなので、すべての方向を「同等に有益」にする球形の対称性があります。PCAの前に変数の分散を1に再スケーリングすることは、同じ結果を生成する数学的に同等のアプローチです。PCAの出力では、他のコンポーネントよりも分散がわずかに小さいいくつかのコンポーネントが識別されますが、これは(母集団の相関がゼロであると仮定した場合)、サンプルの偶然の変動にすぎないため、これらを排除する理由にはなりません。コンポーネント。実際、サンプルサイズを大きくすると、コンポーネントの標準偏差間のこのような差異は、大きさが小さくなるはずです。これはシミュレーションで確認できます。
set.seed(123)
princompn <- function(n, sd1=1, sd2=1, sd3=1, sd4=1, cor=TRUE) {
x1 <- rnorm(n, mean=0, sd=sd1)
x2 <- rnorm(n, mean=0, sd=sd2)
x3 <- rnorm(n, mean=0, sd=sd3)
x4 <- rnorm(n, mean=0, sd=sd4)
prcomp(cbind(x1,x2,x3,x4), scale.=cor)
}
出力:
> pc100 <- princompn(100)
> summary(pc100)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 1.0736 1.0243 0.9762 0.9193
Proportion of Variance 0.2882 0.2623 0.2382 0.2113
Cumulative Proportion 0.2882 0.5505 0.7887 1.0000
>
> pc1m <- princompn(1e6)
> summary(pc1m)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 1.0008 1.0004 0.9998 0.9990
Proportion of Variance 0.2504 0.2502 0.2499 0.2495
Cumulative Proportion 0.2504 0.5006 0.7505 1.0000
ただし、相関行列の代わりに共分散行列を使用してPCAを実行する場合(同等:PCAを適用する前に標準偏差を1にスケーリングしない場合)、答えは変数の広がりに依存します。変数の分散が同じである場合、球対称性があるため、「特権の方向」はなく、次元削減を達成できません。
> pcEqual <- princompn(n=1e6, sd1=4, sd2=4, sd3=4, sd4=4, cor=FALSE)
> summary(pcEqual)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 4.0056 4.0010 3.9986 3.9936
Proportion of Variance 0.2507 0.2502 0.2499 0.2492
Cumulative Proportion 0.2507 0.5009 0.7508 1.0000
ただし、高分散変数と低分散変数が混在しているため、対称性は、いくつかの広い軸と他の薄い軸を持つ楕円体に似ています。この状況では、高分散変数(楕円が広い場合)に負荷がかかる高分散コンポーネントと、低分散変数(楕円が狭い方向)に負荷がかかる低分散コンポーネントがあります。
> pcHiLo <- princompn(n=1e6, sd1=4, sd2=4, sd3=1, sd4=1, cor=FALSE)
> summary(pcHiLo)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 4.0018 3.9985 1.0016 1.00005
Proportion of Variance 0.4709 0.4702 0.0295 0.02941
Cumulative Proportion 0.4709 0.9411 0.9706 1.00000
> round(pcHiLo$rotation, 3)
PC1 PC2 PC3 PC4
x1 0.460 0.888 0.000 0.000
x2 -0.888 0.460 0.000 0.000
x3 0.000 0.000 -0.747 -0.664
x4 0.000 0.000 0.664 -0.747
変数の分散が非常に異なる(幾何学的に楕円体であるが、すべての軸が異なる)場合、直交性により、最初のPCは最も分散の大きい変数に非常に大きく負荷をかけることができます。
> pc1234 <- princompn(n=1e6, sd1=1, sd2=2, sd3=3, sd4=4, cor=FALSE)
> summary(pc1234)
Importance of components:
PC1 PC2 PC3 PC4
Standard deviation 3.9981 3.0031 1.9993 1.00033
Proportion of Variance 0.5328 0.3006 0.1332 0.03335
Cumulative Proportion 0.5328 0.8334 0.9667 1.00000
> round(pc1234$rotation, 3)
PC1 PC2 PC3 PC4
x1 0.000 0.000 -0.001 1.000
x2 0.001 -0.001 1.000 0.001
x3 0.003 -1.000 -0.001 0.000
x4 1.000 0.003 -0.001 0.000
最後の2つのケースでは、次元の削減を実現するために破棄することを検討する可能性のある低分散コンポーネントがありましたが、これは、最初に最小分散変数を破棄することとまったく同じです。基本的に、直交性により、低分散変数を使用して低分散コンポーネントを識別できるため、この方法で次元数を削減する場合、PCAを使用することのメリットを明確にすることはできません。
注意:変数が単位分散に再スケーリングされない場合(つまり、相関行列ではなく共分散を使用する場合)の議論に費やされた時間は、このアプローチが何らかの方法でより重要であることを示すものと見なすべきではありません。優れている"。状況の対称性は単に微妙なので、より長い議論が必要です。
ローカル線形埋め込み、ラプラシアン固有マップ、t-SNEなど、より一般的な非線形次元削減多様体学習法を試すことができます。
N次元の次元間の相関が0になるように、データに低次元の部分空間(多様体)が存在することは完全に可能です。たとえば、ここに示すように、原点または波形を中心とする点の円。PCAはこれを検出しませんが、他の方法は検出します。
そのような方法を見ることは、視覚化と探索的データ分析にとって特に興味深く、一般的です。分類器または他のモデル内で使用するには、トレーニングに適合し、これらのメソッドの多くを除外するテストに適用できるメソッドに制限する必要があります。これが主な関心事である場合は、教師なし事前トレーニングおよび(教師あり)機能エンジニアリングの方法も検討する必要があります。
すべてのN変数がほぼ直交している場合、次元削減は比較的ほとんど削減しません。例えばR
set.seed(123)
x1 <- rnorm(100)
x2 <- rnorm(100)
x3 <- rnorm(100)
x4 <- rnorm(100)
x5 <- rnorm(100)
x6 <- rnorm(100)
x7 <- rnorm(100)
x8 <- rnorm(100)
x9 <- rnorm(100)
x10 <- rnorm(100)
df1 <- cbind(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10)
pcsol <- princomp(df1)
loadings(pcsol)
本質的に、「直交」は「すでに最小サイズ」を意味します。
x1<-rnorm(100, sd=0.1)
そしてpcsol <- princomp(df1, cor=FALSE)
私たちが見ている場合は特に、その差がありますsummary(pcsol)
。(covがcorよりも優れたアプローチであることを示唆しているわけではありません。それが可能であるということだけです。)