機器學習100天-Day3多重線性回歸

Day3.jpg

多重線性回歸(multiple linear regression)

多重線性回歸的概念

多重線性回歸是基于觀測數(shù)據(jù),給2個以上特征與結果構建線性模型的等式。構建多重線性回歸模型的步驟與單線性回歸模型類似。其中不同在于評價。你將使用評價去找出哪一個因素對預測結果有更大的影響以及不同變量之間的相關性。
y=b_0+b_1x_1+b_2x_2+...+b_nx_n

假設(對于一個成功的回歸分析,確認以下四點假設十分重要)

  • 線性(linearity):自變量和因變量之間的關系應該是線性的。
  • 同方差性(homoscedasticity):誤差保持不變。這個不是很理解,感覺是要讓誤差恒定?
  • 多元正態(tài)(multivariate normality):多重回歸呈現(xiàn)正態(tài)分布。
  • 缺乏多重共線性:假定在數(shù)據(jù)中有很少或沒有多重共線性。多重共線性在特征/變量之間不是獨立的時候出現(xiàn)。所以說,只有變量之間相互獨立,才不會出現(xiàn)多重共線性,這是理想的?

注意

過多的變量有可能會導致模型變得不準確。尤其是當某些變量對結果沒有任何影響或?qū)ζ渌兞坑酗@著影響的時候。有很多方法去選擇合適的變量。

  • 前向選擇(forward selection)
  • 后向消除(backward elimination)
  • 雙向比較(bi-directional comparision)

虛擬變量(dummy variables)

在第一天的練習中已經(jīng)使用imputer方法去對Yes和No進行虛擬變量轉換。在多重回歸模型中使用分類數(shù)據(jù)是一個很有效的方法,其中包括將非數(shù)字類型的數(shù)據(jù)引入回歸模型中。分類數(shù)據(jù)是指數(shù)據(jù)值代表類別(數(shù)據(jù)值是一個固定的無序的數(shù)值)。例如,性別。在回歸模型中這些數(shù)據(jù)能夠被虛擬變量表達(將男女兩個性別轉為0、1)。感覺這里的分類變量就是量化研究中的名義變量,要使用特定數(shù)值進行表達

虛擬變量陷阱

虛擬變量陷阱是一個方案,在2個以上變量有高相關性時;簡單來說,一個變量能夠被另一個變量預測。沒看懂,我又查了一下知乎依舊沒看懂,應該是由于虛擬變量引入時個數(shù)的原因,與前面多重共線性相關,https://zhuanlan.zhihu.com/p/26640957
解決虛擬變量陷阱的方法是丟掉一個分類變量,如果模型中有m個分類變量,在模型里只使用m-1個,漏掉的那個變量可以認為是引用值。

第一步:數(shù)據(jù)預處理

  • 引入庫
  • 引入數(shù)據(jù)集
import numpy as np
import pandas as pd
data=pd.read_excel(r'.\50_Startups.xlsx')
#通過iloc獲取數(shù)據(jù)的所有值
X=data.iloc[:,:-1].values
Y=data.iloc[:,4].values
data.head()
  • 檢查丟失數(shù)據(jù)
  • 分類變量編碼
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder=LabelEncoder()
print(X[:,3])
#使用LabelEncoder對標簽數(shù)值進行標準化
X[:,3]=labelencoder.fit_transform(X[:,3])
print(X[:,3])
#對標簽進行獨熱碼處理
onehotencoder=OneHotEncoder(categorical_features=[3])
X=onehotencoder.fit_transform(X).toarray()
print(X)
#防止虛擬變量陷阱,從第二個開始取
X=X[:,1:]
  • 劃分訓練集和測試集
from sklearn.cross_validation import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2, random_state = 0)

第二步:用訓練集擬合模型

這一步與單線性回歸類似
使用LinearRegression中的regressor,使用fit()方法。

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

第三步:預測測試結果

在這里預測觀測數(shù)據(jù)。輸出值為Y_pred。

y_pred=regressor.predict(X_test)

翻譯的好累啊,兩個概念不是很懂,多重線性和虛擬變量陷阱,不過工程的話照做就是了。
本次練習的鏈接https://github.com/jwc19890114/-02-learning-file-100days/blob/master/03.ipynb
數(shù)據(jù)集為50_Startups.xlsx

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 之前的文章已經(jīng)講述了簡單線性回歸的概念和代碼實現(xiàn),現(xiàn)在來繼續(xù)看看多元線性回歸。所謂多元線性回歸其實就是自變量的個數(shù)...
    Carey_Wu閱讀 1,618評論 0 4
  • https://developers.google.com/machine-learning/crash-cour...
    iOSDevLog閱讀 2,912評論 1 11
  • 在學習了「簡單線性回歸」之后,我們進一步學習應用更為廣泛的多元線性回歸,并使用 Python 代碼來實現(xiàn)它。 一、...
    EvanNightly閱讀 5,712評論 0 4
  • 機器學習術語表 本術語表中列出了一般的機器學習術語和 TensorFlow 專用術語的定義。 A A/B 測試 (...
    yalesaleng閱讀 2,146評論 0 11
  • 文/羅漢 國慶假期結束了,元旦近了,春節(jié)不遠了,眼看這2022就要悄悄的溜走了。這一年里,疫情反反復復,不...
    紅塵羅漢閱讀 939評論 0 1

友情鏈接更多精彩內(nèi)容