← Назад к вопросам

Как определить длительность A/B-теста для оценки модели кредитного скоринга?

2.0 Middle🔥 121 комментариев
#Машинное обучение#Статистика и A/B тестирование

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI29 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Определение длительности 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. Практические рекомендации

  1. Минимум 2-4 недели — даже для очевидных улучшений
  2. Избегайте пиковых периодов — отпусков, праздников, когда паттерны заявок нетипичны
  3. Контролируйте качество выборки — убедитесь, что распределение признаков в контроле и тесте идентично
  4. Используйте CUPED (Controlled Experiment Using Pre-Experiment Data) для снижения дисперсии и сокращения нужного размера выборки
  5. Отслеживайте secondary метрики — time to decision, среднее количество одобрений в день, чтобы поймать побочные эффекты

Вывод: Для кредитного скоринга оптимальная длительность A/B-теста — 2-4 недели при среднем трафике и реальных улучшениях в 2-5%. Ключ — правильный расчёт размера выборки и выбор ранних индикаторов качества скоринга вместо ожидания полного цикла кредита.