Kaleidophon/deep-significance
Enabling easy statistical significance testing for deep neural networks.
deep-significance
何がそれか: 深層学習モデルの性能を平均スコアの比較ではなく、統計的有意性検定を使って適切に比較するのを支援するPythonライブラリです。
なぜ重要か: 深層ニューラルネットワークはランダムシード、ハイパーパラメータ、その他の確率的要因に非常に敏感です。1回の実行でのスコアは誤解を招く可能性があります。このパッケージは、あるモデルが実際に他よりも優れているのか、それとも単なる偶然による差なのかを厳密に判断するための統計的手法を提供します。
主な機能:
- Almost Stochastic Order (ASO): 平均値だけでなく、スコア分布全体を比較する現代的な有意性検定。モデルAがモデルBをどれだけ強く支配しているかを示す信頼度スコア(
eps_min)を返します。 - 古典的検定: p値に基づく仮説検定に使用できるブートストラップ法と順列ランダマイズ検定。
- 多重比較補正: 複数のデータセットやモデルペアに対して検定を行う際に、誤検出を防ぐためのボンフェローニ補正。
- サンプルサイズ分析: 信頼できる結論を得るために必要な実行回数を推定するツール。
- 互換性: NumPy、PyTorch、TensorFlow、JAXの配列と互換性があります。
簡単な仕組み:
- モデルAとモデルBを複数回実行したスコアの2つのセットを提供します。
aso()関数が分布を比較し、eps_minという値を返します。eps_min < 0.5であれば、モデルAの方が優れている可能性が高いです。値が低いほど、その自信は高まります。- 複数のモデルを比較する場合は、
multi_aso()がペアワイズ比較の行列を生成します。
使用例:
- 新しいモデルを複数のランダムシードでベースラインと比較する。
- 複数のデータセットでモデルを評価し、偽陽性を回避する。
- 1サンプルごとのスコア(例:テスト例ごとの予測)に基づいてモデルを比較する。
- ある信頼水準を得るために必要な実験回数を決定する。
対象ユーザー: 機械学習研究者、実務家、ニューラルネットワークモデルを厳密に評価・比較する必要があるすべての人。
制限(READMEより): このパッケージはすべての状況で優位性を保証するものではありません。結論をサポートするツールであり、魔法の解決策ではありません。また、比較のために複数の実行またはサンプルがあることを前提としています。
使用例:
from deepsig import aso
import numpy as np
# 2つのモデルのスコアをシミュレート
model_a_scores = np.random.normal(0.9, 0.8, 5)
model_b_scores = np.random.normal(0, 1, 5)
# 比較
eps_min = aso(model_a_scores, model_b_scores)
# eps_min < 0.5 ならモデルAが優れている
要するに: deep-significanceは「私のモデルは本当に優れているのか?」という問いに、統計的に妥当な答えを提供します。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト