多重共線性:python中利用statsmodels計算VIF和相關(guān)系數(shù)消除共線性

多重共線性在python中的解決方法
本文將討論多重共線性的相關(guān)概念及利用python自動化消除多重共線性的方法,以供參考,歡迎拍磚
線性模型與非線性模型
關(guān)于線性模型與非線性模型的定義,似乎并沒有確切的定論,但是個人認(rèn)為建模首先得清楚地認(rèn)識樣本,樣本有線性可分與線性不可分兩種,所謂是否線性可分,是指是否存在一條直線(或平面)將樣本分開。
上圖中y=0和y=1的樣本可以由一條直線分開,如邏輯回歸模型最佳的應(yīng)用樣本即為上圖樣本(線性可分);如果樣本是線性不可分,決策樹等模型可以更有效地將樣本分開,此時選擇邏輯回歸分類結(jié)果可能較差。
在這里插入圖片描述
如上圖中的樣本,使用邏輯回歸可能取得較差的分類效果。但是如果將特征映射到更高維空間,在這里插入圖片描述
上式在二維直角坐標(biāo)系中表現(xiàn)為圓,就可以將圖中樣本分開。
因此總結(jié)來說
??? 選擇何種模型取決于數(shù)據(jù)本身,線性可分?jǐn)?shù)據(jù)使用邏輯回歸等可以線性分開數(shù)據(jù)的線性模型可以取得更好的分類效果;線性不可分?jǐn)?shù)據(jù)則不適合。
??? 傳統(tǒng)的線性模型可以通過將特征映射到高維空間中達(dá)到線性分開數(shù)據(jù)的目的,如SVM采用核技巧,邏輯回歸加入原始特征的高維轉(zhuǎn)換等。
多重共線性對線性回歸和邏輯回歸的影響
多重共線性是指在變量空間中,存在自變量可以近似地等于其他自變量的線性組合:
Y 約等于 W1X1 + W2X2 + … + Wn*Xn
此時如果將所有自變量用于線性回歸或邏輯回歸的建模,將導(dǎo)致模型系數(shù)不能準(zhǔn)確表達(dá)自變量對Y的影響。比如:如果X1和X2近似相等,則模型Y = X1 + X2 可能被擬合成Y = 3 X1 - X2,原來 X2 與 Y 正向相關(guān)被錯誤擬合成負(fù)相關(guān),導(dǎo)致模型沒法在業(yè)務(wù)上得到解釋。在評分卡建模中,可能將很多相關(guān)性很高的變量加入到建模自變量中,最終得到的模型如果用變量系數(shù)去解釋自變量與目標(biāo)變量的關(guān)系是不合適的。
VIF 和相關(guān)系數(shù)
相關(guān)矩陣是指由樣本的相關(guān)系數(shù)組成的矩陣,自變量相關(guān)系數(shù)過大意味著存在共線性,同時會導(dǎo)致信息冗余,維度增加。設(shè)置相關(guān)系數(shù)的閾值,當(dāng)大于threshold時,刪除IV值較小的變量(IV值的定義及計算后文解釋)。
VIF(variance inflation factors)VIF =1/(1-R^2) 式中,R^2是以xj為因變量時對其它自變量回歸的復(fù)測定系數(shù)。VIF越大,該變量與其他的變量的關(guān)系越高,多重共線性越嚴(yán)重。如果所有變量最大的VIF超過10,刪除最大VIF的變量。
解決方案(利用statsmodels.stats)
利用相關(guān)系數(shù)刪除相關(guān)性過高的變量(df中變量先得按IV值從大到小排序)
利用VIF刪除導(dǎo)致高共線性的變量
轉(zhuǎn)載https://blog.csdn.net/ab1112221212/article/details/100133066

QQ學(xué)習(xí)群:1026993837 領(lǐng)學(xué)習(xí)資料? ? ? ?
在公眾號「python風(fēng)控模型」里回復(fù)關(guān)鍵字:學(xué)習(xí)資料?
