単純な設定で独立変数の同時確率を推定する問題に直面しています。現在、100 個の確率変数の配列があり、アンダーフローの問題に陥ることなくそれらの同時確率を取得したいと考えています。numpyでこの目標を達成する方法はありますか? もし可能なら?
そうでない場合は、NumPy ルーチン (logaddexp) の役割を詳しく説明してください。このような状況で役立つかもしれないと思ったからです。
logaddexp
代わりに、対数を保存して処理することにより、表現可能な値の範囲を拡大 (精度を下げる) できます。
e1, e2 = np.log(p1), np.log(p2) # convert p1, p2 to log form
e1e2 = e1 + e2 # e1e2 is now np.log(p1 * p2)
e3 = np.logaddexp(e1, e2) # e3 = np.log(p1 + p2)
コードを 、 、 に変更し**
、*
最後に で元に戻すだけです。*
+
+
np.logaddexp
np.exp
通常の 64 ビット倍精度浮動小数点の正の最小値は 2.2E-308 です。ログを保存すると、有効な最小正正規 1E-(1.7E308) が得られます。