Kaleidophon/deep-significance
Enabling easy statistical significance testing for deep neural networks.
deep-significance
무엇인가요: 평균 점수만 비교하는 것이 아니라, 통계적 유의성 검정을 사용하여 딥러닝 모델의 성능을 올바르게 비교할 수 있도록 도와주는 파이썬 라이브러리입니다.
왜 중요한가요: 딥 뉴럴 네트워크는 랜덤 시드, 하이퍼파라미터, 기타 확률적 요인에 매우 민감합니다. 단일 실행의 점수는 오해의 소지가 있습니다. 이 패키지는 한 모델이 실제로 다른 모델보다 우수한지, 아니면 단순한 우연에 기인한 차이인지 엄격한 통계적 방법으로 판단할 수 있도록 도와줍니다.
주요 기능:
- Almost Stochastic Order (ASO): 평균값이 아닌 전체 점수 분포를 비교하는 현대적인 유의성 검정. 한 모델이 다른 모델을 얼마나 강하게 지배하는지를 나타내는 신뢰도 점수(
eps_min)를 반환합니다. - 전통적 검정: p값 기반 가설 검정에 사용할 수 있는 부트스트랩 및 순열-랜덤화 검정.
- 다중 비교 보정: 여러 데이터셋이나 모델 쌍에 대해 검정할 때 사용하는 본페로니 보정.
- 표본 크기 분석: 신뢰할 수 있는 결론을 도출하기 위해 필요한 실행 횟수를 추정하는 도구.
- 호환성: NumPy, PyTorch, TensorFlow, JAX 배열과 호환됩니다.
작동 방식 (간단한 버전):
- 모델 A와 모델 B를 여러 번 실행한 점수 두 세트를 제공합니다.
aso()함수가 분포를 비교하고eps_min값을 반환합니다.eps_min < 0.5이면 모델 A가 더 낫다는 의미이며, 값이 낮을수록 더 확신할 수 있습니다.- 여러 모델을 비교할 경우
multi_aso()는 쌍별 비교 행렬을 생성합니다.
사용 사례:
- 여러 랜덤 시드에서 새로운 모델을 베이스라인과 비교할 때.
- 여러 데이터셋에서 모델을 평가하면서 거짓 양성(false positive)을 피할 때.
- 샘플별 점수(예: 테스트 예제별 예측) 기반으로 모델을 비교할 때.
- 특정 신뢰 수준을 얻기 위해 필요한 실험 실행 횟수를 결정할 때.
대상 사용자: 머신러닝 연구자, 실무자, 또는 신경망 모델을 엄격하게 평가하고 비교해야 하는 모든 사람.
제한 사항 (README에서): 이 패키지는 모든 환경에서 우월성을 보장하지 않습니다. 결론을 뒷받침하는 도구일 뿐 마법의 해결책은 아닙니다. 또한 비교를 위해 여러 실행 또는 샘플이 있어야 한다는 가정을 합니다.
사용 예시:
from deepsig import aso
import numpy as np
# 두 모델의 점수 시뮬레이션
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은 "내 모델이 정말로 더 나은가요?"라는 질문에 통계적으로 타당한 답을 제공합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트