第06回: PCA バイプロット
資料のダウンロード
| ファイル | 内容 |
|---|---|
| exercise.py | ハンズオン演習スクリプト |
ヒントの使い方
python exercise.py --hint 1 # 方向性ヒント
python exercise.py --hint 1 --level 2 # より具体的なヒント
python exercise.py --hint 1 --level 3 # コード例
python exercise.py --check # 提出前の自己チェック
演習問題への取り組み方
- 下の講義ノートを読む(事前学習・2時間目安)
exercise.pyを実行してグラフを確認する- 演習問題(5問)に取り組む
python exercise.py --checkで確認するexercise.pyを提出する(締切は授業後1週間)
詰まったとき
解決しない場合は Q&A ページの投稿フォームを使ってください。
講義ノート
1. バイプロットとは何か
第5回では PCA のスコアプロット(地点の分布)を描きました。しかし、その散布図だけでは「なぜその地点がその位置にいるのか」という原因が見えません。バイプロット(biplot)は、観測値(地点)のスコアと変数のローディング矢印を1枚のグラフに重ねることで、この「なぜ」を直接読み解く手法です。
「bi(二重)」という接頭辞は、スコア空間とローディング空間の2つの情報を同時に表示することに由来します。1971年に K.R. Gabriel が提案した古典的な可視化手法で、現在も環境科学・マーケティング・生物学など幅広い分野で使われています。
2. スコアプロットとローディングプロット:2つの空間
バイプロットを正しく読むためには、重ね合わさった2つの空間を区別することが重要です。
スコアプロット(点)
各点は1つの観測値(本講義では1地点)を表します。座標は PC1・PC2 への射影値、すなわち元の特徴量を主成分方向に投影したときの値(スコア)です。第5回で学んだスコアプロットと同じものです。
- 2点が近い → 元の特徴量が似ている地点
- 2点が遠い → 特徴量が異なる地点
ローディングプロット(矢印)
各矢印は1つの元変数を表します。矢印の向きは「その変数がどの主成分方向に強く効くか」を示し、矢印の長さは「その変数がPC1/PC2の2次元でどれだけ表現されているか」を示します。
これら2つの空間は異なるスケールを持つため、バイプロットではどちらかを係数で調整して重ねます。演習コードの scale 引数がこのスケール調整に対応します。
3. 矢印の長さ・角度・共線性の意味
矢印の長さ: 共通性(communality)
矢印が長い変数は、PC1/PC2 の2次元によってよく説明されている変数です。数式で言えば、第 \(j\) 変数のローディングベクトル \((\ell_{1j}, \ell_{2j})\) の長さ
が1に近いほど「この2主成分でその変数の分散のほとんどを説明できている」ことを意味します。逆に短い矢印は「この変数は PC3 以降で説明される」ことを示唆します。
矢印の角度: 変数間の相関
2つの矢印のなす角は元変数間の相関と対応します。
| なす角 | 解釈 |
|---|---|
| 約0° (同じ方向) | 正の相関が強い |
| 約90° (直角) | ほぼ無相関 |
| 約180° (反対方向) | 負の相関が強い |
今回のデータで言えば、「騒音」と「混雑度」の矢印が近い方向を向いていれば、この2変数は正の相関を持つことがバイプロットから読めます。相関ヒートマップと照合することで、この解釈を数値で確認できます。
矢印の方向と点群の位置: 変数と観測値の関係
点が特定の矢印の方向に集まっている場合、その点群はその変数の値が高い観測値に相当します。逆に矢印の反対方向にある点群はその変数の値が低い観測値です。
例: 「緑化率」の矢印が PC1 の負の方向を向いており、「公園」クラスターが同じく PC1 の左側に集まっている → 公園は緑化率が高い、という関係がバイプロット1枚から読める。
4. バイプロットから得られる洞察の実例
本講義の都市空間データで期待される読み方を具体的に示します。
洞察1: 「快適軸」vs「都市圧力軸」の発見
PC1 のローディングを見ると、noise_level・crowd_density・stress_score が正の方向、green_ratio・happiness_score が負の方向を向いていると予想されます。これはバイプロット上で「右側 = 都市の圧力が高い地点(駅前・オフィス街)」「左側 = 自然・快適さが高い地点(公園・住宅地)」という軸として現れます。このような発見は、事前に仮説を立てずにデータを眺めるだけでは気づきにくいものです。
洞察2: ストレスと幸福感の対称性
stress_score と happiness_score の矢印がほぼ反対方向を向いていれば、この2変数は強い負の相関を持ちます。「ストレスが高い = 幸福感が低い」という直感的に当然な関係が、バイプロットで視覚的に確認できます。ただし、完全に反対にならない場合は「ストレスが高くても幸福感がある地点」が存在することを示唆し、分析の次のステップへの問いにつながります。
洞察3: PM2.5 と季節変数の独立性
pm25 の矢印が PC2 方向に大きく向いている一方で PC1 への寄与が小さい場合、大気汚染は「都市圧力 vs 快適性」とは独立した次元(例: 季節や気候の軸)で変動していることがわかります。これは「PM2.5 は都市の賑やかさより季節に左右される」という環境科学的な解釈を支持します。
5. バイプロットの限界と注意点
スケールの恣意性
スコアとローディングは異なるスケールを持つため、どちらかを係数で調整して重ねます。この係数(演習コードの scale)の選択によって視覚的な印象が変わることに注意が必要です。矢印の絶対的な長さよりも、相対的な長さと方向を比較することが重要です。
次元の情報落ち
PC1/PC2 の2次元だけを見ているため、累積寄与率が低い場合(例: 60% 程度)は元データの40%の情報がバイプロットに反映されていません。解釈を過信せず、「2次元での近似的な描像」として扱うことが必要です。
外れ値の影響
PCA は分散(距離の二乗)を最大化するため、外れ値に敏感です。バイプロットで極端に遠い点がある場合、その点が主成分の方向を引っ張っている可能性があります。
6. 本日のまとめ
| 要素 | 意味 |
|---|---|
| スコア(点) | 各地点の PC1/PC2 空間での座標 |
| ローディング(矢印) | 各変数が主成分方向に持つ重み |
| 矢印の長さ | 2次元での説明割合(共通性) |
| 矢印の向き | 変数間の相関関係の近似 |
| 点と矢印の位置関係 | 「どの変数がどの地点を特徴づけるか」 |
バイプロットは PCA の結果を最も情報密度高く伝える可視化の一つです。ただし「見えること」と「事実」は別物であり、仮説の出発点として使い、別の統計的検証で裏付けることが重要です。
次回予告
第7回からはクラスタリングに進みます。PCA でデータの構造を「見る」のに対し、クラスタリングは「グループに分割する」ことを目的とします。k-means 法の仕組みと、PCA 空間でのクラスター可視化を組み合わせる方法を学びます。