GAMのテンソル製品の相互作用の背後にある直観(RのMGCVパッケージ)


30

一般化された加法モデルは 、たとえばモデル です。関数は滑らかで、推定されます。通常、罰せられたスプラインによって。MGCVはRのパッケージであり、著者(Simon Wood)はRの例を含む彼のパッケージに関する本を書いています。ルパート等 (2003)同じもののより単純なバージョンについて、はるかにアクセスしやすい本を書いてください。

y=α+f1(x1)+f2(x2)+ei

私の質問は、これらの種類のモデル内の相互作用についてです。次のようなことをしたい場合: OLS土地にいた場合(は単なるベータです) 、解釈に問題はありません。ペナルティスプラインを介して推定する場合、加算コンテキストでの解釈にも問題はありません。

y=α+f1(x1)+f2(x2)+f3(x1×x2)+ei
ff^3

ただし、GAMのMGCVパッケージには、「テンソル積平滑化」と呼ばれるものがあります。私は「テンソル製品」をグーグルで検索し、見つけた説明を読もうとするとすぐに目が輝いた。私は十分に頭が良くないか、数学があまりうまく説明されていないか、またはその両方です。

コーディングの代わりに

normal = gam(y~s(x1)+s(x2)+s(x1*x2))

テンソル製品は同じ(?)

what = gam(y~te(x1,x2))

私がする時

plot(what)

または

vis.gam(what)

本当にクールな出力が得られます。しかし、私はブラックボックス内で何が起こっているのte()か、また前述のクールな出力をどのように解釈するのか分かりません。先日、セミナーを開催しているという悪夢に見舞われました。みんなにクールなグラフを見せて、それが何を意味するのかと尋ねましたが、知りませんでした。それから私は服を着ていないことを発見しました。

ここのボンネットの下で何が起こっているのかについて少しのメカニズムと直感を与えることで、誰も私と後世の両方を助けることができますか?理想的には、通常の加法相互作用の場合とテンソルの場合の違いについて少し言ってください。数学に進む前に、すべてを簡単な英語で言うことのボーナスポイント。


パッケージ作成者の本から取られた簡単な例:library(mgcv)data(trees)ct5 <-gam(Volume〜te(Height、Girth、k = 5)、family = Gamma(link = log)、data = trees)ct5 vis.gam(ct5)plot(ct5、too.far = 0.15)
generic_user

回答:


30

3つのステップでこれに答えます(しようとします):最初に、単変量スムースが意味するものを正確に識別しましょう。次に、多変量平滑(特に、2つの変数の平滑)について説明します。最後に、テンソル積を滑らかに説明するために最善を尽くします。

1)単変量平滑

予測変数未知の関数に誤差加えたものと推測される応答データがあるとします。モデルは次のとおりです。f xyfxε

y=f(x)+ε

ここで、このモデルに適合するために、関数形式を識別する必要があります。これを行う方法は、基底関数を識別することです。基底関数は、関数全体を表すために重ね合わせられます。非常に単純な例は線形回帰であり、基底関数はとのみ。基底拡張を適用すると、ffβ2xβ1

y=β1+β2x+ε

マトリックス形式では、次のようになります。

Y=Xβ+ε

ここで、はn行1列の列ベクトル、はn行2列のモデル行列、はモデル係数の2行1列の列ベクトル、はn行1列の誤差のベクトルです。 。は2つの列があります。これは、基底展開に2つの項(線形項と切片)があるためです。YXβεX

同じ原理がMGCVの基底拡張にも適用されますが、基底関数ははるかに洗練されています。具体的には、独立変数全領域にわたって個々の基底関数を定義する必要はありません。これは、ノットベースのベースを使用する場合によくあります(「ノットベースの例を参照x)。次に、モデルは基底関数の合計として表され、各基底関数は独立変数のすべての値で評価されます。ただし、前述したように、これらの基底関数の一部は、指定された間隔の外ではゼロの値をとるため、その間隔の外では基底の拡張に寄与しません。例として、各基底関数が独立変数の異なる値(ノット)に関して対称である3次スプライン基底を考えます。つまり、すべての基底関数は同じように見えますが、独立変数の軸に沿ってシフトします。 (これは過度の単純化であり、実用的な基礎には切片と線形項も含まれますが、うまくいけばアイデアが得られます)。

明確にするために、次元基底展開は次のようになります。i2

y=β1+β2x+β3f1(x)+β4f2(x)+...+βifi2(x)+ε

ここで、各関数は、おそらく、独立変数 3次関数です。fx

