Линейная регрессия:

Линейная регрессия – это алгоритм, использующий прямую линию (или плоскость) для описания отношений между переменными.

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

Линейная регрессия заключается в поиске линии, которая лучше всего соответствует данным. Затем эту модель (или линию) можно использовать для прогнозирования.

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

y=mx+b

Где m – это наклон линии, а b – точка пересечения с осью y. Опять же, это общее уравнение. Для конкретной линии нам нужно знать значения наклона и точки пересечения по оси Y. Например, следующие уравнения представляют три разные линии.

y=10x+50 y = 10 x + 50 y=10x+50

y=2x+3 y = 2 x + 3 y=2x+3

y=−10x+40 y = -10 x + 40 y=−10x+40

Подобные уравнения можно использовать для прогнозирования. Как только мы узнаем m и b , мы можем ввести значение x, и уравнение даст нам значение y.

y=mx+b

В алгебраических терминах мы можем называть m коэффициентом при x или просто наклоном линии, а b мы можем называть y- перехват. В машинном обучении вы, как правило, видите точку пересечения по оси Y, называемую смещением. В машинном обучении вы также часто видите уравнение, представленное с использованием разных переменных, например:

y=B0+B1∗x

Обучение модели линейной регрессии

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

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

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

Линейное предположение:

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

Удалить коллинеарность. Когда две переменные коллинеарны, это означает, что они могут быть смоделированы одной и той же линией или, по крайней мере, имеют высокую корреляцию; другими словами, одна входная переменная может быть точно предсказана другой. Например, предположим, что мы хотим предсказать уровень образования, используя входные переменные number of years studying at school, if an individual is male и if an individual is female. В этом случае мы увидим коллинеарность — входная переменная if an individual is female может быть точно предсказана с помощью if an individual is male, поэтому мы можем сказать, что они сильно коррелированы. Наличие сильно коррелированных входных переменных сделает модель менее согласованной, поэтому важно выполнить проверку корреляции между входными переменными и удалить сильно коррелированные входные переменные.

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

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

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

Импорт библиотек

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

Разделение набора данных на обучающий набор и тестовый набор

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 = 0)

Обучение модели простой линейной регрессии на обучающем наборе

from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, y_train)

Прогнозирование результатов набора тестов

y_pred = regressor.predict(X_test)

Визуализация результатов тренировочного набора

plt.scatter(X_train, y_train, color = 'red')
plt.plot(X_train, regressor.predict(X_train), color = 'blue')
plt.title('Salary vs Experience (Training set)')
plt.xlabel('Years of Experience')
plt.ylabel('Salary')
plt.show()

Визуализация результатов набора тестов

plt.scatter(X_test, y_test, color = 'red')
plt.plot(X_train, regressor.predict(X_train), color = 'blue')
plt.title('Salary vs Experience (Test set)')
plt.xlabel('Years of Experience')
plt.ylabel('Salary')
plt.show()