「壊れる行列」を直すという仕事
金融データとゲノムデータで見えた、数値計算の現実「壊れる行列」を直すという仕事金融データとゲノムデータで見えた、数値計算の現実データ分析では、見た目には普通の表や行列に見えても、計算にかけた瞬間に止まることがあります。特に問題になりやすいのが、共分散行列や相関行列です。金融なら、複数銘柄の日次リターンの関係。ゲノム解析なら、SNP 同士の連鎖不平衡、つまり LD 行列。どちらも「変数同士がどれくらい一緒に動くか」を表す重要な行列です。ところが現実のデータでは、この行列がきれいな数学的条件を満たしてくれないことがあります。何が起きるのか理想的には、共分散行列や相関行列は 正定値 である必要があります。正定値というのは、ざっくり言えば、「逆行列を取ったり、コレスキー分解したり、二次形式を計算したりしても破綻しない状態」です。しかし実データでは、次のような理由でこの条件が崩れます。サンプル数が少ない変数の数が多い欠損や丸め誤差がある似たような列が多く、ランク落ちする相関行列を外部データから再構成しているその結果、最小固有値がほんの少しマイナスになり、通常の Cholesky 分解が失敗します。たとえば今回の検証では、公開 LD データから作った小さな行列で、最小固有値:-3.737652311219695e-16通常の Cholesky:失敗という状態が確認されました。これは大きな異常というより、数値計算ではよくある「ほぼゼロだけど、機械的にはマイナス」と判定されるケースです。Nearest SPD で何をしたかこの問題に対して使ったのが、Nearest SPD という考え方です。S
0