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

Иногда вы можете встретить идеи и определения, которые, как вам кажется, вам знакомы, но которые недостаточно натолкнулись на них, чтобы понять их. Для меня это среднеквадратичная ошибка. Я узнал о среднеквадратичной ошибке в прошлом семестре курса вероятности, но у меня не было контекста или инструментов, чтобы понять это.

К счастью, в процессе написания этой серии все изменилось. Я, наконец, пришел к пониманию ошибки среднего квадрата. И, надеюсь, к концу этого поста вы тоже это сделаете!

Структура заметки

  • Среднеквадратичная ошибка (MSE)
  • Функция стоимости
  • Расчет MSE в Python

Мы начнем с краткого обзора последней заметки, в которой была представлена ​​концепция линейной регрессии.

В линейной регрессии у нас есть обучающий набор. Наша цель - изучить функцию h: X → Y, чтобы h (x) был «хорошим» предиктором для соответствующего значения y, то есть мы хотим получить значения для параметров theta zero и theta one, чтобы что линия соответствует прямой линии, которая хорошо соответствует нашим данным.

Если мы попытаемся представить это в визуальных терминах, наш набор обучающих данных будет разбросан в плоскости x-y. Мы пытаемся провести прямую линию (определяемую h (x)), которая проходит через эти разбросанные точки данных. Давайте посмотрим, как это работает, с некоторыми числами, чтобы продемонстрировать.

x = [1, 1, 2, 3, 4, 3, 4, 6, 4]
y = [2, 1, 0.5, 1, 3, 3, 2, 5, 4]

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

Наиболее распространенный способ выполнить эту оценку - использовать среднеквадратичную ошибку (MSE).

MSE - это средний квадрат ошибок.

Ошибка, в данном случае , означает разницу между наблюдаемыми и прогнозируемыми значениями. Мы возводим каждую разницу в квадрат, чтобы отрицательные и положительные значения не компенсировали друг друга. Затем берем среднее.

Примечание. Чем выше значение ошибки, тем менее репрезентативны данные для генеральной совокупности. Поэтому данные с меньшим значением ошибки считаются более надежными.

Я использую приведенный выше пример и рисую линию между точками с помощью Python. Конечно, мой рисунок не самый лучший, это просто демонстрация.

Вы можете спросить, что это за график?

  • Черные точки представляют собой точки на графике. Каждая точка имеет координату x и координату y.
  • Красная линия - это линия нашего прогноза. Это линия, которая проходит через все точки и наилучшим образом подходит к ним. Эта строка содержит прогнозируемые точки.
  • Линии между каждой черной точкой и линией прогноза - это наши ошибки . Каждая ошибка - это расстояние от точки до предполагаемой точки.

Наша цель - найти параметры тета-ноль (наклон) и тета-единица (пересечение по оси y), которые минимизируют квадратичную ошибку; это предоставит нам линию наилучшего соответствия, которая проходит по всем пунктам! Давайте определим математическое уравнение, которое даст нам MSE для всех наших точек!

MSE - это именно то, на что это похоже:

Формула среднеквадратичной ошибки

Давайте проанализируем, что означает это уравнение, ладно?

  • Символ, который выглядит как странная буква E, называется суммированием (греч. Сигма). Это сумма последовательности чисел от i = 1 до i = n. Мы могли бы представить это как массив точек, в котором мы перебираем все точки от первой (i = 1) до последней (i = n).
  • Для каждой точки данных мы берем расстояние по вертикали от черной точки до соответствующего значения y, которое находится на созданной нами красной линии, и возводим это значение в квадрат.
  • Затем мы складываем все эти значения и делим на n, что дает нам среднее значение.

Примечание:

  • Возведение в квадрат выполняется таким образом, чтобы отрицательные значения не отменяли положительные.
  • Чем меньше MSE, тем ближе соответствие данным. MSE имеет квадратные единицы того, что нанесено на вертикальную ось.
  • Квадраты разностей увеличивают дистанцию ​​ошибки, тем самым делая плохие прогнозы более заметными, чем хорошие.

Оказывается, мы можем немного скорректировать уравнение, чтобы упростить вычисления. В итоге получаем:

