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

過去の記事で何回か「ケモメトリックス」と称して、(膨大な量の)行列データを次元の低い行列の積に「分割」する手法を述べてきました。主成分分析非負値行列因子分解がそれです。今回もそのシリーズのお話ですが、これまでの手法のまとめ的な意味もあります。

実際に「分解」してみよう!

まずは一旦、主成分分析と非負値行列因子分解のことを忘れてください。ゼロベースで「行列の分解」について考えましょう!

本当は一般に「I行J列のデータ行列を分解」とすべきでしょうが、式が複雑になりすぎるのでまずは比較的簡単な例で実践してみましょう。

分解の具体例

こんな感じです。3行3列のデータ行列を、3行2列の行列と2行3列の行列の積に分解する、ということをします。これぐらいの小さなデータの議論でも、本質の部分ははずしていません。

この作業に物理的な意味を持たせるならこういうノリでしょう。

・3つのサンプルについて3つの特性を測定、またはある特性を波長などを変えて3点測定した。
・このデータが、「2つの純物質の足し合わせ」だと仮定する。


「係数」6個と「スペクトル」6個をうまく選んで、もとのデータを再現することになります。しかしちょっと式をいじってみればわかりますが、この方程式は解けません。そりゃそうで、3×3のデータが必ずぴったり2×3と3×2行列の積になるとは限らない(むしろ確実にならない)ので「解がない」というのも頷けます。

解けないなら「最適化」

というわけで「ぴったりな解」を出すのは諦めて、例の「最小二乗法」によって「なるべく近く」なるようなパラメーターを求めに行くことを考えます。分解した行列どうしの積と元の行列との「偏差の2乗和」は

もとの行列との偏差


こうなります。「最小二乗法」をするわけですから、この偏差をパラメータ変数で偏微分してゼロとおくわけです。まずcijで偏微分すると

偏差をcで偏微分

こうなります。すべての項に「2」がつくので、2で割って表示しています。同じようにsijで偏微分すると

偏差をsで偏微分

こうなります。いろいろ出てきてゴチャゴチャしていますが、これらの式に表れた係数をよ~く見ると規則性があります。係数たちは

係数に対応する行列

こういう行列の成分になっています。つまり偏微分=0の式(計12個)は行列で

条件式を行列で表現

こう表現できます。今は3x3データの話でしたが、一般に

一般の行列分解

こういう分解をする際でもマジメに計算すれば同じ表現になります(さっきまでのはこの式でI=J=3、K=2の場合)。

というわけで、2つの行列表現の式を変形すると

ALSの式

こうなります。上記はもとの目標である「D=CST」をムリヤリC, STについて解いた形式になっています。ここまでは単に形式的な話ですが、この表現にはちゃんとした意味があります。その辺は次回から議論していきましょう!



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

【文責 べじぱみゅ】