行列方程式を使用して、モデルを表すことができます。唯一の違いは、がn行i列の行列になったことです。つまり、基底展開のすべての項(切片および線形項を含む)の列があります。基底展開のプロセスにより、モデルを行列方程式の形式で表現できるため、線形最小二乗法を使用してモデルを近似し、係数を見つけることができます。Y=Xβ+εXβ

これはペナルティのない回帰の例であり、MGCVの主な強みの1つは、ペナルティマトリックスと平滑化パラメーターによる平滑性の推定です。つまり、次の代わりに:

β=(XTX)1XTY

我々は持っています:

β=(XTX+λS)1XTY

ここで、二次であり行列ペナルティマトリックスとスカラー平滑化パラメータです。ここではペナルティマトリックスの仕様については触れませんが、独立変数の任意の基底展開および2次「ウィグリネス」ペナルティ(たとえば、2次微分ペナルティ)の定義については、1つだけで十分です。ペナルティ行列計算できます。SiiλS

MGCVは、最適な平滑化パラメーターを推定するさまざまな手段を使用できます。ここでの私の目標は、単変量スムースがどのように構築されるかについての大まかな概要を説明することだったので、私はそのテーマには入りません。λ

2)多変量平滑

上記の説明は、複数の次元に一般化できます。予測子と関数として応答を与えるモデルに戻りましょう。2つの独立した変数への制限により、不可解な表記法で説明が乱雑になるのを防ぎます。モデルは次のとおりです。yfxz

y=f(x,z)+ε

さて、上記の単変量の場合と同じように、基底展開(つまり基底関数の重ね合わせでを表すことは直感的に明らかです。また、これらの基底関数の少なくとも1つ、そしてほぼ確実にもっと多くがとの両方の関数でなければならないことも明らかです(そうでなければ、暗黙的にはように分離可能です)。多次元スプライン基底の視覚的な図は、ここにあります。次元の完全な2次元基底展開は、次のようになります。f(x,z)f(x)xzff(x,z)=fx(x)+fz(z)i3

y=β1+β2x+β3z+β4f1(x,z)+...+βifi3(x,z)+ε

私はまだこれを行列形式で表すことができることはかなり明白だと思います:

Y=Xβ+ε

とすべての一意の組み合わせで各基底関数を評価するだけです。解決策はまだあります:xz

β=(XTX)1XTY

二階微分ペナルティ行列の計算は、単一変数に関する各基底関数の二階微分を統合する代わりに、すべての二階微分(部分を含む)の合計をすべての独立変数に。上記の詳細は特に重要ではありません。ポイントは、ペナルティ行列を構築し、同じ方法を使用して平滑化パラメーター最適値を取得できることです。Sλ

β=(XTX+λS)1XTY

現在、この2次元の平滑化には等方性ペナルティがあります。これは、単一の値が両方向に適用されることを意味します。これは、空間アプリケーションなど、と両方がほぼ同じスケールである場合に正常に機能します。しかし、空間変数を時間変数で置き換えるとどうなりますか?単位単位よりもはるかに大きくても小さくてもよい、我々が測定した場合、これらの誘導体のいくつかは、例えば(全体の統合に不釣合いに貢献していきますので、これは私たちの第二デリバティブの統合をオフに投げることができますナノ秒にし、λxzzttxtx光年では、に関する2階微分の積分はに関する2階微分の積分よりもはるかに大きくなる可能性があり、したがって方向に沿った「ウィグリグリネス」はほとんどペナルティを受けない可能性があります)。リンクした「スムーズツールボックス」のスライド15には、このトピックに関する詳細が記載されています。txx

基底関数をと周辺基底に分解しなかったことは注目に値します。ここでの意味は、多変量平滑化は複数の変数をサポートするベースから構築する必要があるということです。以下で説明するように、テンソル積は単変量周辺基底から多変量基底の構築をスムーズにサポートします。xz

3)テンソル積の平滑化

テンソル積平滑化は、異なるユニットとの複数の入力の相互作用に対する応答のモデリングの問題に対処します。空間変数と時間変数関数である応答あるとします。モデルは次のとおりです。yfxt

y=f(x,t)+ε

私たちがやりたいのは、変数と 2次元基底を構築することです。を次のように表現できれば、これは非常に簡単です。xtf

f(x,t)=fx(x)ft(t)

代数的/分析的な意味では、これは必ずしも可能というわけではありません。しかし、我々は、のドメイン離散化され、覚え及び(上のノットの位置によって規定される二次元の「格子」想像と「真」機能するよう軸)基底関数の重ね合わせで表され。非常に複雑な単変量関数がその領域の特定の区間で単純な3次関数で近似できると仮定したように、分離できない関数はより単純な関数の積で近似できると仮定することができますおよびxtxtff(x,t)fx(x)ft(t) 間隔で-基準次元を選択すると、これらの間隔が十分に小さくなります!

