В этой статье обсуждается математика R-квадрата и скорректированного R-квадрата, а также их реализация в Python.

В этой статье мы обсудим математику, лежащую в основе R-квадрата, а также несколько важных понятий, таких как объясненная вариация, необъяснимая вариация и общая вариация. Мы реализуем R-квадрат и скорректированный R-квадрат на Python. Мы также увидим, почему скорректированный R-квадрат является надежной мерой согласия для задач множественной регрессии.

Фон

Прежде чем приступить к R-квадрату, важно понять несколько терминов, таких как общая вариация, объясненная вариация и необъяснимая вариация. Представьте себе мир без прогнозного моделирования, где перед нами стоит задача предсказать цену дома, учитывая цены на другие дома. В таких случаях у нас нет другого выбора, кроме как выбрать наиболее распространенное значение, то есть среднее значение других цен на жилье, в качестве нашего прогноза. Например, у нас есть цены на 100 домов со средней ценой 100 000 долларов, и нас попросили спрогнозировать цену нового дома. Наш прогноз для нового дома составит 100 000 долларов, поскольку у нас нет других данных, которые могли бы помочь с нашим прогнозом.

На приведенном выше графике показана цена дома в зависимости от количества комнат. Черная пунктирная линия — это среднее значение уже доступных цен на жилье (целевая переменная обучающей выборки). Зеленая линия — это регрессионная модель цены дома с количеством комнат в качестве предиктора. Синяя точка — это количество комнат, для которых мы должны предсказать цену дома. Истинная/фактическая цена дома (y) синей точки равна 5. Прогнозируемое значение (y-шляпа) равно 16. Среднее значение (y-столбик) уже имеющихся цен на жилье равно 21.

Если бы нам нужно было предсказать цену дома синей точки без использования предиктора количества комнат, то наш прогноз был бы y-bar, т.е. 21. Если бы мы использовали модель регрессии с количеством комнат в качестве предиктора, то наш прогноз был бы y-шляпа ie16.

Объяснение варианта

Объясняемая вариация — это разница между прогнозируемым значением (значок Y) и средним значением уже доступных значений y (полоска Y). Регрессионная модель объясняет изменение «y».

Необъяснимая вариация

Необъяснимая вариация — это разница между истинным/фактически значением (y) и y-hat. Это изменение «y», которое не фиксируется/не объясняется регрессионной моделью. Он также известен как остаток регрессионной модели.

Общая вариация

Это сумма необъяснимых и объясненных вариаций. Это также разница между y и y-bar.

Здесь мы рассчитали объясненную вариацию, необъяснимую вариацию и общую вариацию одной выборки (строки) данных. Однако в реальном мире мы имеем дело с несколькими выборками данных, поэтому нам нужно вычислить квадрат вариации каждой выборки, а затем вычислить сумму этих квадратов вариаций. Это дало бы нам единую числовую метрику вариации. Для этого нам нужно немного изменить формулы вариаций, как показано ниже.

R-квадрат

R-квадрат (также известный как коэффициент детерминации) измеряет вариацию, которая объясняется регрессионной моделью. R-квадрат регрессионной модели положителен, если прогноз модели лучше, чем прогноз, который является просто средним значением уже доступных значений «y», в противном случае он отрицателен. Ниже приведена теоретическая формула R-квадрата.

Приведенная выше формула теоретически верна, но только когда R-квадрат положителен. Формула не возвращает отрицательный R-квадрат, поскольку мы вычисляем сумму квадратов как в числителе, так и в знаменателе, что делает их всегда положительными, тем самым возвращая положительный R-квадрат. Мы можем вывести правильную формулу (та, которая используется на практике и также возвращает отрицательный R-квадрат) из приведенной выше формулы, как показано ниже.

Мы рассмотрим реализацию R-squared в Python, сравним ее с r2_score() от Scikit-Learn, а также увидим, что первая формула не всегда верна. Для этого мы будем использовать набор данных «Бостонские цены на жилье» Scikit_Learn, чтобы соответствовать модели линейной регрессии. Затем мы создадим функцию с именем my_r2_score(), которая вычисляет R-квадрат модели.

