データの実際の次元を視覚化する方法は?


8

名目上16次元のデータセットがあります。あるケースでは約100個、別のケースでは約20,000個のサンプルがあります。PCAとヒートマップを使用して行ったさまざまな探索的分析に基づいて、真の次元(つまり、「信号」のほとんどをキャプチャするために必要な次元の数)は約4であると確信しています。スライドを作成して、プレゼンテーションのためのその効果。私が反証しようとしているこのデータについての「従来の知恵」は、真の次元が1つまたは2つであるということです。

データセットの実際の次元を示すための優れた単純な視覚化とは何ですか?できれば、統計にある程度の経歴はあるが「実際の」統計学者ではない人にも理解できるようにしてください。


1
「true」を定義してください。
枢機卿の

@cardinal:やむを得ず主観的です。分散の「ほとんど」を捉える次元の量が必要です。
dsimcha

1
それはいいです。私はあなたが何をしているのかを確実に知りたかっただけです。多変量統計には興味深い例があります。たとえば、PCAの最小二乗の意味で保持するのに最適な数の用語を見つけたい場合は、実際のランクよりも小さいランク、つまり実際のランクを選択する必要があります。データが生成された基礎となる構造。
枢機卿

2次元を使用すると不適切な回答が得られ、4次元を使用すると適切な回答が得られる特定のケースを見つけます。これはあなたのポイントを理解するのに役立ちます-人々は例を理解しています。スクリープロットで「eblow」など-下記より一般的なものの一部にこれを追加
probabilityislogic

「例」は、3番目と4番目のコンポーネントのスコアが大きいケースです
確率論的

回答:


6

標準的なアプローチは、PCAを実行してからスクリープロットを表示することです。これは、選択する可能性のあるソフトウェアからそれを取得できるようにする必要があります。少しいじくり回すだけで、必要に応じて、特定の聴衆にとってよりわかりやすくすることができます。説得力がある場合もありますが、多くの場合あいまいであり、読み方について常に疑問を抱く余地があるため、スクリープロットが理想的です(編集:ではありません)。一見の価値があります。


3
@JMS、(+ 1)特にスクリープロットに関する注意事項。私はそれらを「標準」と呼びますが、「悪い考え」(一般的に言えば)とも呼びます。ここに注意書きと、特にMSEがメトリックである場合に、ランクをより安全に選択する方法があります。これは、思い出すと、MSEを最小化するために真のランクを選ぶのが間違っている例でもあります。
枢機卿

@cardinal(+1)オーセン&ペリーの記事へのリンクのThx。
ch

ある時点でスクリーンプロットを再発明したようですが、それらが何と呼ばれているのかはわかりませんでした。それらを思い出させ、それらが「標準」であることを知らせてくれてありがとう。私の目標は素敵な視覚化を生み出すことなので、シンプルで標準的で十分であり、複雑ですがより最適です。
dsimcha

2
@dsimcha、私は簡単なグーグル検索をしました、そして明らかに私が提供したリンクにアプローチを実装するRパッケージがあります。約20年前(多分30年)の素晴らしい論文があります。「標準的な」スクリープロットを使用した推論の欠点を明確に示しているThe American Statisticianを信じています。タイトルを思い出せるかどうかを確認し、リンクまたは参照を投稿します。標準だが(かなり)欠陥があるのは魅力的なアプローチですが、特に時間の制約がある場合は、そのような考え方には慎重に注意します。乾杯。
枢機卿

1
@JMS Zwick&Velicer(1986)による論文があり、並列分析(固有値を再サンプリングして観測値が偶然に期待した値よりも大きいかどうかをテスト)、またはスクリープロットまたはルートワンルールに対するMAP基準を使用することを主張しています。これらのシミュレーションでは、最初の2つの方法が他の方法(たとえば、92%対22%の精度)を大幅に上回って、コンポーネントの真の数を識別しています。Rパッケージpsychは、画面のようなグラフィックを伴う両方を実装します(fa.parallel()およびを参照VSS())。ペーパーは、「保持するコンポーネントの数を決定するための5つのルールの比較」です。
2010年

