【徹底解説】PLS(部分的最小二乗法)とは

zuka

こんにちは。
zuka(@beginaid)です。

本記事は徹底解説シリーズの1つになります。記事一覧はこちらの目次ページからご覧ください。

目次

PLSとは

PLSは線形回帰分析を行うための手法の1つです。一般に,線形回帰では以下のような問題が起こります。

  • 説明変数に相関がある場合に多重共線性が生じる
  • サンプル数が極端に少ない場合にモデルが一意に定まらない
  • データに含まれるノイズから大きな影響を受ける

多重共線性に関しては,こちらの記事をご覧ください。PLSでは,これらの問題を解決することができます。具体的には,以下のような処方箋を出します。

説明変数に相関がある場合に多重共線性が生じる

無相関な新しい説明変数(潜在変数)を用いる

サンプル数が極端に少ない場合にモデルが一意に定まらない

全てのデータを踏まえて生成された潜在変数を少数用いる

データ含まれるノイズに大きな影響を受ける

重要度(標準回帰係数)の高い潜在変数から順番に用いる

モデル化

PLSは2つのフェーズからなります。

  1. 潜在変数抽出フェーズ
  2. 回帰誤差最小化フェーズ

従来の回帰分析では,回帰誤差最小化フェーズのみで回帰式を求めていました。これは最小二乗法に相当します。しかし,それでは説明変数に相関があった場合に回帰式が不安定になってしまう多重共線性の問題が生じてしまいます。

そこで,PLSでは入力変数を他の空間に射影することで新しい入力変数を生成します(潜在変数抽出フェーズ)。回帰式は,その新しい入力変数と目的変数の誤差を最小化するように求められます(回帰誤差最小化フェーズ)。

それでは,新しい入力変数はどのように抽出すれば良いのでしょうか。愚直に考えれば「元のデータをよく表すような射影」を利用すればよく,これは射影後のデータの分散が最大になるように潜在変数を抽出する主成分分析を利用すれば良いです。主成分分析については,以下の記事をご覧ください。

しかし,PLSの目的はあくまでも回帰式を求めることです。元のデータをよく表せるかどうかは大した問題ではなく,大事なのは「目的変数をよく表せられるかどうか」です。そこで,PLSでは「目的変数との内積(関連度)が最大になるように」潜在変数を抽出します。

PLS1モデルでは,説明変数のみを潜在変数で表します。一方,PLS2モデルでは目的変数も別の潜在変数で表すことで,より表現力を高めた分析が可能になります。以下では,PLS1モデルについて説明します。

定式化

ここから,数式を用いて記述していきます。

潜在変数抽出フェーズ

PLSでは,元のデータ$\mX \in \mathbb{R}^{N \times D}$の線形結合として潜在変数$\mZ \in \mathbb{R}^{N\times \tilde{D}}$を抽出します。抽出された潜在変数を用いて,説明変数$\vy \in \mathbb{R}^{N \times 1}$を表します。ただし,ここでは簡単のため目的変数は1次元(1つの特徴量)で表されるとしています。

まずは,潜在変数を抽出しましょう。

\begin{align}
\mZ &= \mX \mW \label{PLS1}
\end{align}

ただし,$\mW \in \mathbb{R}^{D\times \tilde{D}}$とし,$\mW$の要素$\vw_{\tilde{d}}$は$|\vw_{\tilde{d}}|^2=1$を満たすように正規化されているものとします。以下では,主成分分析と同様に潜在変数を逐次推定していくことを考えます。ですので,式($\ref{PLS1}$)を成分ごとに考えます。ただし,ここでいう「成分」というのは,サンプル数$N$方向ではなく潜在次元$\tilde{D}$(特徴量の個数)方向であることに注意してください。

以下では,一般に$r$番目の潜在変数を抽出するフェーズを想定します。

\begin{align}
\vz_{(r)} &= \mX_{(r)} \vw_{(r)} \label{z}
\end{align}

ただし,$\vz_{(r)}\in \mathbb{R}^{N \times 1}$,$\mX_{(r)} \in \mathbb{R}^{N \times D}$,$\vw_{(r)}\in \mathbb{R}^{D \times 1}$になります。$X_{(r)}$は$r-1$番目までの潜在変数(の線形和で表される変数)によって表現された部分を引いた(これは後述するデフレーションという操作に相当)説明変数であることに注意してください。

このとき,PLSでは以下のような回帰式に基づいて,潜在変数の線形和で$\mX_{(r)}$と$\vy_{(r)}$を表そうとします。

\begin{align}
\mX_{(r)} &= \vz_{(r)} \vs_{(r)}^{T} + \mE_{(r)} \label{PLS2}\\
\vy_{(r)} &= \vz_{(r)} t_{(r)} + \vf_{(r)} \label{PLS3}
\end{align}

