Вы подписаны на Машинное обучение доступно
Отлично! завершите оплату для полного доступа к Машинное обучение доступно
Снова приветствуем Вас! Вы успешно авторизовались
Успех! Аккаунт активирован, и Вы имеете полный доступ к контенту.
Остаток (Residual)

Остаток (Residual)

in

Остатки – это разница между фактическим целевым и установленным значением, ключевое понятие в задачах Регрессии (Regression). Это элемент формул ее метрик: Cреднеквадратической ошибки (MSE), средняя абсолютной ошибки (MAE), средней абсолютной процентная ошибка (MAPE).

Чем сильнее точки "не укладываются" в прямую, тем несостоятельнее линейная регрессия

График остатков, соответственно, – это тип графика, который отображает сопоставленные значения с остаточными в регрессионной Модели (Model). Такой способ визуалиации часто используется для оценки способности модели линейной регрессии описать зависимости в Датасете (Dataset) и для проверки Гетероскедастичности (Heteroscedasticity) – изменчивости распределения точек данных относительно прямо.

Остаток: statsmodels

Посмотрим, какими бывают графики остатков. Для этого импортируем необходимые библиотеки:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import statsmodels.api as sm
from statsmodels.formula.api import ols

Создадим небольшой Датафрейм (DataFrame), содержащий данные о результативности баскетболистов и протянем модель линейной регрессии, чтобы подтвердить или опровергнуть линейную зависимость между рейтингом игрока и количеством принесенных очков:

df = pd.DataFrame({'rating': [90, 85, 82, 88, 94, 90, 76, 75, 87, 86],
                   'points': [25, 20, 14, 16, 27, 20, 12, 15, 14, 19],
                   'assists': [5, 7, 7, 8, 5, 7, 6, 9, 9, 5],
                   'rebounds': [11, 8, 10, 6, 6, 9, 6, 10, 10, 7]})

# Применим к данным модель линейной регрессии
model = ols('rating ~ points', data = df).fit()

Теперь настало время визуализировать отношения между этими метриками. Функция sm.graphics.plot_regress_exog() предлагает четыре вида остаточных графиков, и в некоторые из них стоит вглядеться, прежде чем наступит понимание:

# Зададим размер графика
fig = plt.figure(figsize = (12, 8))

# Создадим графики
fig = sm.graphics.plot_regress_exog(model, 'points', fig = fig)

На субграфике слева сверху мы видим восемь "поплавков", причем красным обозначается фактический рейтинг игрока, а синим – предполагаемый моделью. Таких поплавков на два меньше общего числа записей, поскольку число очков двух пар игроков совпадают:

Рейтинг и число очков у баскетболиста не столь взаимосвязаны, как кажется неопытному наблюдателю

График частичной регрессии (Partial Regression Plot) снизу слева пытается показать эффект добавления другой переменной в модель, которая уже имеет одну или несколько независимых переменных.

Его сосед справа сверху дает возможность акцентировать внимание на Дисперсии  (Variance) – отклонения точек относительно прямой.

Последний субграфик "компоненты и компоненты плюс остатки" (Component and Component-Plus-Residual – CCPR) справа снизу позволяет судить о влиянии одного предиктора на целевую переменную, принимая во внимание влияние других независимых переменных. Два оставшихся Признака (Feature) также в немалой степени влияют на рейтинг:

  • Ассисты (assists) – передачи, после которых мяч удачно заброшен в корзину
  • Подборы (rebounds) – спортивная «кража» мяча&

Ноутбук, не требующий дополнительной настройки на момент написания статьи, можно скачать здесь.

Автор оригинальной статьи: Pararawendy Indarjo, Zach