В этом блоге будет рассмотрен первый алгоритм машинного обучения с реализацией. давайте углубимся в это.

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

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

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

Линейная регрессия находит взаимосвязь того, насколько зависимая переменная изменяется с изменением независимой переменной (переменных).

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

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

Регрессия

Слово «регрессия» в машинном обучении используется, когда у нас есть непрерывные данные, такие как температура, зарплата и т. д.

Линейный

Линейный означает переход от одного этапа к другому за одну серию шагов; последовательный. Итак, если мы используем линейные данные, которые имеют смысл

Объяснение

Предположим, у нас есть линейные данные, которые имеют две переменные, одну по оси x, которая является независимой переменной, и одну по оси y, которая является зависимой переменной (переменными). В реальном сценарии это может быть как зарплата, так и опыт. Очевидно, что заработная плата является зависимой, а опыт является независимой переменной. Это означает, что прибавка к заработной плате, основанная на опыте, будет иметь некоторую зависимость. Таким образом, подгонка этого отношения называется линейной регрессией. Таким образом, подгонка на самом деле означает, что обобщение отношения между зависимыми и независимыми переменными предсказывается линейной регрессией.

На приведенном выше рисунке видно, что по оси x приращение делает приращение по оси y. Кроме того, приращение по оси Y имеет отношение, что означает, что при изменении d по оси X происходит изменение d по оси Y. Отношения фиксируются линейной регрессией, которая может доказать, что алгоритмы учатся на данных😊.

Как?

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

Что!! и как!!…

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

y — зависимая переменная, где X — независимая переменная. Кроме того, независимая переменная также называется меткой, а зависимая переменная (переменные) также называется признаком (признаками) или предиктором (предикторами).

Как он учится

Как и в уравнении, x — это объекты, а y — метка, поэтому есть еще две переменные, m (наклон) и b (смещение), которые называются параметрами в контексте машинного обучения. Итак, цель линейной регрессии — найти наилучшие параметры, соответствующие данным. Однако делается это не сразу. Поиск лучшей линии — это процесс поиска, в котором линейная регрессия изменяет m и b и определяет лучшие m и b.

Что такое наклон и смещение? как это помогает линейной регрессии?

Наклон в линейной регрессии говорит о важности данных функций или о том, сколько изменений ожидается для маркировки (зависит) от изменений в функциях (независимо). или Наклон указывает на крутизну линии. Кроме того,концепция наклона важна в линейной регрессии, поскольку она используется для измерения скорости, с которой происходят изменения. Завершите этот абзац как показатель наклона взаимосвязи между меткой и объектом(ами). Его можно обозначить как M, тета или B1

На приведенном выше рис. B 'уклон.

Перехват или предвзятость

Отрезок (иногда называемый «константой») в регрессионной модели представляет среднее значение переменной отклика, когда все переменные-предикторы в модели равны нулю. илиТочка пересечения (часто называемая константой) это точка, в которой функция пересекает ось Y. или y-пересечение — это место, где линия регрессииy = MX + b пересекает ось y (где x = 0) и обозначается b или B0.

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

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

Функция потери

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

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

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

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

Для регрессии доступны три функции стоимости: средняя абсолютная ошибка,средняя квадратичная ошибка и среднеквадратическая ошибка.

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

J — функция стоимости, pred — прогноз, сделанный моделью, а y — истинная метка.

Но ждать!!!!!!!!!!!!!

Что говорит линейной регрессии обновить параметры

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

Оптимизатор

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

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

Оптимизация — это функция поиска набора параметров для алгоритмов с минимальной стоимостью.

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

Типы линейной регрессии

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

Простая линейная регрессия помогает найти линейную связь между двумя непрерывными переменными, одной независимой и одной зависимой характеристикой.
Формула может быть представлена ​​в виде y=mx+b или,

Множественная линейная регрессия:

Множественная линейная регрессия является наиболее распространенной формой линейного регрессионного анализа. В качестве прогностического анализа множественная линейная регрессия используется для объяснения взаимосвязи между одной непрерывной зависимой переменной и двумя или более независимыми переменными.

Предположения линейной регрессии:

  • Независимые переменные должны быть линейно связаны с зависимыми переменными.
    Это можно проверить с помощью нескольких методов визуализации, таких как Scatter графики или, возможно, вы можете использовать тепловую карту или парный график (чтобы визуализировать каждую функцию в данных на одном конкретном графике).
  • Каждая функция в данных имеет нормальное распределение.
    Это снова можно проверить с помощью различных методов визуализации, таких как графики Q-Q, гистограммы и многое другое.
  • Мультиколлинеарность в данных должна быть незначительной или отсутствовать вовсе.
    Лучший способ проверить наличие мультиколлинеарности – выполнить VIF (коэффициент инфляции дисперсии).
  • Среднее значение остатка равно нулю.
    Остаток – это разница между наблюдаемым значением y и прогнозируемым значением y. Однако наличие остатков ближе к нулю означает, что модель работает отлично.
  • Полученные остатки должны быть нормально распределены.
    Это можно проверить, используя график Q-Q для остатков.
  • Дисперсия остатка по всем данным должна быть одинаковой. Это известно как гомоскедастичность.
    Это можно проверить с помощью остаточного и подобранного графика.
  • Автокорреляция в данных должна быть незначительной или вообще отсутствовать.
    Автокорреляция Происходит, когда остатки не являются независимыми друг от друга. Обычно это происходит при анализе временных рядов.
    Вы можете выполнить тест Дарбина-Ватсона или построить график ACF для проверки автокорреляции. Если значение теста Дарбина-Ватсона равно 2, то это означает отсутствие автокорреляции. Если значение ‹ 2, то имеется положительная корреляция, а если значение находится в диапазоне от >2 до 4, то имеется отрицательная автокорреляция.

Вот так🤷‍♂️!!! Давайте реализуем это. А теперь повеселимся😃😃

вы можете найти набор данных и код ЗДЕСЬ

импортировать библиотеки

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

dataset=pd.read_csv("./Salary_Data.csv")
# X=dataset.iloc[:,:-1].values
# y=dataset.iloc[:,1:].values

Заполнение пропущенных значений

# missing data
# from sklearn.impute import SimpleImputer
# model=SimpleImputer(missing_values="all",strategy="mean")
# imputer=model.fit(features)
# feautres=imputer.transform(features)

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

# spliting the model
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.33,random_state=0)

импорт модели

# linear Regression model
from sklearn.linear_model import LinearRegression
model=LinearRegression()
model.fit(X_train,y_train)
model.coef_

прогнозирование модели на невидимых данных

from sklearn.metrics import mean_squared_error,mean_absolute_error
model.intercept_
# predication the test set result
y_pred=model.predict(X_test)
# predication on new data
model.intercept_

mse = mean_squared_error(y_test, y_pred)

# Let's take the square root
rmse = np.sqrt(mse)
# Print the result
print('Root Mean Squared Error: ' + str(rmse))
check=mean_absolute_error(y_test,y_pred)
# print(check)

построение линии

# plotting graph of training learning 
# plt.scatter(X_train,y_train,color="red")
plt.plot(X_train,model.predict(X_train),color="blue")
plt.title("salary vs exprience")
plt.xlabel("exprience")
plt.ylabel("salary")
plt.show()

Вот и все!! Приятного чтения!