PLS アルゴリズムによる次元削減

Beginner

This tutorial is from open-source community. Access the source code

はじめに

scikit-learn の cross_decomposition モジュールには、次元削減と回帰のための教師付き推定器が含まれており、特に偏最小二乗法 (Partial Least Squares: PLS) アルゴリズムに関するものです。これらのアルゴリズムは、2 つの行列を低次元の部分空間に射影することで、それらの間の基本的な関係を見つけます。このとき、変換後の行列間の共分散が最大になるようにします。

この実験では、scikit-learn が提供するさまざまな交差分解アルゴリズムを探索し、次元削減と回帰タスクにそれらをどのように使用するかを学びます。

VM のヒント

VM の起動が完了したら、左上隅をクリックして ノートブック タブに切り替え、Jupyter Notebook を使って練習しましょう。

Jupyter Notebook の読み込みには数秒かかる場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

学習中に問題がある場合は、Labby にお問い合わせください。セッション終了後にフィードバックを提供してください。すぐに問題を解決いたします。

必要なライブラリをインポートする

この実験に必要なライブラリをインポートして始めましょう。

import numpy as np
from sklearn.cross_decomposition import PLSRegression, PLSCanonical, CCA, PLSSVD

データセットを読み込む

次に、交差分解アルゴリズムを示すためにサンプルデータセットを読み込みます。簡単のため、ランダムな値を持つ 2 つの行列 XY を作成します。

np.random.seed(0)
X = np.random.random((100, 5))
Y = np.random.random((100, 3))

PLSRegression

PLSRegression モデルをフィットさせる

正則化線形回帰の一種である PLSRegression アルゴリズムから始めます。このモデルをデータにフィットさせます。

pls = PLSRegression(n_components=2)
pls.fit(X, Y)
データを変換する

フィットさせたモデルを使って元のデータを変換することができます。変換後のデータは次元が削減されています。

X_transformed = pls.transform(X)
Y_transformed = pls.transform(Y)

PLSCanonical

PLSCanonical モデルをフィットさせる

次に、2 つの行列間の標準相関を見つける PLSCanonical アルゴリズムを使用します。このアルゴリズムは、特徴量間に多重共線性がある場合に役立ちます。

plsc = PLSCanonical(n_components=2)
plsc.fit(X, Y)
データを変換する

フィットさせたモデルを使って元のデータを変換することができます。変換後のデータは次元が削減されています。

X_transformed = plsc.transform(X)
Y_transformed = plsc.transform(Y)

CCA

CCA モデルをフィットさせる

CCA アルゴリズムは PLS の特殊なケースで、標準相関分析(Canonical Correlation Analysis)を表します。これは 2 つの変数セット間の相関を見つけます。

cca = CCA(n_components=2)
cca.fit(X, Y)
データを変換する

フィットさせたモデルを使って元のデータを変換することができます。変換後のデータは次元が削減されています。

X_transformed = cca.transform(X)
Y_transformed = cca.transform(Y)

PLSSVD

PLSSVD モデルをフィットさせる

PLSSVD アルゴリズムは、交差共分散行列の特異値分解(Singular Value Decomposition: SVD)をただ一度だけ計算する PLSCanonical の簡略化バージョンです。このアルゴリズムは、成分数が 1 に制限されている場合に役立ちます。

plssvd = PLSSVD(n_components=1)
plssvd.fit(X, Y)
データを変換する

フィットさせたモデルを使って元のデータを変換することができます。変換後のデータは次元が削減されています。

X_transformed = plssvd.transform(X)
Y_transformed = plssvd.transform(Y)

まとめ

この実験では、scikit-learn によって提供される交差分解アルゴリズムを調べました。PLSRegression、PLSCanonical、CCA、および PLSSVD について学びました。また、これらのモデルをデータにフィットさせ、データを低次元表現に変換する方法も見ました。これらのアルゴリズムは、次元削減や回帰タスクに役立ちます。特に、特徴量間に多重共線性がある場合や、変数の数がサンプル数より多い場合に役立ちます。