ただし,$\vs_{(r)} \in \mathbb{R}^{D \times 1}$,$\mE_{(r)} \in \mathbb{R}^{N \times D}$,$\vy_{(r)} \in \mathbb{R}^{N\times 1}$,$t_{(r)} \in \mathbb{R}$,$\vf_{(r)} \in \mathbb{R}^{N \times 1}$です。$\vy_{(r)}$は$\mX_{(r)}$と同様に後述するデフレーション操作後の目的変数であることに注意してください。

ここで,PLSでは目的変数との内積(関連度)が最大になるように潜在変数$\vz_{(r)}$を抽出します。

\begin{align}
\text{(目的変数と潜在変数の内積)} &= \vy_{(r)}^T \vz_{(r)} \\
&= \vy_{(r)}^T \mX_{(r)} \vw_{(r)}
\end{align}

係数$\vw_{(r)}$に関して$|\vw_{(r)}|^2=1$という条件があることを踏まえれば,ラグランジュの未定乗数法を利用して以下の目的関数$G_{(r)}$を得ます。

\begin{align}
G_{(r)} &= \vy_{(r)}^T \mX_{(r)} \vw_{(r)} – \lambda_{(r)} \left( |\vw_{(r)}|^2 – 1 \right)
\end{align}

ただし,$\lambda_{(r)} \in \mathbb{R}$です。$G_{(r)}$を$\vw_{(r)}$で偏微分したものを$0$とおきましょう。

\begin{align}
\frac{\partial G_{(r)}}{\partial \vw_{(r)}} &= \mX_{(r)}^T \vy_{(r)} – 2\lambda_{(r)} \vw_{(r)} \\
&= 0 \\
\therefore \vw_{(r)} &= \frac{\mX_{(r)}^T \vy_{(r)}}{2\lambda_{(r)}} \label{ラグランジュ}
\end{align}

ここで,$\vw_{(r)}$は$|\vw_{(r)}|^2=1$を満たす単位ベクトルでした。式($\ref{ラグランジュ}$)に注目すると,$\vw_{(r)}$の方向は$\mX_{(r)}^T \vy_{(r)}$で決まっており,$2\lambda_{(r)}$が正規化項として機能していることがわかります。これらを踏まえれば,$\vw_{(r)}$は以下のような形になることが分かります。

\begin{align}
\vw_{(r)} &= \frac{\mX_{(r)}^T \vy_{(r)}}{|\mX_{(r)}^T \vy_{(r)}|}
\end{align}

重み$\vw_{(r)}$が計算できれば,式($\ref{z}$)を利用して$\vz_{(r)}$が求められます。

\begin{align}
\vz_{(r)} &= \mX_{(r)} \vw_{(r)} \\
&= \frac{\mX_{(r)} \mX_{(r)}^T \vy_{(r)}}{|\mX_{(r)}^T \vy_{(r)}|}
\end{align}

回帰誤差最小化フェーズ

さて,我々が知りたいのは式($\ref{PLS2}$)と式($\ref{PLS3}$)における$\vs_{(r)}$と$t_{(r)}$です。これらは,単純に最小二乗法で求めます。すなわち,$\mE_{(r)}$と$\vf_{(r)}$の二乗和が最小になるような$\vs_{(r)}$,$t_{(r)}$を求めます。ここで最小二乗法が登場するため,おそらく「部分的」最小二乗法と呼ばれているのでしょう。

\begin{align}
|\mE_{(r)}|^2 &= |\mX_{(r)} – \vz_{(r)} \vs_{(r)}^{T}|^2 \\
|\vf_{(r)}|^2 &= |\vy_{(r)} – \vz_{(r)} t_{(r)}|^2
\end{align}

これは正規方程式に帰着しますので,解は以下のようになります。正規方程式の解については,こちらのページをご覧ください。

\begin{align}
\vs_{(r)} &= \frac{\mX_{(r)}^T \vz_{(r)}}{\vz_{(r)}^{T} \vz_{(r)}} \\
t_{(r)} &= \frac{\vy_{(r)}^T \vz_{(r)}}{\vz_{(r)}^{T} \vz_{(r)}}
\end{align}

ここまでで1番目の潜在変数と,それに対応する係数が求められ,回帰式が計算できたことになります。PLSでは,ここから2番目以降の潜在変数を抽出していきます。

そもそも,PLSでは潜在変数が無相関になるように抽出する必要がありました。そこで,2番目以降の潜在変数を抽出する際には元のデータ・目的変数のそれぞれから抽出された潜在変数の成分を引き算するデフレーションという操作を行う必要があります。

