主成分分析(PCA)が機械学習における高次元データを簡素化する仕組みを学びます。データ前処理やYOLO26埋め込みの可視化にPCAを活用する方法を探求します。
主成分分析(PCA)は機械学習(ML)で広く用いられる統計手法であり、高次元データの複雑性を簡素化しつつ、最も本質的な情報を保持する。 これは次元削減の手法として機能し、 多数の変数を含む大規模なデータセットを、 より扱いやすい「主成分」の小さな集合へと変換します。 データが最も変動する方向を特定することで、 PCAはデータサイエンティストが計算コストを削減し、 重要なパターンを失うことなくノイズを除去することを可能にします。 このプロセスは効果的なデータ前処理における重要なステップであり、 複雑なデータセットを2次元または3次元で可視化するために頻繁に利用されます。
本質的に、PCAは分散に基づいてデータを再編成する線形変換技術である。画像のピクセル値やIoTネットワークのセンサー測定値など、多くの特徴量を持つデータセットでは、変数が伝える情報がしばしば重複する。PCAは分散を順次最大化する、相関のない新たな変数(主成分)を特定する。 第1主成分はデータ内の変動を可能な限り多く捉え、第2主成分は次に大きな変動量を(第1主成分と直交しながら)捉える、というように続く。
上位の数個の成分のみを保持し、残りを破棄することで、実践者は大幅な圧縮を実現できる。 これは次元性の呪いを緩和するのに役立つ。 これは、利用可能な訓練サンプルに対して特徴量の数が増加するにつれて、 予測モデリングの性能が低下する現象である。
PCAは汎用性が高く、データクリーニングからモデル内部の可視化まで、AI開発ライフサイクルの様々な段階をサポートします。
主成分分析(PCA)は特徴抽出の標準的な手法であるが、他の次元削減手法との違いを明確にすることが有用である:
次の例は scikit-learn 高次元特徴ベクトルを削減する。
このワークフローは、ビジョンモデルの出力結果を保存前に圧縮する処理をシミュレートする。
ベクトルデータベース またはクラスタリングに使用すること。
import numpy as np
from sklearn.decomposition import PCA
# Simulate 100 image embeddings, each with 512 dimensions (features)
embeddings = np.random.rand(100, 512)
# Initialize PCA to reduce the data to 3 principal components
pca = PCA(n_components=3)
# Fit and transform the embeddings to the lower dimension
reduced_data = pca.fit_transform(embeddings)
print(f"Original shape: {embeddings.shape}") # Output: (100, 512)
print(f"Reduced shape: {reduced_data.shape}") # Output: (100, 3)
Ultralytics 上のパイプラインにPCAを統合することで、 入力の複雑さを軽減しモデルトレーニングを効率化できるため、 実験の高速化とより堅牢なAIソリューションの実現につながります。