Линейная регрессия — это широко используемый статистический метод в машинном обучении, который используется для установления связи между двумя или более переменными. Это алгоритм обучения с учителем, который можно использовать для прогнозирования непрерывной выходной переменной на основе одной или нескольких входных переменных. В этой статье мы подробно обсудим линейную регрессию, включая ее типы, примеры, код и приложения.
Типы линейной регрессии
Существует два типа линейной регрессии: простая линейная регрессия и множественная линейная регрессия.
Простая линейная регрессия:
Простая линейная регрессия включает только одну независимую переменную и одну зависимую переменную. Он используется для установления линейной зависимости между двумя переменными. Уравнение простой линейной регрессии:
Где y — зависимая переменная, x — независимая переменная, w — наклон, b — точка пересечения, а формула для нахождения w и b:
[ w = nΣ(xi-x̄)(yi-ȳ) / nΣ(xi-x̄)²
b = ȳ-wx̄ ]
где n — количество наблюдений, nΣ — сумма от 1 до n, xi — наблюдения в x (признак), yi — это наблюдения в y (цель), x̄ — среднее значение всех x, а ȳ — среднее значение всех y.
Пример:
Предположим, у нас есть набор данных, содержащий информацию о цене и размере домов. Набор данных выглядит следующим образом:
Мы хотим использовать линейную регрессию, чтобы предсказать цену дома на основе его размера. Мы можем использовать следующее уравнение для простой линейной регрессии:
y = wx + b
где y — цель, т. е. цена ($), x — характеристика, т. е. размер (квадратные футы), w — наклон, а b — точка пересечения.
Используя приведенную выше формулу, мы вычисляем w и b и получаем:
w = 50 и b = 0
Таким образом, уравнение простой линейной регрессии будет выглядеть так:
y = 50x + 0
Теперь мы можем использовать это уравнение для прогнозирования цены дома площадью 1800 квадратных футов:
y = 50(1800) + 0 = $90,000
Поэтому мы прогнозируем, что дом площадью 1800 квадратных футов будет стоить 90 000 долларов. Это очень простой пример «прогнозирования цен на жилье».
Реализация кода линейной регрессии с использованием Scikit-learn
import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression X = np.array([1000, 1500, 2000, 2500, 3000]).reshape(-1,1) y = np.array([50000, 75000, 100000, 125000, 150000]) lr = LinearRegression() lr.fit(X, y) pred = lr.predict(X) print('The value of slope w is',lr.coef_) print('The value of intercept b is',lr.intercept_) #The value of slope w is 50 #The slope of intercept b is 0
Множественная линейная регрессия:
Множественная линейная регрессия включает две или более независимых переменных и одну зависимую переменную. Он используется для установления линейной зависимости между зависимой переменной и независимыми переменными. Уравнение множественной линейной регрессии:
Где y — зависимая переменная, x1, x2, …, xn — независимые переменные, а b — точка пересечения и формула для нахождения w и b:
[ w = (X^T X)^-1 X^T Y
b = Y_bar — b^T X_bar ]
где:
- w - вектор-столбец оценочных коэффициентов для каждой независимой переменной (каждого признака), где b - член пересечения
- X — матрица, содержащая независимые значения, т. е. все значения x (x1, x2, …xn), которая включает столбец единиц для термина пересечения и столбец для каждой независимой переменной
- Y — вектор-столбец зависимой переменной, т. е. все значения y (целевые значения).
- Y_bar — это среднее значение зависимой переменной.
- X_bar — это вектор-строка средних значений каждой независимой переменной.
Пример:
Предположим, у нас есть набор данных, который содержит более одной функции (количество спален, количество ванных комнат и т. д.) и целевую переменную (цену). Набор данных выглядит следующим образом:
Мы хотим использовать множественную линейную регрессию для прогнозирования цены дома на основе всех предоставленных функций. Мы можем использовать следующее уравнение для простой линейной регрессии:
y = w1x1 + w2x2 + w3x3 + b
где y — цель, т. е. цена ($), x1 — первая характеристика, т. е. x2 — вторая характеристика, т. е. количество ванных комнат, x3 — третья характеристика, т. е. площадь в квадратных футах, w1, w2 и w3 — веса для каждой характеристики и б - перехват.
Используя приведенную выше формулу, мы вычисляем w1, w2, w3 и b и получаем:
w = массив([-2500, -2500, 20]) и
b = 2500.0000010623
Таким образом, уравнение простой линейной регрессии будет выглядеть так:
y = (-2500)x1 + (-2500)x2 + (20)x3 + 2500
Теперь мы можем спрогнозировать стоимость дома с 5 спальнями, 5 ванными комнатами и площадью 5 000 квадратных метров:
y = (-2500)(5) + (-2500)(5) + (20)(5000) + 2500 = $77,500.
Таким образом, мы прогнозируем, что дом с 5 спальнями, 5 ванными комнатами и площадью 5000 квадратных метров будет стоить 77 500 долларов.
import pandas as pd import numpy as np df = pd.DataFrame({'# of bedrooms':[3,4,2,4], '# of bathrooms':[2,3,1,3], 'Square footage':[2000,3000,1500,3500], 'Price($)':[30000,45000,25000,55000]}) X = df.iloc[:, :3] y = df.iloc[:, -1] from sklearn.linear_model import LinearRegression lr = LinearRegression() lr.fit(X, y) print('The matrix containing all weights w is',lr.coef_) print('The value of intercept b is', lr.intercept_) #The matrix containing all weights w is array([-2500., -2500., 20.]) #The value of intercept b is 2500.0000000010623 our_house = np.array([5,5,5000]).reshape(1,-1) lr.predict(our_house) #array([77500.])
Заключение
- В простой линейной регрессии у нас есть одна входная функция (x) и одна целевая переменная (y), тогда как мы пытаемся нарисовать линию, пытаясь коснуться каждой точки данных на графике.
- В множественной регрессии у нас есть более 1 признака (x1, x2, ….xn) и одна целевая переменная (y), тогда как мы пытаемся нарисовать плоскость (в случае 2 признаков) и гиперплоскость (в случае 3 функции), который пытается коснуться всех точек данных на графике.
Чтобы узнать о последних сведениях, тенденциях и инновациях в области искусственного интеллекта, машинного обучения и науки о данных, а также наводящих на размышления дискуссиях, обращайтесь по адресу https://twitter.com/deepshikhxr