В этом блоге будет рассмотрен первый алгоритм машинного обучения с реализацией. давайте углубимся в это.
Что такое линейная регрессия?
Это контролируемый алгоритм машинного обучения, который предсказывает взаимосвязь между зависимыми и независимыми переменными.
Линейная регрессия соответствует прямой линии или поверхности, которая минимизирует зависимости между прогнозируемыми и фактическими выходными значениями.
Линейная регрессия находит взаимосвязь того, насколько зависимая переменная изменяется с изменением независимой переменной (переменных).
Надеюсь, приведенные выше определения будут вам понятны. Если нет, то не беспокойтесь, у нас будет подробное объяснение этого. Итак, когда дело доходит до машинного обучения, мы должны помнить об одном: обучение на основе данных. Как я уже говорил в своем блоге о машинном обучении, здесь я попытаюсь доказать, как машины могут обучаться.
Перед объяснением линейной регрессии мы должны знать некоторые термины, такие как регрессия, линейные данные, линейная и подгонка.
Регрессия
Слово «регрессия» в машинном обучении используется, когда у нас есть непрерывные данные, такие как температура, зарплата и т. д.
Линейный
Линейный означает переход от одного этапа к другому за одну серию шагов; последовательный. Итак, если мы используем линейные данные, которые имеют смысл
Объяснение
Предположим, у нас есть линейные данные, которые имеют две переменные, одну по оси 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()
Вот и все!! Приятного чтения!