特異値分解を使ったスペクトルの成分解析(つづき)2024/04/08(月)
先日書いた「特異値分解を使ったスペクトルの成分解析」について、補足します。気がついた方もおられるかもしれませんが、実は特異値分解を使わなくても同じ計算ができます。やってみましょう。下の式から始めます。A, P, Q の意味は前回と同じです。つまり、この式は、実測データ A が4つの化学種のスペクトルの重ね合わせで表されることを示しています。P は4つの化学種のスペクトルを横に並べたもの(この段階では未知)、Q は4つの化学種のモル分率のリストを縦に並べたものです(平衡定数 K1, K2を決めれば計算できる)。
ここで、もし4x4行列 QQT が正則であれば、上の式の両辺に右から QT(QQT)-1 をかけると、AQT(QQT)-1 = PQQT(QQT)-1 = P です。A, Q は既知ですから、P が一意に決まることになります。え、これだったら、別に特異値分解要らんかったんちゃうの??
ここでポイントになるのが、前回も述べた「行列データをより少ない成分の重ね合わせで表現する」ことです。特異値分解の結果を見ると、「いくつの成分で表現するのが妥当か」が推測できるのです。今回のデータ A を A = USV と特異値分解して、S の対角成分を順に書くと、下のようになっています。
4.32625475e+03 1.08801469e+03 4.06096324e+02 1.75135540e+02
3.17925912e+01 4.86576065e+00 2.04487512e+00 1.30610531e+00 ...
この対角成分が十分に小さくなるところからは、成分としての寄与は小さいとみなすことができます。上の数値でどこからが「十分に小さい」かは判断が難しいところですが、少なくとも4つ目までは無視できないことは明らかです。つまり、少なくとも4つの成分はある、ということがわかります。
さて、元データを一部削って、「2当量」までの結果を使ってみましょう。この系では、2当量まではほぼCu2+, CuL2+, CuL22+ の3つの化学種しかないので、成分は3つになるはずです。実際、この場合の特異値は下のようになります。
3.80886470e+03 6.83421853e+02 2.09568976e+02 7.22768431e+00
3.03584696e+00 2.17037669e+00 1.28402520e+00 8.28483197e-01
今度は、4つ目で値が急に小さくなっていることがわかります。これは、実測データが「3成分の重ね合わせ」で表現できる、ということを意味しています。実際、「3成分」で解析してみると、下のように3つの化学種のスペクトルが得られます。
これを無理やり4成分で解析すると、下のように4つ目の成分が暴れてしまいます。
まとめると、機械的に数値計算するだけなら、特異値分解を使わなくても行列計算の組み合わせで最適化を行うことはできる。けれども、実測データがどういう情報を含んでいるかを適切に理解する時に、特異値分解の結果を参照する必要がある、ということになるでしょう。このとき、物理的な解釈との整合性をとることが必要であることは、いうまでもありません。