Приведенный выше вывод показывает, что R-квадрат, вычисленный с использованием второй формулы, очень похож на результат r2-score() Scikit-Learn как для положительных, так и для отрицательных значений R-квадрата. Однако, как обсуждалось ранее, R-квадрат, рассчитанный с использованием первой формулы, очень похож на r2-score() Scikit-Learn, только когда значение R-квадрата положительное.

Скорректированный R-квадрат

Для модели множественной регрессии R-квадрат увеличивается или остается неизменным по мере того, как мы добавляем в модель новые предикторы, даже если вновь добавленные предикторы не зависят от целевой переменной и не добавляют никакой ценности к предсказательной способности модели. Скорректированный R-квадрат устраняет этот недостаток R-квадрата. Он увеличивается только в том случае, если вновь добавленный предиктор улучшает предсказательную силу модели. Добавление независимых и нерелевантных предикторов к регрессионной модели приводит к уменьшению скорректированного R-квадрата.

Мы увидим, как R-квадрат и скорректированный R-квадрат ведут себя при добавлении новых предикторов в регрессионную модель. Мы будем использовать набор данных «Бостонские цены на жилье» Scikit-Learn. Мы будем использовать метод прямого выбора для построения регрессионной модели путем постепенного добавления одного предиктора за раз. Ниже приведены шаги, которым мы будем следовать.

  1. Добавьте три дополнительные функции с именами «random1», «random2» и «random3», содержащие случайные числа.
  2. Рассчитайте оценки взаимной информации функций и постепенно добавляйте одну функцию за раз в модель в порядке убывания оценок взаимной информации и вычисляйте R-квадрат и скорректированный R-квадрат.

В приведенных выше показателях взаимной информации мы видим, что LSTAT имеет сильную связь с целевой переменной, а 3 случайных признака, которые мы добавили, не имеют отношения к цели. Мы будем использовать эти оценки взаимной информации и постепенно добавлять в модель одну функцию за раз (в том же порядке) и записывать оценки R-квадрата и скорректированные оценки R-квадрата.

В приведенном выше кадре данных индекс обозначает количество функций, добавленных в модель. Мы можем увидеть уменьшение скорректированного R-квадрата, как только мы начали добавлять в модель случайные функции (те, что в красной рамке). Однако R-квадрат остался прежним.

Интерпретация R-квадрата/скорректированного R-квадрата

R-квадрат измеряет качество подгонки регрессионной модели. Следовательно, более высокий R-квадрат указывает на то, что модель хорошо подходит, а более низкий R-квадрат указывает на то, что модель не подходит. Ниже приведены несколько примеров R-квадрата и подгонки модели.

На приведенных выше графиках видно, что модели с высоким скорректированным R-квадратом, по-видимому, хорошо подходят по сравнению с моделями с более низким скорректированным R-квадратом. Однако такая интерпретация не всегда может быть верной. Ниже приведены два частых вопроса, которые новички задают относительно R-квадрата.

Хорошо ли высокий R-квадрат?

Если R-квадрат тренировочного набора выше, а R-квадрат проверочного набора намного ниже, это указывает на переоснащение. Если такой же высокий R-квадрат применим и к проверочному набору, то можно сказать, что модель подходит.

Плох ли низкий R-квадрат?

Это полностью зависит от типа решаемой проблемы. В некоторых трудно моделируемых задачах даже R-квадрат, равный 0,5, можно считать хорошим. Не существует эмпирического правила, подтверждающего, что R-квадрат хороший или плохой. Однако очень низкий R-квадрат указывает на недостаточную подгонку, и может помочь добавление дополнительных соответствующих функций или использование сложной модели.

На этом статья подходит к концу. Мы обсудили математику R-квадрата и реализовали ее на Python. Мы практически увидели, почему скорректированный R-квадрат является более надежной мерой согласия в задачах множественной регрессии. Мы обсудили способ интерпретации R-квадрата и выяснили, как обнаружить переобучение и недообучение с помощью R-квадрата.