こんにちはJMPコミュニティ
K-meansクラスターで実行できる方法で一般的なスケールを使用してPCAを実行する方法はありますか?
一般的なスケールのK-meansクラスターの方がデータに適しているので質問しますが、クラスタリングデータを削除して、軸付きのPCAバイプロットを表示したいだけです。
一番、
質問を理解していない可能性がありますが、相関に対してPCAを実行すると、PCAはすべての変数を自動的に中央に配置してスケーリングします。 したがって、すべての変数は同じスケールになります。
こんにちは、PCAのスケーリングは、「列を個別にスケーリングする」オプションが選択されている場合のK-meansと同じです。
しかし、「個別にスケーリングされた列」オプションが選択されていない場合にKmeansが実行できるように、PCAで一般的なスケーリングを実行する方法を見つけることができません。
これを行う必要がある理由は、K-meansバイプロットに、軸によって説明される分散が含まれていないためです。K-meansプロットにその値を表示させる方法を知っている人がいれば、それをいただければ幸いです。
K-Meansに関するJMPヘルプから:
個別にスケーリングされた列
他の列とは独立して各列をスケーリングします。 変数が共通の測定尺度を共有せず、1つの変数がクラスタリングプロセスを支配することを望まない場合に使用します。 たとえば、ある変数の値が0〜1000で、別の変数の値が0〜10の場合があります。 この状況では、クラスタリングプロセスが最初の変数によって支配されないように、オプションを使用できます。
それらを個別にスケーリングしない場合は、変数をスケーリングしていません。
主成分でそれを再現したい場合は、スケーリングされていない主成分を選択します(主成分の赤いポップアップメニューから利用できます)。 ただし、これらの結果を理解するには、すべての変数が同じスケールである必要があることに注意してください。
に追加するには@Dan_Obermillerコメント、K Meansは、そのオプションを使用するときに列を中央揃えするのではなく、中央揃えにするので、PCAで分析を複製するには、最初に列を中央揃えにしてから、スケーリングされていないPCAを実行する必要があります。以下のスクリプトを実行すると、2変量スコアプロットが一致するはずです。
Names default to here(1);
dt = Open( "$Sample_data/Lipid Data.jmp" );
//Center columns
dt << New Column("Age Centered", Numeric, "Continuous", Format("Best", 10), Formula(:Age - Col Mean(:Age)));
dt << New Column("Weight Centered", Numeric, "Continuous", Format("Best", 10), Formula(:Weight - Col Mean(:Weight)));
dt << New Column("Cholesterol Centered", Numeric, "Continuous", Format("Best", 10), Formula(:Cholesterol - Col Mean(:Cholesterol)));
dt << New Column("Triglycerides Centered", Numeric, "Continuous", Format("Best", 10), Formula(:Triglycerides - Col Mean(:Triglycerides)));
//Window with both analyses:
New Window( "Compare",
H List Box(
//K Means common scale:
dt << K Means Cluster(
Y( :Age, :Weight, :Cholesterol, :Triglycerides ),
Columns Scaled Individually( 0 ),
{Single Step( 0 ), Number of Clusters( 3 ), K Means Cluster,
Go( Show Biplot Rays( [0, 0, 1] ), Biplot( 1 ) )}
),
//PCA unscaled using centered columns
dt << Principal Components(
Y( :Age Centered, :Weight Centered, :Cholesterol Centered, :Triglycerides Centered ),
Estimation Method( "Default" ),
"on Unscaled"
)
)
);