Rの部分最小二乗回帰:標準化されたデータのPLSが相関の最大化と同等ではないのはなぜですか?


12

私は部分最小二乗(PLS)が非常に新しくplsr()plsパッケージ内のR関数の出力を理解しようとしています。データをシミュレートしてPLSを実行します。

library(pls)
n <- 50
x1 <- rnorm(n); xx1 <- scale(x1) 
x2 <- rnorm(n); xx2 <- scale(x2)
y <- x1 + x2 + rnorm(n,0,0.1); yy <- scale(y)
p <- plsr(yy ~ xx1+xx2, ncomp=1)

私は次の数字と期待していましたab

> ( w <- loading.weights(p) )

Loadings:
    Comp 1
xx1 0.723 
xx2 0.690 

               Comp 1
SS loadings       1.0
Proportion Var    0.5
> a <- w["xx1",]
> b <- w["xx2",]
> a^2+b^2
[1] 1

最大化するために計算されます

> cor(y, a*xx1+b*xx2)
          [,1]
[1,] 0.9981291

しかし、これは正確には当てはまりません:

> f <- function(ab){
+ a <- ab[1]; b <- ab[2]
+ cor(y, a*xx1+b*xx2)
+ }
> optim(c(0.7,0.6), f, control=list(fnscale=-1))
$par
[1] 0.7128259 0.6672870

$value
[1] 0.9981618

それは数値エラーですか、またはと性質を誤解していますか?bab

また、これらの係数は何ですか?

> p$coef
, , 1 comps

           yy
xx1 0.6672848
xx2 0.6368604 

編集:今私は何であるかを見るp$coef

> x <- a*xx1+b*xx2
> coef(lm(yy~0+x))
        x 
0.9224208 
> coef(lm(yy~0+x))*a
        x 
0.6672848 
> coef(lm(yy~0+x))*b
        x 
0.6368604 

だから私はbの性質については正しいと思う。ab

編集: @chlによって与えられたコメントを考慮して、私は私の質問が十分に明確ではないと感じているので、詳細を提供させてください。私の例でありベクトルでの応答と二列の行列X予測子のは、私は正規化されたバージョンを使用YYと正規化されたバージョンをXX(センタリングおよび標準偏差で割った値)。コンポーネント第PLSの定義T 1、T 1 = A X 1 + B X 2とし、BYXY~YX~Xt1t1=aX~1+bX~2ab内積の最大値持つために選ばれたしたがって、それはt 1Yの間の相関を最大化することと同等ではありませんか?t1,Y~t1Y


2
PLS回帰は、因子スコア(生データと負荷ベクトルの積として計算される)共分散相関ではなく最大化します(Canonical Correlation Analysisで行われます)。plsこのJSS論文には、パッケージとPLS回帰の概要が記載されています。
chl

1
すべてのベクトルは中心にあり、正規化されているため、共分散は相関関係になりますよね 申し訳ありませんが、JSSの論文は初心者には技術的すぎます。
ステファンローラン

一般的に、物事を少し複雑にする非対称のデフレーションプロセス(1つのブロックの線形結合から他のブロックの線形結合への回帰の結果)があります。この応答で概略図を提供しました。エルヴェ・アブディは、いくつか与えた一般的な概要 PLS回帰のを、そしてWegelinの部分最小二乗の調査(PLS)メソッドは、あまりにも非常に便利です。この時点で、私はおそらく...答えにすべてのそれらのコメントを変換する必要があります
CHL

私の例でありベクトルでの応答と二列の行列X予測子のは、私は正規化されたバージョンを使用YYと正規化されたバージョンをXX(センタリングおよび標準偏差で割った値)。最初のPLS成分の私の定義は、T 1がである、T 1 = A X 1 + B X 2とし、Bの内積の最大値を有するために選択されたT 1YXY~YX~Xt1t1=aX~1+bX~2ab。それは良い定義ではありませんか?t1,Y~
ステファンローラン

@Stéphane、申し訳ありませんが、上記のコメントでは、1つのコンポーネントのみをリクエストしたという事実を考慮していませんでした(したがって、ここではデフレは重要な役割を果たしません)。ただし、最適化関数は、ような単位ノルム重みベクトルを強制しないようです。(ところで、それらの「係数」が何であるかについての詳細な情報を提供しますが、あなたはすでに自分自身を明らかに発見しました。)a2+b21?coef.mvr
chl

回答:


17

