„Линейната регресия“ е широко използвана статистическа техника в машинното обучение, която се използва за установяване на връзка между две или повече променливи. Това е алгоритъм за контролирано обучение, който може да се използва за прогнозиране на непрекъсната изходна променлива въз основа на една или повече входни променливи. В тази статия ще обсъдим подробно линейната регресия, включително нейните видове, примери, код и приложения.
Видове линейна регресия
Има два вида линейна регресия: Проста линейна регресия и Множествена линейна регресия.
Проста линейна регресия:
Простата линейна регресия включва само една независима променлива и една зависима променлива. Използва се за установяване на линейна зависимост между двете променливи. Уравнението за проста линейна регресия е:
Където 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 са теглата за всяка характеристика и 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.])
Заключение
- При проста линейна регресия имаме една входна характеристика (x) и една целева променлива (y), докато се опитваме да начертаем линия, опитвайки се да докоснем всяка точка от данни на графиката.
- При множествената регресия имаме повече от 1 характеристика (x1, x2, ….xn) и една целева променлива (y), докато се опитваме да начертаем равнина (в случай на 2 характеристики) и хиперравнина (в случай на 3 функции), който се опитва да докосне всички точки от данни на графиката.
За най-новите прозрения, тенденции и иновации в AI, ML и Data Science и провокиращи мисли дискусии се свържете на https://twitter.com/deepshikhxr