実践上の問題:スケーリング
動画で見たように、PCA を実行する前にデータをスケーリングすると、PCA モデリングの結果が変化します。ここでは、スケーリングを行った場合と行わなかった場合でそれぞれ PCA を実行し、その結果をバイプロットで可視化して比較します。
変数間の分散が大きく異なる場合は、スケーリングが適切であることがあります。これは、変数の単位が異なる場合によく見られます。例えば、華氏(温度)とマイル(距離)のような場合です。スケーリングを使用するかどうかの判断は、主成分分析を行う上で重要なステップです。
この演習はコースの一部です
R による教師なし学習
演習の手順
同じ Pokemon データセットがワークスペースに pokemon として用意されていますが、新しい変数 Total が1つ追加されています。
- エディタの上部に、モデル内の各変数の平均と標準偏差を計算するコードがあります。このコードを実行して、元のデータにおける変数のスケールの違いを確認しましょう。
- スケーリングを行った上で
pokemonの PCA モデルを作成し、結果をpr.with.scalingに割り当てます。 - スケーリングを行わずに
pokemonの PCA モデルを作成し、結果をpr.without.scalingに割り当てます。 biplot()を使って両方のモデルを(1つずつ)プロットし、出力を比較しましょう。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Mean of each variable
colMeans(pokemon)
# Standard deviation of each variable
apply(pokemon, 2, sd)
# PCA model with scaling: pr.with.scaling
# PCA model without scaling: pr.without.scaling
# Create biplots of both for comparison