Короче говоря, мы хотим найти значения тета-нуля и тета-единицы, чтобы минимизировать среднее значение: 1 / 2m, умноженное на сумму квадратов ошибок между нашими прогнозами на обучающем наборе за вычетом фактического значения. Это известно как функция стоимости нашей модели.

Мы знали, что возведение в квадрат выполняется таким образом, чтобы отрицательные и положительные значения не компенсировали друг друга. Но почему мы берем квадраты разностей, а не абсолютные разности? Позже, чтобы найти линию регрессии, нам нужно вычислить первую производную функции стоимости, и квадраты разностей упрощают вывод.

Функция стоимости: количественно оценивает ошибку между прогнозируемыми и фактическими значениями и представляет ее в виде единственного действительного числа. Мы можем измерить точность нашей функции гипотезы, используя функцию стоимости.

Это определение может быть слишком академичным, поэтому мы могли бы вместо этого подумать о реальном примере, связанном с этой концепцией. Скажем, мы впервые пробуем Pho. Приносится миска, в правой руке у нас пластиковые палочки для еды, а в левой - суповая ложка. Мы сначала пьем бульон (это важно, поверьте мне), обрабатывая лапшу палочками для еды. Бульон слишком горячий, и у нас обжигается язык. В следующий раз, когда у нас будет Фо, мы сначала кладем кучу кубиков льда, чтобы охладить нашу миску, но мы узнаем, что это невкусный вкус, хотя мы и не обгорели. В третий раз кладем всего два кубика льда, сидим и ждем, пока он немного остынет, после чего сунули лицо в миску и проглотили бульон. Мы получаем немного этих ароматических веществ, избегая при этом грязных брызг. Как только лапша уходит (обычно она идет первой), мы обеими руками поднимаем миску к губам и полируем ее (это не невежливо). Вот так мы доедаем тарелку Фо. Благодаря опыту и отзывам о том, как сначала обжечься, а затем сделать бульон слишком холодным, мы узнаем, как есть Фо. Горячий бульон в этом примере действует как функция затрат - он помогает нам, учащимся, исправить или изменить свое поведение, чтобы минимизировать ошибки. Я надеюсь, что этот пример поможет вам наглядно представить концепцию. Я имею в виду функцию стоимости, а не то, как есть Фо, друзья мои.

Мы узнали о MSE теоретически, следующий шаг - реализовать то, что мы только что узнали.

Расчет MSE с использованием Python

Вкратце, мы можем рассчитать MSE, выполнив следующие действия:

  1. Вычислите разницу между каждой парой наблюдаемых и прогнозируемых значений.
  2. Возьмите квадрат значения разницы.
  3. Чтобы найти совокупные значения, сложите каждый квадрат разницы.
  4. Разделите совокупное значение на общее количество элементов в списке.

Давайте посмотрим на наш пример, и это станет более понятным.

Давайте переведем эти шаги на Python, ладно?

Примечание: аналогично мы можем рассчитать стоимость, единственная разница здесь - последний шаг, вместо этого нам нужно разделить на 2n. Коэффициент 1/2 предназначен только для удобства; он делает производную, то есть оптимизируемую функцию, лучше (мы обсудим это в следующей статье)

Удивительно, но мы можем объединить несколько строк кода в одну с помощью scikit-learn или NumPy. Это волшебство Python!

Расчет среднеквадратичной ошибки (MSE) с использованием scikit - learn или NumPy

И получаем тот же ответ:

Итак, у нас есть функция гипотезы, и нам нужен способ измерить, насколько хорошо она согласуется с данными. Теперь нам нужно оценить параметры в функции гипотезы. Вот тут и приходит на помощь градиентный спуск. О градиентном спуске мы поговорим в следующей статье.

Учись, друзья!

Ресурсы

Это все для этой статьи. Я надеюсь, что помог вам лучше понять MSE и ее использование в качестве функции затрат. Если вы все еще чувствуете страх или хотите изучить математику, лежащую в основе этих концепций, существует так много ссылок - вам просто нужно знать, с каких начать! Вот некоторые из моих любимых.

  1. Откуда приходит МСЭ?
  2. Понимание МСЭ
  3. Квадратная ошибка линии регрессии e
  4. Почему функции затрат используют квадратную ошибку?
  5. Линейная регрессия: пример из практики