Mlstatkitは、確立された統計的方法を機械学習プロジェクトにシームレスに統合するように設計された包括的なPythonライブラリです。 It encompasses a variety of tools, including Delong's test for comparing areas under two correlated Receiver Operating Characteristic (ROC) curves, Bootstrapping for calculating confidence intervals, AUC2OR for converting the Area Under the Receiver Operating Characteristic Curve (AUC) into several related statistics such as Cohen's d, Pearson's rpb, odds-ratio, and natural log odds-ratio, and Permutation_test for assessing theデータをランダムにシャッフルし、メトリックを再計算して違いの分布を作成することにより、2つのモデルのメトリック間の違いの統計的有意性。 MlStatkitは、モジュール設計により、研究者とデータサイエンティストに、分析とモデル評価を強化するための柔軟で強力なツールキットを提供し、機械学習の領域内で幅広い統計テストニーズに応えます。
PIPを使用して、MlStatkitをPypiから直接インストールします。
pip install MLstatkitDelong_test関数は、異なるモデルから派生した2つの相関レシーバー動作特性(ROC)曲線の下の領域間の違いの統計的評価を可能にします。これにより、比較モデルのパフォーマンスのより深い理解が促進されます。
True :形状の配列のような(n_samples、)
範囲の真のバイナリラベル{0、1}。
prob_a :形状の配列のような(n_samples、)
最初のモデルによる予測確率。
prob_b :形状の配列のような(n_samples、)
2番目のモデルによる予測確率。
Z_SCORE :フロート
2つのモデルのAUCSを比較するZスコア。
P_Value :フロート
2つのモデルのAUCを比較するP値。
from MLstatkit . stats import Delong_test
# Example data
true = np . array ([ 0 , 1 , 0 , 1 ])
prob_A = np . array ([ 0.1 , 0.4 , 0.35 , 0.8 ])
prob_B = np . array ([ 0.2 , 0.3 , 0.4 , 0.7 ])
# Perform DeLong's test
z_score , p_value = Delong_test ( true , prob_A , prob_B )
print ( f"Z-Score: { z_score } , P-Value: { p_value } " )これは、 Delong_testの使用を示しており、それらの確率と真のラベルに基づいて2つのモデルのAUCを統計的に比較します。返されたZスコアとp値は、モデルのパフォーマンスの違いが統計的に有意であるかどうかを理解するのに役立ちます。
Bootstrapping関数は、ブートストラップを使用して指定されたパフォーマンスメトリックの信頼区間を計算し、推定の信頼性の尺度を提供します。 AUROC(ROC曲線下の面積)、AUPRC(精密回復曲線の下の面積)、およびF1スコアメトリックの計算をサポートします。
from MLstatkit . stats import Bootstrapping
# Example data
y_true = np . array ([ 0 , 1 , 0 , 0 , 1 , 1 , 0 , 1 , 0 ])
y_prob = np . array ([ 0.1 , 0.4 , 0.35 , 0.8 , 0.2 , 0.3 , 0.4 , 0.7 , 0.05 ])
# Calculate confidence intervals for AUROC
original_score , confidence_lower , confidence_upper = Bootstrapping ( y_true , y_prob , 'roc_auc' )
print ( f"AUROC: { original_score :.3f } , Confidence interval: [ { confidence_lower :.3f } - { confidence_upper :.3f } ]" )
# Calculate confidence intervals for AUPRC
original_score , confidence_lower , confidence_upper = Bootstrapping ( y_true , y_prob , 'pr_auc' )
print ( f"AUPRC: { original_score :.3f } , Confidence interval: [ { confidence_lower :.3f } - { confidence_upper :.3f } ]" )
# Calculate confidence intervals for F1 score with a custom threshold
original_score , confidence_lower , confidence_upper = Bootstrapping ( y_true , y_prob , 'f1' , threshold = 0.5 )
print ( f"F1 Score: { original_score :.3f } , Confidence interval: [ { confidence_lower :.3f } - { confidence_upper :.3f } ]" )
# Calculate confidence intervals for AUROC, AUPRC, F1 score
for score in [ 'roc_auc' , 'pr_auc' , 'f1' ]:
original_score , conf_lower , conf_upper = Bootstrapping ( y_true , y_prob , score , threshold = 0.5 )
print ( f" { score . upper () } original score: { original_score :.3f } , confidence interval: [ { conf_lower :.3f } - { conf_upper :.3f } ]" )Permutation_test関数は、データをランダムにシャッフルし、メトリックを再計算して差異の分布を作成することにより、2つのモデルのメトリック間の差の統計的有意性を評価します。この方法では、データの特定の分布を想定していないため、モデルのパフォーマンスを比較するための堅牢な選択肢となっています。
from MLstatkit . stats import Permutation_test
y_true = np . array ([ 0 , 1 , 0 , 0 , 1 , 1 , 0 , 1 , 0 ])
prob_model_A = np . array ([ 0.1 , 0.4 , 0.35 , 0.8 , 0.2 , 0.3 , 0.4 , 0.7 , 0.05 ])
prob_model_B = np . array ([ 0.2 , 0.3 , 0.25 , 0.85 , 0.15 , 0.35 , 0.45 , 0.65 , 0.01 ])
# Conduct a permutation test to compare F1 scores
metric_a , metric_b , p_value , benchmark , samples_mean , samples_std = Permutation_test (
y_true , prob_model_A , prob_model_B , 'f1'
)
print ( f"F1 Score Model A: { metric_a :.5f } , Model B: { metric_b :.5f } " )
print ( f"Observed Difference: { benchmark :.5f } , p-value: { p_value :.5f } " )
print ( f"Permuted Differences Mean: { samples_mean :.5f } , Std: { samples_std :.5f } " ) AUC2OR関数は、曲線下の面積(AUC)値をオッズ比(OR)に変換し、オプションでt、z、d、ln_orなどの中間値を返します。この変換は、バイナリ分類における共通のメトリックであるAUCと、統計分析でよく使用されることが多いことを理解するのに役立ちます。
from MLstatkit . stats import AUC2OR
AUC = 0.7 # Example AUC value
# Convert AUC to OR and retrieve all intermediate values
t , z , d , ln_OR , OR = AUC2OR ( AUC , return_all = True )
print ( f"t: { t :.5f } , z: { z :.5f } , d: { d :.5f } , ln_OR: { ln_OR :.5f } , OR: { OR :.5f } " )
# Convert AUC to OR without intermediate values
OR = AUC2OR ( AUC )
print ( f"OR: { OR :.5f } " )MLSTATKITでのDelong_testの実装は、次の出版物に基づいています。
信頼区間を計算するためのBootstrapping方法は、単一の出版物を直接参照するのではなく、置換と再サンプリングすることによりメトリックの分布を推定するための広く受け入れられている統計的手法です。ブートストラップメソッドの包括的な概要については、以下を参照してください。
Permutation_tests 、グループに観測をランダムに再配置し、メトリックを計算することにより、2つのモデル間のパフォーマンスメトリックの違いの重要性を評価するために使用されます。このアプローチは、特定の分布の仮定を行うことはなく、さまざまなデータ型に汎用性があります。順列テストに関する基礎的な議論については、次を参照してください。
これらの参考文献は、MLSTATKITで実装された統計テストと方法論の基礎を築き、科学的根拠と適用性を深く理解することをユーザーに提供します。
AUR2OR関数は、レシーバー動作特性曲線(AUC)の下の領域を、コーエンのD、ピアソンのRPB、オッズレイティオ、ナチュラルログオッズラティオなど、いくつかの関連統計に変換します。この変換は、分類モデルのパフォーマンスを解釈するのに特に役立ちます。この変換で使用されている数式の詳細な説明については、以下を参照してください。
これらの参照は、AUR2OR関数の数学的基盤を提供し、ユーザーがモデルパフォーマンスメトリックの統計的有意性と実際的な意味を正確に解釈できるようにします。
Mlstatkitへの貢献を歓迎します!詳細については、貢献ガイドラインをご覧ください。
MLSTATKITはMITライセンスの下に配布されます。詳細については、GitHubリポジトリのライセンスファイルを参照してください。
0.1.7 README.mdを更新します0.1.6デバッグ。0.1.5 README.mdを更新し、 AUC2OR関数を追加します。0.1.4 README.mdを更新し、 Permutation_tests関数を追加し、再生Bootstrappingパラメーターを追加します。0.1.3 README.mdを更新します。0.1.2 Bootstrapping操作プロセスの進行状況ディスプレイを追加します。0.1.1 README.md 、 setup.pyを更新します。 CONTRIBUTING.mdを追加します。0.1.0初版