Каждый хочет попробовать свои силы в машинном обучении в какой-то момент своей карьеры в области программного обеспечения. Первый алгоритм, с которого обычно начинаются все книги и онлайн-курсы, — это линейная регрессия. Давайте расшифруем!

Линейный + регрессионный

Линейный = расположен по прямой линии.

Регрессия = процесс оценки отношений между зависимой переменной при наличии одной или нескольких независимых переменных.

Итак, идея понимания взаимосвязи между двумя переменными путем построения линейной линии придумана как линейная регрессия. Возьмем пример. Цена дома по отношению к размеру дома.

Отношения между этими двумя переменными Size_of_house и Price_of_house можно изобразить следующим образом:

Если кто-то попросит вас предсказать стоимость дома, учитывая house_size=3(10 кв. м). Этот человек также заранее дал ответ house_prize= 3(10 L). А вот и линейная регрессия, чтобы предсказать это значение.

Во-первых, нам нужно определить связь между house_size и house_price. Так что мы можем использовать его для решения поставленной задачи. Любой может сказать, что это прямая линия (вспомните линейную регрессию). Уравнение прямой обычно записывают так:

y = mx + b

В качестве основного правила математики возьмем неизвестный член в качестве y. Здесь неизвестным является house_price.

y= цена_дома и x= размер_дома.

predicted_house_price = m(house_size) + b

Подожди... кто эти м и б? почему они продолжают следить за нами? m и b являются константами. Пока предположим, что m=5 и b=7. house_size=3(10 кв.м). Подставим все эти значения в приведенное выше уравнение.

predicted_house_price = (5 x 3)+ 7 = 22 (10 L)

Мы получили house_price за 3 (10 кв. м) как 220L😳 (Серьезно…)

Кто-нибудь догадался, почему он даже не близок к 3 (10 л)?

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

Функция стоимости

Функция стоимости помогает измерить, насколько точен результат операции по сравнению с фактическим результатом. Для регрессии мы используем общую функцию стоимости — среднеквадратичную ошибку (MSE).

Давайте распакуем это,

  • θ₀ = m, θ₁= b
  • m - размер входных данных
  • ŷ  – прогнозируемое значение для i ᵗʰterm
  • y  — фактическое значение для i ᵗʰ термина.
  • Берется среднее фактического — предсказанное (СРЕДНЕЕ = сумма условий / количество условий)
  • Мы возводим его в квадрат, потому что очень беспокоимся о величине уравнения.
  • Все уравнение умножается на 1/2, потому что сведение всего уравнения к его половине приведет к тому же результату с небольшими вычислениями.
  • Прогнозируемое значение (ŷ) получается с использованием y = mx+b.

Чтобы узнать больше о том, почему мы говорим о функции стоимости и как она связана с выбором значений констант m и b. Давайте нарисуем несколько графиков!

Для простоты давайте всегда брать b = 0 и пробовать разные значения m и заменять их уравнением функции стоимости.

m = 1, b = 0

Для условности используются единицы измерения house_price (10 л) и house_size (10 кв. м).

Linear equation = 3(m) + b
ŷ = 3
y = 3

J(0,0) = 1/2 * [(0–3)²] = 0

Это ясно показывает, что правильные значения констант играют важную роль в правильном прогнозировании, поскольку каждое изменение константы m имеет эквивалентное изменение функции стоимости J (это не что иное, как окончательное уравнение для проверки результатов линейной регрессии). Кроме того,когда функция стоимости минимальна (0), мы получили абсолютные результаты.

Таким образом, минимизация функции стоимости — это способ предсказать точные результаты для новых данных.

Алгоритм градиентного спуска

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

Чтобы понять, что такое градиентный спуск, представьте, что вы стоите на вершине холма и вам нужно добраться до подножия, фишка здесь в том, что у вас завязаны глаза😎. Как вы достигнете?

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

Распаковка,

  • α постоянная скорость обучения (положительное целое число): если α мало, мы делаем более медленные шаги, чтобы достичь подножия холма, поэтому градиентный спуск будет медленным. Если α слишком велико, мы можем пропустить основание холма и градиентный спуск не сойдется. α поддерживается постоянным, потому что производные в любом случае сводятся к минимуму.
  • Значение θ ᵢ обновляется до тех пор, пока мы не достигнем глобального минимума.

Для линейной регрессии после получения производной MSE уравнение будет изменено следующим образом:

Кстати, для тех, кому интересно, что это за магия🤔?

Задача

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

Шаг 1: случайно выберите несколько констант m & b

Подождите… но их бесконечное множество, как же я выбрал один!😅

В математике m = наклон (изменение y/ изменение x)

Наклон линии рассчитывается как изменение y, деленное на изменение x,, поэтому расчет будет выглядеть так:

(x1, y1) = (1, 2.5) and (x2, y2) = (3,1)
m = (y2 - y1) / (x2 - x1)
m = 0.25

В математике b = точка пересечения с y / смещение

Y-отрезок / смещение должны быть рассчитаны по формуле y-y1 = m(x-x1)

y - 2.5 = 0.25 (x - 1)
y = 0.25x + 2.25
b = 2.25

Шаг 2. Используйте эти постоянные значения для прогнозирования (укажите y=mx+b)

поэтому, используя вышеупомянутую интуицию в качестве основы,

Наше первое предположение о константах не так уж и плохо😁, так как мы нашли 2 из них правильными!

Шаг 3. Используйте градиентный спуск для оптимизации и поиска лучших значений m и b (включите градиентный спуск для уравнения MSE)

При замене получилось m = 0.24 and b = 2.23

Это продолжается до тех пор, пока мы не получим прогнозируемый y, близкий к фактическому y с меньшим MSE.

Теперь мы можем использовать синюю линию для предсказания неизвестной зависимой переменной house_prize по заданному house_size.

Мгновенный пример: house_size = 1,8 (10 кв. м), house_price = 2,8 (10 л)

Здесь я попытался объяснить линейную регрессию, насколько мне известно. скоро вернемся с реальным примером набора данных, чтобы создать идеальную модель линейной регрессии.

Пожалуйста, дайте мне знать о любых предложениях или разъяснениях в комментариях.

Ресурсы: