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

Это одна из самых простых для понимания моделей машинного обучения. Линейная регрессия бывает трех типов:
а) Простая линейная регрессия
б) Множественная линейная регрессия
в) Полиномиальная линейная регрессия

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

Простая линейная регрессия

Простая линейная регрессия имеет один входной параметр и один выходной параметр. Мы поймем это на примере, например, учитывая CGPA студентов, которые нам нужны, чтобы найти пакет, который он / она получит.

Код:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

df=pd.read_csv('placement.csv')
df.head()

#output
 cgpa package
0 6.89 3.26
1 5.12 1.98
2 7.82 3.25
3 7.42 3.67
4 6.94 3.57

Давайте построим график этих точек данных:

plt.scatter(df['cgpa'],df['package'])
plt.xlabel('CGPA')
plt.ylabel('Package')

Теперь мы видим, что если мы попытаемся провести линию между этими точками, то она не будет линейной (поскольку мы имеем дело с реальными данными), поэтому мы пытаемся найти наиболее подходящую линию среди этих точек данных с помощью линейного метода. Регрессия.

Мы разделим столбцы CGPA и наименование пакета как X и Y одновременно, а затем разделим данные на обучение и тестирование с помощью Sklearn, а затем обучим данные, применив алгоритм линейной регрессии к нашему набору обучающих данных, а затем применим его для прогнозирования выходных данных. на тестовых данных.

X=df.iloc[:,0:1]
Y=df.iloc[:,-1]

from sklearn.model_selection import train_test_split
X_train,X_test,Y_train,Y_test=train_test_split(X,Y,test_size=0.2,random_state=2)
#here our test data is 20%

from sklearn.linear_model import LinearRegression
lr=LinearRegression() #create an object

lr.fit(X_train,Y_train)

lr.predict(X_test.iloc[0].values.reshape(1,1))

# output- array([3.89111601])

Здесь мы видим, что пакет первого индекса будет равен 3,89, но в реальных тестовых данных он равен 4,10.

Давайте посмотрим на линию BestFit на графике.

plt.scatter(df['cgpa'],df['package'])
plt.plot(X_train,lr.predict(X_train),color='red')
plt.xlabel('CGPA')
plt.ylabel('Package)

Здесь мы видим линию BestFit (красную), она обозначается y=mx+c.
m=lr.coef_
c =lr.intercept_
m=наклон в математическом выражении и c=перехват/смещение
Теперь мы знаем x т.е. CGPA ,m,c, поэтому теперь мы можем вычислить Y т.е. Package.
Package= м*CGPA + с

Как найти m,c?
У нас есть два способа: решение в закрытой форме и еще одна в незамкнутой форме.
Закрытая форма соответствует методу OLS (обычных наименьших квадратов), и sklearn использует его. техника. Незамкнутая форма использует технику градиентного спуска и используется в SGDr Regressor.
Когда мы пытаемся нарисовать линию наилучшего соответствия, возникнет некоторая ошибка, поскольку не все точки данных будут лежать на этой линии. Итак, чтобы вычислив ошибку, мы найдем расстояние каждой точки данных от этой линии BestFit. Предположим, что для каждой точки данных расстояние ошибки, то есть разница фактического Y и прогнозируемого Y, равна d1, d2, d3,…… dn. И чтобы найти общую ошибку, нам нужно суммировать все расстояния ошибок, но расстояние ошибок может быть отрицательным. Кроме того, поскольку некоторые точки данных будут лежать ниже линии наилучшего соответствия, поэтому, чтобы устранить эту проблему, мы возведем в квадрат все расстояния ошибок, и тогда наша функция ошибки будет E=d1²+d2²+d3²+……+dn²
E=Σdi² это наша функция ошибки/функция потерь и di=(yi-ŷ). Нам нужно минимизировать эту функцию ошибки. Поэтому нам нужно найти максимумы и минимумы этой функции, для этого нам нужно найти производную и после этого мы сможем найти m и c. Если вам нужно понять всю математическую интуицию, стоящую за этим, не стесняйтесь обращаться ко мне.
m=∑[(xi-x)(yi-y)] /∑[(xi-x)2]
b=y-mx

Метрики регрессии:
1) Средняя абсолютная ошибка (MAE)
2) Среднеквадратическая ошибка (MSE)
3) Среднеквадратическая ошибка (RMSE)
4)R2 Оценка
5)Скорректированная оценка R2

Мы можем рассчитать эту метрику с помощью sklearn.Metrics.

Линейная регрессия имеет различные применения, включая, помимо прочего:

  • Прогнозирование цен на жилье на основе таких характеристик, как площадь в квадратных метрах, количество спален и т. д.
  • Оценка влияния рекламных расходов на продажи.
  • Анализ взаимосвязи между такими факторами, как возраст, доход и состояние здоровья.

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