計劃在國慶期間推出一些挖掘算法,是不是心血來潮?絕對不是。應一小粉絲私信提出小要求,推一些挖掘算法的文章。只是寫博文真的巨費時間,所以我會按自己的理解把算法的框架推出來,其中的一些細節推導我會在後期抽時間補充。
1 知識框架
2 知識詳解
2.1基本假定
多元線性迴歸算法在商業環境中比較喫香,就在於它的可解釋性強。它的一般形式:
其中 是模型的參數,是誤差項。當然,可解釋能力強,也使得該算法的假定條件較其他算法更苛刻:
2.2違背基本假定的情況
在處理實際的業務問題中,這些基本假定是很不友好的。需要數據分析師用特定的技術對實際業務數據進行轉換,使得實際業務場景儘可能的逼近多元線性迴歸的基本假定。
2.2.1異方差
現實業務問題錯綜複雜,很多原因都會導致異方差,這是不可避免的。異方差會帶來什麼影響呢?怎樣檢查異方差呢?怎樣解決異方差問題呢?
它會使得模型的最小二乘估計失效:(1)參數估計無偏,但不是最小線性無偏;(2)參數的顯著性檢驗失效;(3)迴歸方差的泛化能力極差。
對異方差檢驗多用殘差圖分析法、等級相關係數法。迴歸模型滿足基本假定時,殘差圖的分佈是隨機的、沒有任何規律的,如果有異方差性,會出現一定的趨勢或規律。等級相關係數法也叫斯皮爾曼(spearman)檢驗,它通常有三個步驟:
解決異方差問題的方法通常有加權最小二乘法、BOX-COX變換法、方差穩定性變換法。加權最小二乘法是常用的也最容易理解的方法之一。
2.2.2 X強相關
在多元線性迴歸中,對變量的理想關係是每個解釋變量都與因變量相關且每個解釋變量間無關。解釋變量間的相關性問題也就是多重共線性問題,者是無可避免的,後文會專門解釋。
2.2.3 誤差項自相關
遺漏關鍵變量、滯後的經濟變量、錯誤的迴歸函數形式、蛛網現象、數據加工等都會產生自相關問題。自相關問題使得:(1)參數估計值不再具有最小方差線性無偏;(2)均方誤差(MSE)嚴重低估誤差項誤差;(3)得到錯誤的顯著性檢驗結果;(4)極其不穩定;(5)沒處理此問題,最終的模型預測、結構會帶來極大的誤差和錯誤的解釋。
自相關問題的檢驗通常有自相關圖、自相關係數法、DW檢驗。處理該問題多有迭代法、差分法。
2.2.4 異常值與強影響點
判定是否爲異常值,3倍標準差原則、刪除學生化誤差、槓桿值、庫克距離等。庫克距離公式:
其中,爲槓桿值,認爲是非異常值,認爲是異常值。產生異常值的原因不同,處理的方法也不同。
2.3迴歸模型
在使用多元線性迴歸進行建模時,主要有全變量建模、選變量建模。對解釋變量的重要性不清楚的時候,一般會做全變量模型,再根據模型的評估結果對變量進行篩選,得到最優的選變量模型。
2.4 擬合優度
擬合優度用於反映模型對因變量的估計程度。指標有調整的多重判定係數:
實際意義表明,在因變量的變化中能被解釋變量所解釋的比例爲。選擇,是因爲未調整的多重判定係數會因爲自變量的增加,使得預測誤差變小,從而使得偏大,得到錯誤的評估結果。
2.5顯著性檢驗
總體顯著性檢驗
迴歸係數著性檢驗
2.6多重共線性
解釋變量間完全不相關的假設是非常少見的,尤其是在商業環境中。鑑於問題本身的複雜性,涉及的因素衆多,在建立模型時很難找到一組互不相關的解釋變量來解釋因變量。就無法避免面臨解釋變量建度相關性影響,當解釋變量間的相關性很高時,我們說這是多重共線性問題。
多重共線性的存在,使得模型對的結果混亂,信息高度重疊,不好解釋,還會影響參數估計值的符號,會增加不必要的計算量等等。對多重共線性的檢驗方法 衆多。當有下列幾種情況時,會認爲存在嚴重的多重共線性:
(1)模型的各對解釋變量間顯著相關;
(2)當模型的線性關係檢驗顯著時<F檢驗>,幾乎所有的迴歸係數t檢驗不通過;
(3)迴歸的±號與預期相反;
(4)容忍度與方差膨脹因子.
其中,容忍度越小,方差膨脹因子越大(>10),認爲存在嚴重多重共線性。
對於多重共線性的處理,方法有很多。多重共線性的源頭在於解釋變量間的強相關性,只要能解出變量間的強相關性,就算作時對多重共線性問題的處理。通常有保留強相關的幾個變量中的一個、逐步迴歸、嶺迴歸、主成分法、特徵根法、偏最小二乘法等。
2.6模型的評估
多元線性迴歸的模型評估指標有均方誤差()、調整多重判別係數(),當然也可以引入混淆矩陣。
2.6模型的應用
通過評估後的模型可以初步上線投入使用,將實際業務的數據加工成模型的可識別輸入格式即可。在模型的具體應用中,可能會出現新的問題,這就要求數據分析師要定期對模型進行評估和重建、調休,保證模型功效。
3 在R|Python 中的實現
多元線性迴歸在R和Python 中都有專門的包來實現。R中的實現可以借鑑我之前的文章《【R】基於Logistic迴歸的初始信用評級》,該文的Logistic迴歸起源於多元線性迴歸。Python中的實現可通過下面鏈接查看。
Python 線性迴歸 |
---|
https://nbviewer.jupyter.org/github/lda188/my-data/blob/master/%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92%E4%B8%8A.ipynb |