У претходној теми смо научили о једноставној линеарној регресији, где се једна променљива независног/предикторског(Кс) користи за моделирање променљиве одговора (И). Али могу постојати различити случајеви у којима на променљиву одговора утиче више од једне променљиве предиктора; за такве случајеве користи се алгоритам вишеструке линеарне регресије.
Штавише, вишеструка линеарна регресија је проширење једноставне линеарне регресије јер је потребно више од једне променљиве предиктора да би се предвидела променљива одговора. Можемо га дефинисати као:
Вишеструка линеарна регресија је један од важних алгоритама регресије који моделира линеарни однос између једне зависне континуиране променљиве и више од једне независне променљиве.
Пример:
Предвиђање ЦО2емисија на основу величине мотора и броја цилиндара у аутомобилу.
Неке кључне тачке о МЛР-у:
- За МЛР, зависна или циљна варијабла (И) мора бити континуирана/реална, али предикторска или независна варијабла може бити континуираног или категоричког облика.
- Свака променљива обележја мора да моделира линеарни однос са зависном променљивом.
- МЛР покушава да уклопи линију регресије кроз вишедимензионални простор тачака података.
МЛР једначина:
У вишеструкој линеарној регресији, циљна променљива (И) је линеарна комбинација више променљивих предиктора к1, Икс2, Икс3, ...,Иксн. Пошто је то побољшање једноставне линеарне регресије, па се исто примењује и за једначину вишеструке линеарне регресије, једначина постаје:
Y= b<sub>0</sub>+b<sub>1</sub>x<sub>1</sub>+ b<sub>2</sub>x<sub>2</sub>+ b<sub>3</sub>x<sub>3</sub>+...... bnxn ............... (a)
Где,
И= Варијабла Излаз/Одзив
жице у в
б0, б1, б2, б3, бн....= Коефицијенти модела.
Икс1, Икс2, Икс3, Икс4,...= Разне Независне/променљиве карактеристике
Претпоставке за вишеструку линеарну регресију:
- А линеарни однос треба да постоји између циљних и предикторских варијабли.
- Остаци регресије морају бити нормално распоређени .
- МЛР претпоставља мало или нема мултиколинеарности (корелација између независне варијабле) у подацима.
Имплементација модела вишеструке линеарне регресије користећи Питхон:
Да бисмо имплементирали МЛР користећи Питхон, имамо следећи проблем:
Опис проблема:
Имамо скуп података од 50 старт-уп компанија . Овај скуп података садржи пет главних информација: Потрошња на истраживање и развој, потрошња администрације, потрошња на маркетинг, стање и профит за финансијску годину . Наш циљ је да направимо модел којим се лако може утврдити која компанија има максималан профит, а која је фактор који највише утиче на профит компаније.
Пошто треба да пронађемо Профит, то је зависна варијабла, а остале четири варијабле су независне варијабле. Испод су главни кораци примене МЛР модела:
Корак 1: Претходна обрада података Корак:
Први корак је
# importing libraries import numpy as nm import matplotlib.pyplot as mtp import pandas as pd
#importing datasets data_set= pd.read_csv('50_CompList.csv')
Излаз: Добићемо скуп података као:
У горњем излазу, можемо јасно видети да постоји пет варијабли, у којима су четири варијабле континуиране, а једна је категоричка варијабла.
#Extracting Independent and dependent Variable x= data_set.iloc[:, :-1].values y= data_set.iloc[:, 4].values
Излаз:
Оут[5]:
array([[165349.2, 136897.8, 471784.1, 'New York'], [162597.7, 151377.59, 443898.53, 'California'], [153441.51, 101145.55, 407934.54, 'Florida'], [144372.41, 118671.85, 383199.62, 'New York'], [142107.34, 91391.77, 366168.42, 'Florida'], [131876.9, 99814.71, 362861.36, 'New York'], [134615.46, 147198.87, 127716.82, 'California'], [130298.13, 145530.06, 323876.68, 'Florida'], [120542.52, 148718.95, 311613.29, 'New York'], [123334.88, 108679.17, 304981.62, 'California'], [101913.08, 110594.11, 229160.95, 'Florida'], [100671.96, 91790.61, 249744.55, 'California'], [93863.75, 127320.38, 249839.44, 'Florida'], [91992.39, 135495.07, 252664.93, 'California'], [119943.24, 156547.42, 256512.92, 'Florida'], [114523.61, 122616.84, 261776.23, 'New York'], [78013.11, 121597.55, 264346.06, 'California'], [94657.16, 145077.58, 282574.31, 'New York'], [91749.16, 114175.79, 294919.57, 'Florida'], [86419.7, 153514.11, 0.0, 'New York'], [76253.86, 113867.3, 298664.47, 'California'], [78389.47, 153773.43, 299737.29, 'New York'], [73994.56, 122782.75, 303319.26, 'Florida'], [67532.53, 105751.03, 304768.73, 'Florida'], [77044.01, 99281.34, 140574.81, 'New York'], [64664.71, 139553.16, 137962.62, 'California'], [75328.87, 144135.98, 134050.07, 'Florida'], [72107.6, 127864.55, 353183.81, 'New York'], [66051.52, 182645.56, 118148.2, 'Florida'], [65605.48, 153032.06, 107138.38, 'New York'], [61994.48, 115641.28, 91131.24, 'Florida'], [61136.38, 152701.92, 88218.23, 'New York'], [63408.86, 129219.61, 46085.25, 'California'], [55493.95, 103057.49, 214634.81, 'Florida'], [46426.07, 157693.92, 210797.67, 'California'], [46014.02, 85047.44, 205517.64, 'New York'], [28663.76, 127056.21, 201126.82, 'Florida'], [44069.95, 51283.14, 197029.42, 'California'], [20229.59, 65947.93, 185265.1, 'New York'], [38558.51, 82982.09, 174999.3, 'California'], [28754.33, 118546.05, 172795.67, 'California'], [27892.92, 84710.77, 164470.71, 'Florida'], [23640.93, 96189.63, 148001.11, 'California'], [15505.73, 127382.3, 35534.17, 'New York'], [22177.74, 154806.14, 28334.72, 'California'], [1000.23, 124153.04, 1903.93, 'New York'], [1315.46, 115816.21, 297114.46, 'Florida'], [0.0, 135426.92, 0.0, 'California'], [542.05, 51743.15, 0.0, 'New York'], [0.0, 116983.8, 45173.06, 'California']], dtype=object)
Као што можемо видети у горњем излазу, последња колона садржи категоричке варијабле које нису погодне за директну примену за уклапање модела. Дакле, морамо да кодирамо ову променљиву.
Кодирање лажних променљивих:
како направити низ у Јави
Како имамо једну категоријску променљиву (Стате), која се не може директно применити на модел, тако ћемо је кодирати. Да бисмо кодирали категоријску променљиву у бројеве, користићемо ЛабелЕнцодер класа. Али то није довољно јер још увек има неки релациони поредак, што може створити погрешан модел. Дакле, да бисмо уклонили овај проблем, користићемо ОнеХотЕнцодер , који ће креирати лажне варијабле. Испод је код за то:
#Catgorical data from sklearn.preprocessing import LabelEncoder, OneHotEncoder labelencoder_x= LabelEncoder() x[:, 3]= labelencoder_x.fit_transform(x[:,3]) onehotencoder= OneHotEncoder(categorical_features= [3]) x= onehotencoder.fit_transform(x).toarray()
Овде кодирамо само једну независну променљиву, која је стање пошто су остале варијабле континуиране.
Излаз:
Као што можемо видети у горњем излазу, колона стања је конвертована у лажне варијабле (0 и 1). Овде свака колона лажне променљиве одговара једној држави . Можемо проверити упоређивањем са оригиналним скупом података. Прва колона одговара држава Калифорнија , друга колона одговара Флорида Стате , а трећа колона одговара држава Њујорк .
Белешка:Не би требало да користимо све лажне варијабле у исто време, тако да мора бити 1 мање од укупног броја лажних променљивих, иначе ће створити замку лажне променљиве.
- Сада пишемо једну линију кода само да бисмо избегли замку лажне променљиве:
#avoiding the dummy variable trap: x = x[:, 1:]
Ако не уклонимо прву лажну променљиву, она може да уведе мултиколинеарност у модел.
Као што видимо на горњој излазној слици, прва колона је уклоњена.
- Сада ћемо поделити скуп података на скуп за обуку и тест. Код за ово је дат у наставку:
# Splitting the dataset into training and test set. 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)
Горњи код ће поделити наш скуп података у скуп за обуку и скуп за тестирање.
Излаз: Горњи код ће поделити скуп података на скуп за обуку и скуп за тестирање. Можете проверити излаз кликом на опцију истраживача променљивих дату у Спидер ИДЕ. Сет за тестирање и сет за обуку ће изгледати као на слици испод:
Тест сет:
Сет за обуку:
Белешка:У МЛР-у нећемо радити скалирање карактеристика јер се о томе брине библиотека, тако да не морамо то да радимо ручно.
Корак: 2- Постављање нашег МЛР модела у сет за обуку:
Сада смо добро припремили наш скуп података како бисмо пружили обуку, што значи да ћемо наш модел регресије уклопити у скуп за обуку. Биће слично као што смо урадили у Једноставан модел линеарне регресије. Код за ово ће бити:
#Fitting the MLR model to the training set: from sklearn.linear_model import LinearRegression regressor= LinearRegression() regressor.fit(x_train, y_train)
Излаз:
Out[9]: LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)
Сада смо успешно обучили наш модел користећи скуп података за обуку. У следећем кораку ћемо тестирати перформансе модела користећи скуп података за тестирање.
Корак: 3- Предвиђање резултата тестног скупа:
Последњи корак за наш модел је провера перформанси модела. Урадићемо то предвиђањем резултата тестног скупа. За предвиђање, креираћемо а и_пред вектор. Испод је код за то:
#Predicting the Test set result; y_pred= regressor.predict(x_test)
Извршавањем горњих линија кода, нови вектор ће бити генерисан под опцијом истраживача променљивих. Можемо тестирати наш модел упоређивањем предвиђених вредности и вредности скупа тестова.
Излаз:
У горњем излазу, предвидели смо скуп резултата и скуп тестова. Перформансе модела можемо проверити упоређивањем ове две вредности индекс по индекс. На пример, први индекс има предвиђену вредност од 103015$ профит и тест/стварна вредност од 103282$ профит. Разлика је само у 267 долара , што је добро предвиђање, тако да је, коначно, наш модел овде завршен.
јава свитцх
- Такође можемо да проверимо резултат за скуп података за обуку и скуп података за тестирање. Испод је код за то:
print('Train Score: ', regressor.score(x_train, y_train)) print('Test Score: ', regressor.score(x_test, y_test))
Излаз: Резултат је:
Train Score: 0.9501847627493607 Test Score: 0.9347068473282446
Горњи резултат говори да је наш модел 95% тачан са скупом података за обуку и 93% тачан са скупом података теста.
Белешка:У следећој теми ћемо видети како можемо да побољшамо перформансе модела користећиБацквард Елиминатионпроцес.
Примене вишеструке линеарне регресије:
Постоје углавном две примене вишеструке линеарне регресије:
- Ефикасност независне варијабле на предвиђање:
- Предвиђање утицаја промена: