„Линейната регресия“ е широко използвана статистическа техника в машинното обучение, която се използва за установяване на връзка между две или повече променливи. Това е алгоритъм за контролирано обучение, който може да се използва за прогнозиране на непрекъсната изходна променлива въз основа на една или повече входни променливи. В тази статия ще обсъдим подробно линейната регресия, включително нейните видове, примери, код и приложения.

Видове линейна регресия

Има два вида линейна регресия: Проста линейна регресия и Множествена линейна регресия.

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

Простата линейна регресия включва само една независима променлива и една зависима променлива. Използва се за установяване на линейна зависимост между двете променливи. Уравнението за проста линейна регресия е:

Където y е зависимата променлива, x е независимата променлива, w е наклонът и b е пресечната точка, а формулата за намиране на w и b е:

[ w = nΣ(xi-x̄)(yi-ȳ) / nΣ(xi-x̄)²

b = ȳ-wx̄ ]

където n е броят на наблюденията, е сбор от 1 до n, xi е наблюденията в x (характеристика), yi е наблюденията в y (цел), е средната стойност на всички 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 са теглата за всяка характеристика и b е пресечната точка.

Използвайки горната формула, изчисляваме w1, w2, w3 и b и получаваме:

w = масив ([ -2500, -2500, 20]) и

b = 2500.0000010623

Така че уравнението за проста линейна регресия ще бъде:

y = (-2500)x1 + (-2500)x2 + (20)x3 + 2500

Сега можем да предвидим къща на цена, която има 5 спални, 5 бани и 5000 квадратни метра:

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.])

Заключение

  1. При проста линейна регресия имаме една входна характеристика (x) и една целева променлива (y), докато се опитваме да начертаем линия, опитвайки се да докоснем всяка точка от данни на графиката.
  2. При множествената регресия имаме повече от 1 характеристика (x1, x2, ….xn) и една целева променлива (y), докато се опитваме да начертаем равнина (в случай на 2 характеристики) и хиперравнина (в случай на 3 функции), който се опитва да докосне всички точки от данни на графиката.

За най-новите прозрения, тенденции и иновации в AI, ML и Data Science и провокиращи мисли дискусии се свържете на https://twitter.com/deepshikhxr