PLS回帰は、反復アルゴリズム(NIPALS、SIMPLSなど)に依存しています。メインアイデアの説明は正しいです。1つ(PLS1、1つの応答変数/複数の予測子)または2つ(PLS2、異なるモード、複数の応答変数/複数の予測子)の重みベクトル(およびv)を探します、たとえば、XuとY(Yv、PLS2の場合)の間の共分散が最大になるように、元の変数の線形結合を形成します。最初のコンポーネントに関連付けられた重みの最初のペアの抽出に焦点を当てましょう。正式には、最適化の基準はmax cov X u Y v )を読み取ります uv あなたのケースでは、 Yは、それが最大になるように、単変量である COV X U Y ヴァーX U 1 / 2 × COR X U Y × ヴァーY )、1 / 2

maxcov(Xu,Yv).(1)
Y ためヴァーyがに依存しない U、我々は最大化しなければならヴァーX U 1 / 2 × COR X U Yが。では、データを個別に標準化することを考えてみましょう(最初は x 1 x 2の代わりに線形結合をスケーリングするという間違いを犯しました!)、そのため Var x 1=
cov(Xu,y)Var(Xu)1/2×cor(Xu,y)×Var(y)1/2,st.u=1.
Var(y)uVar(Xu)1/2×cor(Xu,y)X=[x_1;x_2]x1x2 ; ただし、 Var X u 1であり、 uに依存します。結論として、潜在成分と応答変数の間の相関を最大化しても同じ結果は得られませんVar(x1)=Var(x2)=1Var(Xu)1u

正しい方向に向かってくれたアーサー・テネンハウスに感謝します。

pls. regressionpls.pcruビネットも良い議論を提供します(26-29ページ)。同様に特に重要なのは、ほとんどのPLSルーチン(少なくとも私がRで知っているルーチン)は、センタリングおよび/またはスケーリングが内部的に処理されるため、標準化されていない変数を提供すると想定していることです(これは、たとえば、相互検証を行う場合に特に重要です) )。

uu=1u

u=XyXy.

少しのシミュレーションを使用すると、次のように取得できます。

set.seed(101)
X <- replicate(2, rnorm(100))
y <- 0.6*X[,1] + 0.7*X[,2] + rnorm(100)
X <- apply(X, 2, scale)
y <- scale(y)

# NIPALS (PLS1)
u <- crossprod(X, y)
u <- u/drop(sqrt(crossprod(u)))         # X weights
t  <- X%*%u
p <- crossprod(X, t)/drop(crossprod(t)) # X loadings

上記の結果(u=[0.5792043;0.8151824]特に)をRパッケージが提供するものと比較できます。たとえば、ケモメトリックスパッケージのNIPALSを使用すると(mixOmicsパッケージで利用可能な別の実装)、次のようになります。

library(chemometrics)
pls1_nipals(X, y, 1)$W  # X weights [0.5792043;0.8151824]
pls1_nipals(X, y, 1)$P  # X loadings

同様の結果がplsrデフォルトのカーネルPLSアルゴリズムで得られます:

> library(pls)
> as.numeric(loading.weights(plsr(y ~ X, ncomp=1)))
[1] 0.5792043 0.8151824

u

読み取り機能に最適化するように機能を変更した場合

f <- function(u) cov(y, X%*%(u/sqrt(crossprod(u))))

u後で正規化(u <- u/sqrt(crossprod(u)))すると、上記のソリューションに近づくはずです。

maxuXYv,
uXY
svd(crossprod(X, y))$u

より一般的な場合(PLS2)、上記を要約する方法は、最初のPLS正準ベクトルが両方向のXとYの共分散行列の最良の近似であると言うことです。

参照資料

  1. Tenenhaus、M(1999)。L'approche PLSRevat de StatistiqueAppliquée、47(2)、5-40。
  2. ter Braak、CJFおよびde Jong、S(1993)。部分最小二乗回帰の目的関数Journal of Chemometrics、12、41–54。
  3. アブディ、H(2010)。部分最小二乗回帰および潜在構造回帰の投影(PLS回帰)Wiley Interdisciplinary Reviews:計算統計学、2、97-106。
  4. アラバマ州ブレスタイクスおよびストライマー、K(2007)。部分最小二乗法:高次元ゲノムデータの分析のための汎用ツールバイオインフォマティクスのブリーフィング、8(1)、32-44。

ありがとう、chl。可能な場合はいつでもあなたの答えを読みます(そして確実に投票してチェックマークをクリックしてください!)
StéphaneLaurent

おめでとうございます、ありがとうございます。
ステファンローラン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.