これは要するに,次の潜在変数を抽出するときは残差$\mE_{(r)}$,$\vf_{(r)}$をそれぞれ$\mX_{(r+1)}$,$\vy_{(r+1)}$として扱ういうことを意味しています。デフレーションを行うことで,過去に用いた潜在変数方向の要素がなくなるため,元のデータにおいて「既知の潜在変数以外の要素」が抽出されることになります。

\begin{align}
\mX^{(r+1)} &= \mE_{(r)} \\
&= \mX_{(r)} – \vz_{(r)} \vs_{(r)}^{T} \\
\vy^{(r+1)} &= \vf_{(r)} \\
&= \vy_{(r)} – \vz_{(r)} t_{(r)}
\end{align}

デフレーション後のデータに対して同様の手法で潜在変数を抽出すれば,元のデータに既知の潜在変数方向の要素は含まれていませんので,新しく抽出される潜在変数と既知の潜在変数は無相関になります。

寄与率

PCA同様,PLSでも寄与率を計算できます。PLSでは,潜在変数の線形和で表された変数と,説明変数・目的変数との二乗和を最小にしますので,寄与率に関しても説明変数と目的変数の2種類を算出する必要があります。

\begin{align}
C_{(r)}^{X} &= \frac{\sum_{n=1}^{N}\sum_{d=1}^{D} \left( X^2_{(r)nd} – X^2_{(r+1)nd} \right) }{\sum_{n=1}^{N}\sum_{d=1}^{D}X^2_{nd}} \\
C_{(r)}^{y} &= \frac{\sum_{n=1}^{N} \left( y^2_{(r)n} – y^2_{(r+1)n} \right) }{\sum_{n=1}^{N} y^2_{n}}
\end{align}

この寄与率の意味は,デフレーションによってどれだけの二乗和が引かれたかを表しています。$r$回目のデフレーションによって大きな値が引かれれば引かれるほど,$r$回目の変数はよく説明変数・目的変数を表していることになるからです。

アルゴリズム

最後に,定式化で導出した結果をアルゴリズムとしてまとめておきます。

  1. データを前もって正規化しておく
  2. $r=1$とおき,$\mX_{(1)}=\mX$,$\vy_{(1)}=\vy$の初期化を行う
  3. $\vw_{(r)} = \mX_{(r)}^T \vy_{(r)} / |\mX_{(r)}^T \vy_{(r)}|$を計算する(潜在変数の変換係数)
  4. $\vz_{(r)} = \mX_{(r)} \vw_{(r)}$を計算する(潜在変数)
  5. $\vs_{(r)} = \mX_{(r)}^T \vz_{(r)} / \vz_{(r)}^T \vz_{(r)}$を計算する(スコア)
  6. $t_{(r)} = \vy_{(r)}^T \vz_{(r)} / \vz_{(r)}^T \vz_{(r)}$を計算する(回帰係数)
  7. 新たに$\mX_{(r+1)} = \mX_{(r)} – \vz_{(r)} \vs_{(r)}^T$,$\vy_{(r+1)} = \vy_{(r)} – \vz_{(r)} t_{(r)}$とおく(デフレーション)
  8. 手順3.に戻る

PLSでは一般の機械学習同様,過学習が起こることがあります。そのため,交差検証などを用いて適切な潜在変数の個数(手順2.〜6.を何回繰り返すか)を選択する必要があります。潜在変数の評価には標準回帰係数が用いられることが多いですが,本記事ではその導出は割愛します。

ポイント

最後に,重回帰分析・主成分回帰とPLSを比較することでまとめに代えます。

重回帰分析と何が違うの?

重回帰分析には潜在変数抽出フェーズがなく,予測値と学習データの誤差に従って回帰式を求めます。そのため,説明変数に相関がある場合は多重共線性の問題が生じてしまいます。なお,全ての潜在変数を利用した場合は重回帰分析と等しくなります。

主成分回帰とは何が違うの?

主成分回帰は射影後のデータの分散が最大になるように主成分を抽出します。そのため,抽出された主成分が目的変数をよく表せられるかどうかは保証されません。一方で,PLSでは射影後のデータと目的変数の内積(関連度)が最大になるように主成分を抽出します。そのため,目的変数をよく表すことのできるような主成分を抽出する手法になっています。

どのようなデータに使うと効果的なの?

冒頭でもお伝えした通り,入力変数に相関があるデータ,サンプル数が説明変数よりも少ないデータ,ノイズが含まれているデータなどにPLSを利用すると効果的に回帰分析を行うことができます。

シェアはこちらからお願いします!
URLをコピーする
URLをコピーしました!

コメント

コメントする

目次
閉じる