소개: 표본에서 모집단까지
La 추론 통계 우리는 하나에 대해 결론을 내릴 수 있습니다 인구 하나만 관찰하면 전체가 된다 견본. ML에서는 다음과 같습니다. 기본: 우리는 훈련 세트(샘플)를 훈련하고 모델이 실행되기를 원합니다. 데이터(인구)를 본 적이 없습니다. 신뢰 구간, 가설 검정 및 A/B 테스트는 모든 데이터 과학자에게 없어서는 안 될 도구입니다.
무엇을 배울 것인가
- 표준오차 및 표본분포
- 신뢰 구간: 실제 의미
- 가설 검정: 귀무 가설, p-값, 유형 I 및 II 오류
- T-검정 및 카이제곱 검정
- A/B 테스트: 설정, 전력 분석, 조기 중지
- 효과 크기와 p-값이 충분하지 않은 이유
표본분포와 표준오차
La 샘플 배포 평균은 표본의 평균이 어떻게 변하는지 설명합니다. 실험을 여러 번 반복하면. CLT의 경우:
L'표준 오류 (SE) 및 표본분포의 표준편차:
어디 s 그리고 표본 표준편차입니다. SE는 다음과 같이 감소합니다. \\sqrt{n}: 불확실성을 절반으로 줄이려면 4배 더 많은 데이터가 필요합니다.
신뢰구간
Un 신뢰구간 평균의 경우 95%이며:
작은 샘플의 경우(n < 30), 분포가 사용됩니다 t 일반 학생 대신 학생:
그것이 실제로 의미하는 것: 95% CI는 "95% 확률이 있다"는 의미는 아닙니다. 실제 값은 범위 안에 있다는 것입니다." 즉, 실험을 무한히 반복하면 계산된 구간의 95%에 참값이 포함됩니다. 그 차이는 미묘하지만 결정적입니다.
import numpy as np
from scipy import stats
# Campione di accuracies da 10 esperimenti
accuracies = np.array([0.92, 0.89, 0.91, 0.93, 0.90, 0.88, 0.91, 0.94, 0.90, 0.92])
n = len(accuracies)
mean = np.mean(accuracies)
se = stats.sem(accuracies) # Standard Error
# CI al 95% con distribuzione t
t_critical = stats.t.ppf(0.975, df=n-1)
ci_lower = mean - t_critical * se
ci_upper = mean + t_critical * se
print(f"Media: {mean:.4f}")
print(f"SE: {se:.4f}")
print(f"CI 95%: [{ci_lower:.4f}, {ci_upper:.4f}]")
# Metodo rapido con scipy
ci = stats.t.interval(0.95, df=n-1, loc=mean, scale=se)
print(f"CI 95% (scipy): [{ci[0]:.4f}, {ci[1]:.4f}]")
가설 테스트
Un 가설 검정 관찰된 데이터가 가설과 호환되는지 여부를 평가합니다.
- H_0 (귀무가설): 효과가 없습니다(예: 두 모델의 정확도가 동일함).
- H_1 (대립 가설): 효과가 있다
테스트 통계 및 P-값
표본의 평균을 알려진 값과 비교하려면 t-통계량:
Il p-값 그리고 다음과 같은 극단적인(또는 그 이상의) 결과를 관찰할 확률은 다음과 같습니다. H_0 사실이었다. 만약에 p < \\알파 (일반적으로 0.05), 거부합니다. H_0.
제1종 오류와 제2종 오류
La potenza 테스트 e의 1 - \\베타: 확률 실제 효과를 감지합니다.
2-표본 T-검정
두 모델을 비교하려면 두 개의 독립 표본 t-검정:
import numpy as np
from scipy import stats
# Modello A vs Modello B: accuracies su 15 run
np.random.seed(42)
model_a = np.array([0.92, 0.89, 0.91, 0.93, 0.90, 0.88, 0.91, 0.94,
0.90, 0.92, 0.91, 0.89, 0.93, 0.90, 0.91])
model_b = np.array([0.94, 0.93, 0.95, 0.92, 0.94, 0.91, 0.93, 0.95,
0.93, 0.94, 0.92, 0.93, 0.94, 0.93, 0.94])
# T-test a due campioni
t_stat, p_value = stats.ttest_ind(model_a, model_b)
print(f"Modello A: media={model_a.mean():.4f}, std={model_a.std():.4f}")
print(f"Modello B: media={model_b.mean():.4f}, std={model_b.std():.4f}")
print(f"t-statistic: {t_stat:.4f}")
print(f"p-value: {p_value:.6f}")
print(f"Significativo (alpha=0.05): {p_value < 0.05}")
효과 크기: P-값 너머
p-값은 효과가 다음과 같은지 여부를 알려줍니다. 통계적으로 유의미한, 하지만 얼마인지는 아님 전자 grande. 그만큼'효과 크기 (Cohen의 d)는 효과의 크기를 측정합니다.
해석: d \\약 0.2 작은, d \\약 0.5 중간, d \\약 0.8 큰.
ML을 위한 A/B 테스트
L'A/B 테스트 두 가지 변형(A = 대조군, B = 치료)을 비교하여 결정합니다. 어느 것이 가장 잘 수행되는지. 설정에는 다음이 필요합니다.
- 측정항목 정의: 클릭률, 전환율, 정확도
- 표본 크기 계산 필요함(전력 분석)
- 무작위화 그룹의 사용자
- 데이터 수집 미리 정해진 기간 동안
- 분석하다 적절한 통계 테스트를 통해
검정력 분석: 얼마나 많은 샘플이 필요합니까?
La 전력 분석 효과를 감지하는 데 필요한 표본 크기를 계산합니다. 위대함 d 힘으로 1-\\베타:
import numpy as np
from scipy import stats
def power_analysis(effect_size, alpha=0.05, power=0.8):
"""Calcola sample size necessario per gruppo."""
z_alpha = stats.norm.ppf(1 - alpha/2)
z_beta = stats.norm.ppf(power)
n = ((z_alpha + z_beta) / effect_size) ** 2
return int(np.ceil(n))
# Scenario: vogliamo rilevare un miglioramento del 2% nell'accuracy
# Accuracy base: 90%, target: 92%, std stimata: 5%
effect_size = 0.02 / 0.05 # Cohen's d = 0.4
n_per_group = power_analysis(effect_size)
print(f"Effect size (Cohen's d): {effect_size:.2f}")
print(f"Sample size per gruppo: {n_per_group}")
# A/B test simulato
np.random.seed(42)
n = n_per_group
group_a = np.random.normal(0.90, 0.05, n) # Controllo
group_b = np.random.normal(0.92, 0.05, n) # Trattamento
t_stat, p_value = stats.ttest_ind(group_a, group_b)
diff = group_b.mean() - group_a.mean()
s_pooled = np.sqrt((group_a.var() + group_b.var()) / 2)
cohens_d = diff / s_pooled
print(f"\nA/B Test Results:")
print(f" Gruppo A: {group_a.mean():.4f}")
print(f" Gruppo B: {group_b.mean():.4f}")
print(f" Differenza: {diff:.4f}")
print(f" p-value: {p_value:.6f}")
print(f" Cohen's d: {cohens_d:.4f}")
print(f" Significativo: {p_value < 0.05}")
다중 테스트 수정
많은 테스트를 동시에 실행할 때(예: 10개 모델 비교) 적어도 하나의 거짓양성이 증가합니다. 거기 본페로니 교정 레벨을 나눈다 테스트 횟수에 대한 중요성:
어디 m 그리고 테스트 횟수. 그리고 보수적이다; 접근을 위해 덜 엄격한 절차가 사용됩니다 Benjamini-Hochberg False를 제어하는 발견률(FDR).
요약
기억해야 할 핵심 사항
- 표준오차: \\text{SE} = s / \\sqrt{n} - 데이터가 많을수록 불확실성이 감소합니다.
- CI 95%: \\bar{x} \\pm 1.96 \\cdot \\text{SE} - 확률이 아니라 빈도
- P-값: 그러한 극단적인 데이터의 확률 H_0 그리고 사실
- 효과 크기 (Cohen's d): 유의성뿐만 아니라 효과의 크기를 측정합니다.
- 전력 분석: 데이터를 수집하기 전에 필요한 샘플 수를 계산합니다.
- 본페로니: 옳은 \\알파 여러 테스트를 위해
다음 기사에서: 우리는 다음을 탐구할 것이다. 트랜스포머 수학. Self-attention, scaled dot-product, multi-head attention, 위치 인코딩: 공식 그들은 NLP와 AI에 혁명을 일으켰습니다.







