Как определить длительность A/B-теста для оценки модели кредитного скоринга?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Определение длительности A/B-теста для модели кредитного скоринга
Длительность A/B-теста для оценки модели кредитного скоринга зависит от нескольких критических факторов, специфичных для финансовых приложений.
1. Статистический размер выборки
Для проверки гипотезы о различии между контролем и экспериментом используется формула расчёта необходимого размера выборки:
from scipy import stats
def calculate_sample_size(baseline_rate, min_effect, alpha=0.05, beta=0.2):
"""Расчёт размера выборки для A/B-теста"""
z_alpha = stats.norm.ppf(1 - alpha/2) # двусторонний тест
z_beta = stats.norm.ppf(1 - beta)
p1 = baseline_rate
p2 = baseline_rate + min_effect
n = (z_alpha + z_beta)**2 * (p1*(1-p1) + p2*(1-p2)) / (p2-p1)**2
return int(n)
# Пример: baseline approval rate 30%, хотим детектить 2% улучшение
sample_size = calculate_sample_size(baseline_rate=0.30, min_effect=0.02)
print(f"Нужно примерно {sample_size} лиц в каждой группе")
2. Объём трафика и конверсия
Длительность теста вычисляется как:
Должность (дни) = (2 * Размер выборки) / (Дневной трафик * Конверсия)
Для кредитного скоринга:
- Дневной трафик заявок: 500-10 000 в день (зависит от размера компании)
- Конверсия (доля прошедших первичный отбор): 20-50%
- Минимальный эффект для детектирования: 1-3% улучшения (реалистично для скоринга)
Пример расчёта:
- Трафик: 2000 заявок/день
- Конверсия: 40% = 800 активных пользователей
- Размер выборки на группу: ~3000
- Длительность = (2 * 3000) / 800 = 7.5 дней
3. Специфика финансовых данных
Для кредитного скоринга есть особенности:
Дефолты и задержки платежей — основная метрика качества скоринга:
- Дефолт обычно наблюдается через 90-180 дней
- Нельзя ждать полного цикла жизни кредита
- Используют ранние индикаторы: просрочки на 30+ дней за первые 6 месяцев
# Долгосрочное качество скоринга проверяется через промежуточные метрики
early_delinquency_rate = sum(loans_30_days_late) / total_loans
# За счёт этого можно сократить тест до 4-12 недель
4. Рекомендуемая длительность
| Сценарий | Длительность | Причина |
|---|---|---|
| Малые улучшения (1-2%) | 4-6 недель | Нужно больше данных |
| Средние улучшения (3-5%) | 2-4 недели | Баланс между риском и скоростью |
| Крупные улучшения (10%+) | 1-2 недели | Очевидный выигрыш |
| С учётом сезонности | 2-3 месяца | Нивелирует недельные и месячные паттерны |
5. Проверка статистической значимости
from scipy.stats import chi2_contingency
def check_significance(control_approvals, control_total,
treatment_approvals, treatment_total):
"""Chi-square test для сравнения approval rates"""
contingency_table = [
[control_approvals, control_total - control_approvals],
[treatment_approvals, treatment_total - treatment_approvals]
]
chi2, p_value, dof, expected = chi2_contingency(contingency_table)
return p_value < 0.05 # Статистически значимо на уровне 5%
6. Практические рекомендации
- Минимум 2-4 недели — даже для очевидных улучшений
- Избегайте пиковых периодов — отпусков, праздников, когда паттерны заявок нетипичны
- Контролируйте качество выборки — убедитесь, что распределение признаков в контроле и тесте идентично
- Используйте CUPED (Controlled Experiment Using Pre-Experiment Data) для снижения дисперсии и сокращения нужного размера выборки
- Отслеживайте secondary метрики — time to decision, среднее количество одобрений в день, чтобы поймать побочные эффекты
Вывод: Для кредитного скоринга оптимальная длительность A/B-теста — 2-4 недели при среднем трафике и реальных улучшениях в 2-5%. Ключ — правильный расчёт размера выборки и выбор ранних индикаторов качества скоринга вместо ожидания полного цикла кредита.