*注意)この「べじぱみゅの学習メモ」のカテゴリー記事は、ワタクシ自身がこれまでに勉強したいろいろな項目について、テキストにあんまり書いてない内容などを勝手に妄想したメモです。
ワタクシ自身の備忘録のために書いており「初学者にわかりやすく説明する」というものではございません。
導入なしに唐突に話が始まり、おそらく意味不明な文章かもしれません。
しかし、せっかく考えたことなので、記事の内容がもし誰か1人でもお役に立てれば幸いです。

まずは「2乗和」!

さて、今回の本題である謎の関数 R を取り入れると MCR ループ式が変化しますが、その「意味」を考えます。まずは R として「成分の 2 乗和」
 
CS成分の2乗和
 
を加えた場合です。こうすると

偏差の二乗和をなるべく小さくにしつつ、分解する行列 C および S の「大きさ」もなるべく小さくせよ

というループになります。どちらを優先するかはλの大きさによって決まります。もとの MCR ループ式を導いたときのように「λR との合計」を各パラメータで微分するこ
とで

2乗和最小化時のMCRループ

このようなループ式を得ます。E は K 行 K 列の単位行列(対角成分だけ 1 で、他は 0)です。

細かく見てみよう!

前回の記事と同じように、K=2としてループ式を書き出してみると
 
2乗和最小化時のMCRループ_成分

こうなります。当然ながらλ=0 のときもとの MCR に一致します。この式を見るとλが入ったことによって、λがないときに比べ
C および S の成分が「小さく」される方向に行くことがわかります。 「C, S の成分二乗和も最小化」という意味に合っていますね。

もっとも後で実例を示しますが、C と S 両方が小さくなるとは限らず、あくまでその成分二乗和の「合計」が小さくなります。C を求めるループには「S の大きさ」に相当する量で「割る」工程があり、逆に S を求めるループでは「C の大きさで割って」います。これより片方が小さくなると、もう片方は大きくなります。互いにけん制しあいながら、全体としては小さくなっていきます。
 
なおλを大きくしていくと、偏差の二乗和の寄与が小さくなっていき、ループ式は
「C と S の大きさを小さくせよ」という意味だけになります。その答えは当然ながら C=0, S=0 です。これは「D の分解」としては意味のない答えであり、λを「ほどよく」選ぶ必要があるといえます。あとで実例を示しますのでまたその時に考えましょう。

やる「意義」は?

最小化の対象に「成分の二乗和」を加えると「行列C,Sの成分の合計を小さくする」効果があることはわかりました。ではそんなことをする「意義」は何でしょう?


いろいろあると思いますが、一番有難いのは「計算の安定化」でしょう。単に「偏差の二乗和を最小化せよ」だけだと、データによっては例えば「Cが1億、Sが1億分の1」のような答えが出ることがあります。そうなるのが偏差の二乗和にとってよいのでしょう。


ただそれちょっと怖いですよね。計算中に誤差出そうだし、出た結果を他の処理にかけづらかったり。Cが1.1、Sが0.9」みたいな答えのほうが有難いことも多いです。そういう意味で「安定化」因子として意味の分かりやすい二乗和を使うことができます。


また、詳しくは別文献を参照いただきたいのですが、MCRループに現れるC^TC, S^TSは状況によっては逆行列をもたないこともあります。そこに「λE」を加えることで必ず逆行列を持つようになります。そういう意味でも「安定化」になります!怪しい時にとりあえずλ小さめで二乗和を入れてしまう、なんてことも。



はっぴぃ理系らいふ、いぇい
ヽ(・ε・)人(・ε・)ノ キミモナカマニナロウゼ
   

【文責 べじぱみゅ