Ответ
Information Value (IV) — это метрика, используемая в основном в кредитном скоринге и задачах бинарной классификации для оценки прогнозной силы отдельного признака. Она количественно измеряет, насколько хорошо признак разделяет два класса (например, «дефолт» и «не дефолт»).
Расчет IV основан на Weight of Evidence (WOE):
- Признак разбивается на интервалы (бины).
- Для каждого бина вычисляется WOE:
WOE_i = ln( (% Good_i) / (% Bad_i) ) = ln( (Good_i / Total_Good) / (Bad_i / Total_Bad) )Good_i— количество «хороших» наблюдений в бине i.Bad_i— количество «плохих» наблюдений в бине i.
- Затем вычисляется IV как сумма по всем бинам:
IV = Σ ( (% Good_i - % Bad_i) * WOE_i )
Интерпретация IV:
- < 0.02: Непредсказующая сила (признак бесполезен).
- 0.02 – 0.1: Слабая предсказательная сила.
- 0.1 – 0.3: Средняя предсказательная сила.
- > 0.3: Сильная предсказательная сила.
Практический пример на Python:
import pandas as pd
import numpy as np
# Создадим синтетические данные
np.random.seed(42)
data = pd.DataFrame({
'age_group': np.random.choice(['18-25', '26-35', '36-50', '50+'], size=500),
'default': np.random.choice([0, 1], size=500, p=[0.85, 0.15]) # 15% дефолтов
})
def calculate_iv(df, feature, target):
"""Вычисляет IV для категориального признака."""
# Группируем данные
grouped = df.groupby(feature)[target].agg(['count', 'sum'])
grouped.columns = ['total', 'bad']
grouped['good'] = grouped['total'] - grouped['bad']
# Вычисляем доли
total_good = grouped['good'].sum()
total_bad = grouped['bad'].sum()
grouped['pct_good'] = grouped['good'] / total_good
grouped['pct_bad'] = grouped['bad'] / total_bad
# Вычисляем WOE и IV
grouped['woe'] = np.log(grouped['pct_good'] / grouped['pct_bad'])
grouped['iv_component'] = (grouped['pct_good'] - grouped['pct_bad']) * grouped['woe']
iv = grouped['iv_component'].sum()
return iv, grouped
iv_value, iv_table = calculate_iv(data, 'age_group', 'default')
print(f"Information Value для 'age_group': {iv_value:.4f}")
print("nДетальная таблица:")
print(iv_table[['total', 'bad', 'good', 'woe', 'iv_component']])
Важно: Высокий IV (>0.5) может указывать на «переобученный» признак, который слишком хорошо разделяет выборку и может не работать на новых данных.