MLSTATKIT는 확립 된 통계 방법을 기계 학습 프로젝트에 원활하게 통합하도록 설계된 포괄적 인 Python 라이브러리입니다. 두 개의 상관 된 수신기 작동 특성 (ROC) 곡선에서 영역을 비교하기위한 Delong의 테스트 , 신뢰 구간 계산을위한 부트 스트랩 , 수신기 작동 특성 곡선 (AUC) 아래에서 영역을 Cohen의 D, Pearson의 RPB, Odds-Ratio와 같은 여러 관련 통계로 변환하기위한 AUC2OR를 비교하기위한 다양한 도구를 포함 합니다. 데이터를 무작위로 섞어서 메트릭을 재 계산하여 차이 분포를 생성하여 두 모델의 지표 간의 차이의 통계적 중요성. MLSTATKIT는 모듈 식 디자인을 통해 연구원과 데이터 과학자에게 기계 학습 영역 내에서 광범위한 통계 테스트 요구를 충족시키는 분석 및 모델 평가를 유연하고 강력한 툴킷을 제공합니다.
PIP를 사용하여 PYPI에서 직접 mlstatkit을 설치하십시오.
pip install MLstatkit Delong_test 함수는 별개의 모델에서 파생 된 두 상관 된 수신기 작동 특성 (ROC) 곡선의 영역 간의 차이에 대한 통계적 평가를 가능하게합니다. 이것은 비교 모델 성능에 대한 더 깊은 이해를 촉진합니다.
참 : 배열 모양의 모양 (n_samples,)
범위 {0, 1}의 진정한 이진 레이블.
prob_a : 배열 같은 모양 (n_samples,)
첫 번째 모델에 의한 예측 확률.
prob_b : 배열 같은 모양 (n_samples,)
두 번째 모델에 의한 예측 확률.
Z_SCORE : 플로트
Z 점수는 두 모델의 AUC를 비교하는 것입니다.
p_value : float
두 모델의 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 의 사용이 확률과 실제 레이블에 따라 두 모델의 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 함수는 데이터를 무작위로 뒤섞이고 메트릭을 다시 계산하여 차이 분포를 생성함으로써 두 모델의 메트릭 간의 차이의 통계적 유의성을 평가합니다. 이 방법은 데이터의 특정 분포를 가정하지 않으므로 모델 성능을 비교하기위한 강력한 선택입니다.
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 는 무작위로 관측을 그룹에 재 할당하고 메트릭을 계산함으로써 두 모델 간의 성능 메트릭의 차이의 중요성을 평가하는 데 사용됩니다. 이 접근법은 특정 분포 가정을 만들지 않으므로 다양한 데이터 유형에 따라 다재다능합니다. 순열 테스트에 대한 기본 토론은 다음을 참조하십시오.
이러한 참조는 MLSTATKIT에서 구현 된 통계 테스트 및 방법론에 대한 토대를 마련하여 사용자에게 과학적 기초와 적용 가능성에 대한 깊은 이해를 제공합니다.
AUR2OR 함수는 수신기 작동 특성 곡선 (AUC) 하의 영역을 Cohen 's D, Pearson의 RPB, Odds-Ratio 및 Natural Log Odds-Ratio를 포함한 여러 관련 통계로 변환합니다. 이 전환은 분류 모델의 성능을 해석하는 데 특히 유용합니다. 이 변환에 사용 된 수학 공식에 대한 자세한 설명은 다음을 참조하십시오.
이 참조는 AUR2OR 기능의 수학적 기초를 제공하여 사용자가 모델 성능 메트릭의 통계적 중요성과 실제적 영향을 정확하게 해석 할 수 있도록합니다.
우리는 mlstatkit에 대한 기여를 환영합니다! 자세한 내용은 기여 가이드 라인을 참조하십시오.
MLSTATKIT는 MIT 라이센스에 따라 배포됩니다. 자세한 내용은 Github 저장소의 라이센스 파일을 참조하십시오.
0.1.7 업데이트 README.md0.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 초판