はじめに
データ分析や機械学習では、
「特徴量(説明変数)が多すぎる」問題に直面することがよくあります。
特徴量が多いと、
- モデルが複雑になりすぎる
- 計算コストが増える
- 過学習しやすくなる
これを防ぐための基本的なテクニックが、
「次元削減(Dimensionality Reduction)」です。
この記事では、次元削減の代表的な手法である
主成分分析(PCA:Principal Component Analysis)について解説します!
🔹 統計自主学習シリーズまとめページはこちら
▶【初心者向け】統計自主学習シリーズまとめ
次元削減とは?
次元削減とは、
たくさんある特徴量を、できるだけ情報を失わずに少ない数にまとめることです。
- 元のデータの「本質的な情報」だけを抜き出す
- 不要なノイズを減らして、シンプルなデータにする
次元削減を行うと、
- 可視化しやすくなる
- モデルが軽くなり、汎化性能(新しいデータへの強さ)が向上する
主成分分析(PCA)とは?
PCA(Principal Component Analysis)は、
データの分散(ばらつき)を最大限に保ちながら、新しい軸を作る方法です。
簡単に言うと、
- もともとの特徴量を「情報量が多い順に並び替える」
- 最初の数個だけを使って、データをコンパクトに表現する
PCAの考え方
- データのばらつき(分散)が一番大きい方向に新しい軸(第1主成分)を取る
- そこから直交する方向に、第2主成分、第3主成分…を取っていく

PCAのメリット・デメリット
メリット
- データを圧縮できる
- 可視化(2次元や3次元)しやすくなる
- モデルの学習時間が短くなる
- 過学習のリスクが減る
デメリット
- 主成分はもともとの特徴量の意味を持たない(解釈しにくい)
- 非線形な構造(曲がった構造)には弱い
PCAのPython実装例
実際にPythonでPCAを使ってみましょう!
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
# データ読み込み
iris = load_iris()
X = iris.data
y = iris.target
# PCAで2次元に圧縮
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
# 結果を可視化
plt.figure(figsize=(8,6))
plt.scatter(X_pca[:,0], X_pca[:,1], c=y, cmap='viridis')
plt.xlabel('第1主成分')
plt.ylabel('第2主成分')
plt.title('PCAによるIrisデータの2次元化')
plt.colorbar(label='クラス')
plt.show()
主成分分析でよく見る指標:寄与率
PCAでは、「各主成分がどれだけ元のデータを説明できるか」を示す
寄与率(explained variance ratio)が重要です。
pythonコピーする編集するprint(pca.explained_variance_ratio_)
例えば、
第1主成分が70%、第2主成分が20%を説明できるなら、
合計90%の情報を2つの軸で表現できている、という意味になります。
まとめ
- 主成分分析(PCA)は、データの分散を最大限に保ちながら次元を減らす手法
- 情報をなるべく失わずに、データをコンパクトに表現できる
- 可視化や過学習防止に役立つが、解釈の難しさに注意
- Pythonでは簡単にPCAを使える!
✅ 次回は、さらに一歩進んで、
クラスタリング(教師なし学習)入門にも挑戦していきましょう!
【あわせて読みたい】
🔹 次におすすめの記事
🔹 関連記事
▶「正規分布とは?現実世界と機械学習での使われ方・特徴をやさしく解説」
▶主要6モデルをやさしく解説!線形回帰・ロジスティック回帰・KNN・SVM・決定木・ランダムフォレストとは?
▶分類問題の基礎!混同行列・精度・再現率・F1スコアの正しい使い方
▶なぜ標準化・正規化でモデルの精度が上がるのか?実例と一緒に解説
🔹 統計自主学習シリーズまとめページはこちら
▶【初心者向け】統計自主学習シリーズまとめ


コメント