4

これを視覚化する1つの方法は次のとおりです。

  1. データに対してPCAを実行します。
  2. してみましょうベクトル空間は、最初の2つの主成分ベクトルで張られること、および聞かせて補完します。V VV
  3. データセットの各ベクトルを、要素と剰余項()の合計として分解します。これをます。(これは、PCAの結果を使用すると簡単です。) V V ⊤は、xはiは = V I + C IxiVVxi=vi+ci
  4. 散布図を作成します 対。| | v i | |||ci||||vi||

データが本当に次元である場合、プロットは平らな線のように見えるはずです。2

Matlab(投げられているすべての靴からダッキング):

lat_d = 2;   %the latent dimension of the generating process
vis_d = 16;  %manifest dimension
n = 10000;   %number of samples
x = randn(n,lat_d) * randn(lat_d,vis_d) + 0.1 * randn(n,vis_d); %add some noise
xmu = mean(x,1);
xc = bsxfun(@minus,x,xmu);    %Matlab syntax for element recycling: ugly, weird.
[U,S,V] = svd(xc);  %this will be slow;
prev = U(:,1:2) * S(1:2,1:2);
prec = U(:,3:end) * S(3:end,3:end);
normv = sqrt(sum(prev .^2,2));
normc = sqrt(sum(prec .^2,2));
scatter(normv,normc);
axis equal;  %to illlustrate the differences in scaling, make axis 'square'

これにより、次の散布図が生成されます。

コードによって作成された散布図

lat_d4に変更すると、ラインの平坦性が低下します。


@shabbychef、これは、(a)真の構造が線形多様体であり、(b)高分散方向が重要なものであることを前提としているようです。
枢機卿

1
@cardinalあなたは仮定と効果を混乱させるかもしれません。多様体の曲率はこれらの散布図の曲率として現れ、曲率の大きさはプロットの垂直変動の大きさで明らかになります。実際、シャビーシェフはデータを、低次元の線形空間のほぼ管状の近傍にあるものとして表示しています。それはデータの形に何の制限も課しません。
whuber

@shabbyshef +1分解のアイデア、そしてもちろん靴の言及:)
mpiktas

@ whuber、@ shabbychef、特に私が当時コンピューターから離れていたので、私は最初のコメントでおそらく少し慌てていました。最初はぼろぼろの説明も読み違えたので、陰謀を見ることができませんでした。これらは、標準ペアプロットを拡張するための優れた方法です。
枢機卿

1
@cardinalシリンダーを一般化した4Dの例を次に示します:i.imgur.com/9eF8N.png。モデルは加えてすべてに個別に追加されたnormal(0、.05)エラーです4つのコンポーネント。画像は、分散の減少順に並べられた、および iiduniform(0,1)の300 iid描画の散布図行列です。合計分散の比率は49.2%、46.5%、2.9%、1.4%です。下の2行は@shabbyのプロットをエミュレートしています。これらは、データの2Dに近い性質を示しながら、入力した小さな非線形性を明らかにしています。これはあなたが考えていたものですか?S T(s,t)(cos(2πt),sin(2πt),2s/5,t2)st
whuber

0

SASでPROC Varclusを使用して同様のことを行いました。基本的な考え方は、4クラスターソリューションを生成し、各クラスターで最も相関の高い変数を選択し、次に、この4クラスターソリューションが2クラスターソリューションよりも多くの変動を説明することを示すことです。2クラスタソリューションでは、Varclusまたは最初の2つの主要コンポーネントのいずれかを使用できますが、すべてがコンポーネントではなく変数によって説明されるため、Varclusが好きです。Rにはvarclusがありますが、同じことを行うかどうかはわかりません。

-ラルフ冬

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.