次元の基底と次元の基底が与えられると、基底展開は次のようになります。ixjt

y=β1+β2x+β3fx1(x)+β4fx2(x)+...+βifx(i3)(x)+βi+1t+βi+2tx+βi+3tfx1(x)+βi+4tfx2(x)+...+β2itfx(i3)(x)+β2i+1ft1(t)+β2i+2ft1(t)x+β2i+3ft1(t)fx1(x)+βi+4ft1(t)fx2(x)+...+β2ift1(t)fx(i3)(x)++βijft(j3)(t)fx(i3)(x)+ε

テンソル積として解釈される可能性があります。および各基底関数を評価し、それによってn行i列およびn行j列のモデル行列およびをそれぞれ構築したと想像してください。次に、これら2つのモデル行列の行テンソル積を計算し、各列が一意の組み合わせ表すように列に再編成できます。限界モデル行列にはそれぞれ列と列があったことを思い出してください。これらの値は、それぞれの基本次元に対応しています。この場合、新しい2変数基底の次元はxtXTn2ij XTijijij、したがって、そのモデル行列の列数は同じです。

注:限界基底関数の積を取ることで明示的にテンソル積基底関数を構築したため、テンソル積基底は任意のタイプの限界基底から構築できることを指摘したいと思います。上記で説明した多変量スムーズとは異なり、複数の変数をサポートする必要はありません。

実際には、このプロセスでは、次元全体的な基底展開が行われます。これは、完全な乗算には、すべての基底関数にx切片を乗算(を減算)するだけでなく、t切片よる基底関数(したがってを減算します)が、それ自体で切片を追加する必要があります(したがって1を追加します)。これは、識別可能性制約の適用として知られています。ijij+1tβx1jxβt1i

したがって、これを次のように表すことができます。

y=β1+β2x+β3t+β4f1(x,t)+β5f2(x,t)+...+βijij+1fijij2(x,t)+ε

ここで、多変量​​基底関数それぞれは、との周辺基底関数のペアの積です。繰り返しますが、これを行列方程式で表すことができることは、この基礎を構築したことでかなり明確です。fxt

Y=Xβ+ε

解決策はどれですか(まだ):

β=(XTX)1XTY

モデル行列は列があります。ペナルティ行列および、これらは次のように各独立変数に対して個別に構築されます。Xijij+1JxJt

Jx=βTIjSxβ

そして、

Jt=βTStIiβ

これにより、全体的な異方性(各方向で異なる)ペナルティが可能になります(注:の2次導関数のペナルティは、軸の各ノットで加算され、逆も同様です)。平滑化パラメーターとは、単一の平滑化パラメーターが単変量および多変量平滑化の場合とほぼ同じ方法で推定できます。その結果、滑らかなテンソル積の全体的な形状は、その独立変数の再スケーリングに対して不変です。xtλxλt

MGCV Webサイトのすべてのビネットと、「一般化された加算モデル:およびRの紹介」を読むことをお勧めします。サイモン・ウッドの長生き。


いい答えだ。それ以来、3年前に知っていたよりも多くのことを学びました。しかし、あなたが今日書いたことを3年前に理解できたかどうかはわかりません。または多分私は持っているでしょう。開始する場所は、さまざまな次元での基底展開を、変数空間全体の「ネット」として考えることだと思います。テンソルは長方形のパターンを持つネットとして記述できると思います...そして、各方向から引っ張る「せん断」力が異なる可能性があります。
generic_user

別の注意として、私は、テンソル積が空間的な何かを表していると考えることに対して警告します。これは、限界および基底関数の実際のテンソル積には、定義された範囲外の基底関数の評価を表す多数のゼロが含まれるためです。通常、実際のテンソル積は非常にまばらです。xt
ジョシュ

1
このすばらしい要約をありがとう!ただ一つの発言:「我々の基底拡張」の後の方程式は完全に正しいわけではありません。正しい基底関数を提供しますが、対応するパラメーターが製品形式()であるパラメーター化を提供します。βxiβtj
ジャラウ

1
@ジョシュわかりました、試しました。同時に正確に理解するのは簡単ではありません(そして他の誰かの記法に従うのも簡単です)。ところで、smooth-toolbox.pdfへのリンクは壊れているようです。
ジャラウ

1
いいね。どうやらあなたの編集は拒否されましたが、拒否を無効にして承認しました。この回答を書き始めたとき、拡張がどのように混乱するかがわかりませんでした。私はおそらく戻って、最近のpi(製品)表記で書き直す必要があります。
ジョシュ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.