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

До линейной регрессии.

Чтобы понять машинное обучение, нам нужно иметь некоторые простые понятия о математике средней школы. В частности, концепции координатной геометрии и Концепция аппроксимации линий. Геометрия координат поможет вам понять, как точки представлены на графике? и концепция Line Fiting поможет вам понять, как линия лучше всего соответствует нарисованным точкам на графике?

Как точки представлены на графике?

Давайте разберемся с этой концепцией. Предположим, у нас есть точки, скажем, значения X и Y следующим образом:

X = 1, 2, 3, 4, 5 Y = 9, 3, 2, 5, 6

Чтобы нанести эти точки (x, y) на график, мы нанесем соответствующие точки X и Y на оси X и оси Y. Затем на эти точки мы проведем перпендикуляры, а точка пересечения прямых даст нам точку этих х и у.

Как линия подходит к этим точкам?

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

Что означает это приближение?

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

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

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

Теперь, когда мы поняли эти концепции, давайте теперь поймем, что на самом деле означает линейная регрессия?

Что такое линейная регрессия?

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

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

Как работает линейная регрессия?

Эта линейная регрессия является простейшим из алгоритмов и очень важна для понимания. Его работа настолько важна, что однажды понятая; вы можете решить почти половину задач машинного обучения.

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

В приведенном выше примере синяя линия — это линия наилучшего соответствия и, следовательно, решение проблемы.

Как происходит обучение в линейной регрессии.

Давайте посмотрим, как происходит обучение в линейной регрессии. Всем нам знакомо следующее уравнение — уравнение прямой

где m = наклон линии и

c - точка пересечения с осью Y

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

Таким образом, обучение означает нахождение наклона и пересечения таким образом, чтобы найденная линия была наилучшей.

Ошибка в линейной регрессии.

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

В линейной регрессии мы говорим о двух типах ошибок (в основном).

  1. Среднеквадратическая ошибка.
  2. Средняя квадратическая ошибка.

Среднеквадратическая ошибка

Когда мы используем эту ошибку, мы выполняем следующие шаги:

  • Во-первых, мы вычисляем разницу между приближением и фактическим значением.
  • Затем находим квадрат разности.
  • После этого находим среднее значение рассчитанных значений.
  • Это среднеквадратическая ошибка. Цель состоит в том, чтобы уменьшить эту ошибку.

Квадрат взят из-за того, что расстояние от одной точки до другой не должно быть отрицательным.

Предположим, у нас есть разные значения 5, 6, 7, 8.

После их возведения в квадрат и суммирования получаем — 5 2+ 6 2+ 7 2+ 8 2= 174

Разделив на количество значений, получим среднее значение рассчитанной суммы — 174/4 = 43,5. Это и есть полученная среднеквадратическая ошибка.

Средняя квадратическая ошибка

Когда мы используем эту ошибку, мы выполняем следующие шаги:

  • Во-первых, мы вычисляем разницу между приближением и фактическим значением.
  • Затем находим квадрат разности.
  • После этого находим среднее значение рассчитанных значений.
  • Это среднеквадратическая ошибка. Цель состоит в том, чтобы уменьшить эту ошибку.

Квадрат взят из-за того, что расстояние от одной точки до другой не должно быть отрицательным

Предположим, у нас есть разные значения 5, 6, 7, 8.

После их возведения в квадрат и суммирования получаем — 5 2+ 6 2+ 7 2+ 8 2= 174

Делим на количество значений так, чтобы получить среднее значение вычисленной суммы — 174/4 = 43,5.

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

Таким образом, RMSE = 6,59, что является полученным RMSE.

Код линейной регрессии в Python

В этом посте я буду реализовывать линейную регрессию на python с помощью библиотек, а не на чистом Python с NumPy.

Я буду получать помощь от sci-kitlearn, pandas и NumPy для реализации линейной регрессии. В следующем посте мы рассмотрим код только с python и NumPy. Чтобы вы почувствовали, что мы чего-то достигли, мы начнем с простой реализации, не беспокоясь о лежащих в ее основе сложностях и реализациях.

Существует два типа линейной регрессии — 1. Простая линейная регрессия 2. Множественная линейная регрессия.

Простая линейная регрессия — когда у нас есть одна входная переменная и одна выходная переменная.

Множественная линейная регрессия — когда у нас есть более одной входной переменной и одна выходная переменная.

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

Итак, давайте начнем сначала с импорта библиотек, которые нам нужны -

import numpy as np import pandas as pd from sklearn.linear_model import LinearRegression

Numpy используется для работы с матричными данными.

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

sklearn содержит алгоритмы обучения, из которых мы будем использовать класс LinearRegression.

Далее мы импортируем данные.

data = pd.read_csv("Path of the data file, in csv form", sep=",") print(data)

Как мы видим, есть одна входная переменная, то есть опыт, и одна выходная переменная, то есть заработная плата. Теперь разделив входную переменную и выходную переменную как -

# Input variable X = data.iloc[:,:-1].values y = data.iloc[:, -1].values

iloc — это способ доступа к значениям фрейма данных (который дают нам панды), а точечные значения (.values) дают нам результат в виде массива. Получив эти X, y, мы инициализируем класс LinearRegression.

lr = LinearRegression() import matplotlib.pyplot as plt plt.scatter(X, y) plt.show()

Matplotlib — это библиотека, которая позволяет нам визуализировать данные.

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

preds = lr.predict(X)

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

plt.scatter(X, y) plt.plot(X, preds)

Выводы

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

Если вам понравился этот пост, поставьте лайк, поделитесь публикацией и наслаждайтесь машинным обучением.

Хотите прочитать мои Предыдущие посты.

Спасибо, и наслаждайтесь :)

Записей не найдено

Я аспирант из Кашмира в области компьютерных наук. В эти дни covid я обращаюсь к распространению информации о машинном обучении, которое является моей страстью и изучением будущего. Цель состоит в том, чтобы заставить людей понять и понять основные концепции машинного и глубокого обучения, которые имеют решающее значение для дальнейшего успеха в этой области.

Первоначально опубликовано на https://mlforlazy.in 16 мая 2021 г.