AIC (Akaike Information Criterion) — это один из самых важных и широко используемых критериев для выбора моделей в статистике и машинном обучении.

Что такое AIC?

AIC (Информационный критерий Акаике) — это критерий, который позволяет сравнивать разные модели, учитывая как качество их подгонки, так и сложность. Он реализует принцип бритвы Оккама: при прочих равных условиях более простая модель предпочтительнее.

Основная идея:

AIC находит баланс между точностью модели и ее сложностью.


Формула AIC

AIC = 2k - 2ln(L)

Где:

  • k — количество параметров в модели
  • L — максимальное значение функции правдоподобия модели
  • ln — натуральный логарифм

Для линейной регрессии формула упрощается до:

AIC = n × ln(SS_res/n) + 2k + C

Где:

  • n — количество наблюдений
  • SS_res — сумма квадратов остатков
  • C — константа, которая часто опускается при сравнении моделей

Как работает AIC?

Логика AIC:

  1. Первая часть (2k): Штрафует за сложность модели (количество параметров)
  2. Вторая часть (-2ln(L)): Оценивает качество подгонки (чем лучше модель, тем выше L, тем меньше эта часть)

Чем МЕНЬШЕ AIC, тем лучше модель.


Пример: Сравнение моделей с помощью AIC

Допустим, мы строим модель прогноза цен на дома и рассматриваем 3 модели:

МодельПараметры (k)ln(L)AIC
Модель 1: Только площадь2-150.02×2 - 2×(-150) = 304
Модель 2: Площадь + комнаты3-140.02×3 - 2×(-140) = 286
Модель 3: Площадь + комнаты + цвет стен4-139.52×4 - 2×(-139.5) = 287

Вывод:

  • Модель 2 имеет наименьший AIC → лучшая модель
  • Модель 3 хуже, чем Модель 2, несмотря на лучшее правдоподобие — штраф за сложность не оправдан

Преимущества AIC

  1. Универсальность: Работает для любых моделей, оцененных методом максимального правдоподобия
  2. Баланс сложности и точности: Автоматически находит оптимальную сложность модели
  3. Теоретическое обоснование: Основан на теории информации (расстояние Кульбака-Лейблера)
  4. Широкое признание: Стандарт в статистике, эконометрике, машинном обучении

Интерпретация значений AIC

Абсолютные значения AIC:

  • Не имеют самостоятельного смысла
  • Важны только разницы между моделями

Правила интерпретации разниц ΔAIC = AIC_model - AIC_min:

ΔAICИнтерпретация
0-2Существенной разницы нет
4-7Есть существенные различия
>10Модель значительно хуже

Пример:

  • Модель A: AIC = 100 (лучшая)
  • Модель B: AIC = 101 (ΔAIC = 1 → практически одинаковы)
  • Модель C: AIC = 108 (ΔAIC = 8 → значительно хуже)

Сравнение с другими критериями

AIC vs BIC (Bayesian Information Criterion):

BIC = -2ln(L) + k × ln(n)

КритерийШтраф за сложностьПредназначение
AIC2kВыбор модели для прогнозирования
BICk × ln(n)Выбор истинной модели

Ключевые различия:

  • BIC сильнее штрафует за сложность (особенно при больших n)
  • AIC лучше для прогнозирования, BIC лучше для выявления истинных закономерностей
  • При n ≥ 8: ln(n) > 2 → BIC строже

AIC vs Adjusted R²:

  • Оба штрафуют за сложность
  • AIC более универсален (работает для нелинейных моделей)
  • Adjusted R² проще для интерпретации

Ограничения AIC

  1. Требует корректного определения k: Нужно точно считать число параметров
  2. Чувствителен к выбросам: Так как основан на правдоподобии
  3. Не абсолютная мера: Показывает только относительное качество моделей
  4. Предполагает, что истинная модель в рассмотрении: Может не работать, если все модели плохие

Практическое применение

Когда использовать AIC:

  • Выбор между разными типами моделей (линейная vs полиномиальная)
  • Выбор оптимального набора признаков
  • Сравнение невложенных моделей (которые нельзя сравнить F-тестом)
  • Автоматический отбор переменных

Процесс работы с AIC:

  1. Построить несколько моделей-кандидатов
  2. Рассчитать AIC для каждой
  3. Выбрать модель с наименьшим AIC
  4. Проанализировать разницы ΔAIC

Пример в Python

import statsmodels.api as sm
from sklearn.linear_model import LinearRegression
import numpy as np
 
# Данные
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]])
y = np.array([1, 2, 3, 4, 5])
 
# Модель 1: Только первый признак
X1 = X[:, 0].reshape(-1, 1)
model1 = sm.OLS(y, sm.add_constant(X1)).fit()
print(f"Модель 1 AIC: {model1.aic}")
 
# Модель 2: Оба признака
model2 = sm.OLS(y, sm.add_constant(X)).fit()
print(f"Модель 2 AIC: {model2.aic}")
 
# Сравнение
if model1.aic < model2.aic:
    print("Модель 1 лучше")
else:
    print("Модель 2 лучше")

Модификации AIC

AICc (скорректированный AIC):

AICc = AIC + (2k(k+1))/(n-k-1)

  • Используется при малом n (обычно когда n/k < 40)
  • Дает менее смещенные оценки при маленьких выборках

QAIC (для передисперсионных данных):

  • Для данных с биномиальным или пуассоновским распределением
  • Учитывает передисперсию (overdispersion)

Резюме

AIC — это мощный инструмент для выбора моделей, который:

  • Балансирует точность и сложность
  • Широко применим для разных типов моделей
  • Основан на строгой теории информации
  • Прост в использовании — просто выбираем модель с минимальным AIC

Золотое правило: Всегда используйте AIC вместе с другими методами (кросс-валидация, предметные знания) для принятия обоснованных решений о выборе модели.