戰(zhàn)指南:從模型原理到Python實(shí)現(xiàn)與問題排查)
1. 項(xiàng)目概述從“拍腦袋”到“算數(shù)據(jù)”的思維躍遷干了這么多年數(shù)據(jù)分析我見過太多人一上來就想搞點(diǎn)“高大上”的機(jī)器學(xué)習(xí)結(jié)果連最基礎(chǔ)、最實(shí)用、堪稱“萬金油”的多元線性回歸都沒整明白。今天咱們不聊那些花里胡哨的就扎扎實(shí)實(shí)地聊聊這個(gè)在數(shù)學(xué)建模、商業(yè)分析、科研論文里出場(chǎng)率最高的“老伙計(jì)”——多元線性回歸。這玩意兒就像你工具箱里的那把最趁手的螺絲刀看著簡(jiǎn)單但真要用好、用透里頭的門道可不少。所謂多元線性回歸核心就一句話用一個(gè)線性方程來描述多個(gè)自變量X和一個(gè)因變量Y之間的關(guān)系。比如你想預(yù)測(cè)一套房子的售價(jià)Y你手頭有它的面積X1、房齡X2、所在樓層X3、周邊學(xué)校評(píng)分X4等等。這些因素共同影響著最終價(jià)格多元線性回歸就是幫你量化每個(gè)因素具體“貢獻(xiàn)”了多少。它解決的痛點(diǎn)非常直接從“我覺得面積大的房子就貴”這種模糊的直覺升級(jí)到“面積每增加1平米在其他條件不變的情況下房?jī)r(jià)預(yù)計(jì)上漲XXXX元”這種精確的量化判斷。無論你是參加數(shù)模競(jìng)賽的學(xué)生還是需要做市場(chǎng)預(yù)測(cè)的分析師或是寫實(shí)證論文的研究生這都是你必須熟練掌握的第一塊敲門磚。很多人覺得線性回歸太“基礎(chǔ)”而輕視它這是大錯(cuò)特錯(cuò)。它的價(jià)值在于極強(qiáng)的可解釋性和穩(wěn)健性。模型結(jié)果直接告訴你每個(gè)變量的系數(shù)影響方向和大小以及顯著性這個(gè)影響是不是偶然的這比很多黑箱模型輸出的結(jié)果要有說服力得多。接下來我就結(jié)合自己無數(shù)次實(shí)操和帶隊(duì)的經(jīng)驗(yàn)把這套方法的里里外外、坑坑洼洼都給你捋清楚。2. 核心思路與模型本質(zhì)穿透“線性”的迷霧2.1 模型公式與幾何意義多元線性回歸的標(biāo)準(zhǔn)形式是Y β? β?X? β?X? ... β?X? ε別被這一串符號(hào)嚇到我們拆開看Y 我們要預(yù)測(cè)的因變量比如房?jī)r(jià)、銷量、用戶滿意度得分。X?, X?, ..., X? 我們收集的自變量也叫特征或解釋變量就是我們認(rèn)為會(huì)影響Y的那些因素。β? 截距項(xiàng)。可以理解為當(dāng)所有自變量都為0時(shí)Y的“基礎(chǔ)值”。在實(shí)際業(yè)務(wù)中這個(gè)值有時(shí)有物理意義比如固定成本有時(shí)沒有但模型需要它。β?, β?, ..., β? 這就是核心——回歸系數(shù)。β?的含義是在控制其他變量不變的情況下X?每增加1個(gè)單位Y平均變化β?個(gè)單位。這是整個(gè)模型的靈魂所在實(shí)現(xiàn)了“其他條件不變”的因果推斷思維。ε 誤差項(xiàng)。代表模型無法解釋的部分比如一些我們沒收集到的因素、隨機(jī)擾動(dòng)等。我們通常假設(shè)它服從均值為0的正態(tài)分布。從幾何上看如果你只有一個(gè)X擬合的是一條直線二維空間有兩個(gè)X擬合的是一個(gè)平面三維空間有k個(gè)X擬合的就是一個(gè)“超平面”k1維空間。我們的目標(biāo)就是找到那個(gè)能讓所有數(shù)據(jù)點(diǎn)到這個(gè)超平面“垂直距離”即誤差的平方和最小的超平面。這就是著名的“最小二乘法”O(jiān)rdinary Least Squares, OLS的直觀理解。2.2 關(guān)鍵假設(shè)模型生效的前提條件OLS估計(jì)要想得到可靠、無偏的系數(shù)數(shù)據(jù)必須滿足幾個(gè)經(jīng)典假設(shè)。很多新手模型效果不好問題就出在忽略了這些前提檢查線性關(guān)系 Y與每個(gè)X之間確實(shí)存在線性關(guān)系。這是基礎(chǔ)可以用散點(diǎn)圖矩陣初步觀察。獨(dú)立性 各個(gè)觀測(cè)值之間是相互獨(dú)立的。比如時(shí)間序列數(shù)據(jù)通常不滿足這一點(diǎn)因?yàn)榻裉斓匿N量可能受昨天影響。同方差性 誤差項(xiàng)ε的方差應(yīng)該是一個(gè)常數(shù)不會(huì)隨著X的變化而變化。如果方差隨著X增大而增大比如預(yù)測(cè)收入高收入群體的預(yù)測(cè)誤差波動(dòng)更大就叫異方差這會(huì)影響系數(shù)顯著性檢驗(yàn)的準(zhǔn)確性。無多重共線性 自變量之間不能有太強(qiáng)的相關(guān)性。比如你用“房間數(shù)量”和“房屋總面積”一起預(yù)測(cè)房?jī)r(jià)這倆變量本身高度相關(guān)會(huì)導(dǎo)致模型估計(jì)不穩(wěn)定系數(shù)難以解釋可能一個(gè)正一個(gè)負(fù)與現(xiàn)實(shí)不符。通常用方差膨脹因子VIF來診斷。誤差正態(tài)性 誤差項(xiàng)ε應(yīng)服從正態(tài)分布。這個(gè)假設(shè)主要影響回歸系數(shù)的假設(shè)檢驗(yàn)如t檢驗(yàn)、F檢驗(yàn)在小樣本時(shí)的有效性。大樣本情況下中心極限定理對(duì)此要求可適當(dāng)放寬。注意 在實(shí)際應(yīng)用中尤其是商業(yè)數(shù)據(jù)中這些假設(shè)幾乎不可能被完全滿足。我們的目標(biāo)不是追求完美的假設(shè)而是理解當(dāng)假設(shè)被違背時(shí)會(huì)對(duì)模型結(jié)果產(chǎn)生什么影響以及如何診斷和補(bǔ)救。比如異方差出現(xiàn)時(shí)我們可能會(huì)采用穩(wěn)健標(biāo)準(zhǔn)誤存在多重共線性時(shí)可能需要剔除變量或使用嶺回歸等正則化方法。2.3 模型評(píng)估不止看R2模型建好了怎么知道它好不好千萬別只看一個(gè)R2決定系數(shù)R2決定系數(shù) 表示模型能解釋的Y波動(dòng)比例范圍0~1。越高越好但盲目追求高R2會(huì)導(dǎo)致“過擬合”——模型把噪聲也學(xué)進(jìn)去了在新數(shù)據(jù)上表現(xiàn)很差。調(diào)整R2更可靠它考慮了自變量個(gè)數(shù)懲罰了無意義的變量添加。F檢驗(yàn) 檢驗(yàn)整個(gè)模型是否顯著。原假設(shè)是“所有自變量的系數(shù)都為0”。如果P值很小如0.05拒絕原假設(shè)說明至少有一個(gè)自變量是有用的。t檢驗(yàn) 針對(duì)每一個(gè)自變量β?的檢驗(yàn)。原假設(shè)是“該自變量的系數(shù)為0”。P值小說明該變量對(duì)Y有顯著影響。殘差分析 這是檢驗(yàn)?zāi)P图僭O(shè)是否成立的黃金標(biāo)準(zhǔn)。你需要繪制殘差實(shí)際值-預(yù)測(cè)值的散點(diǎn)圖、QQ圖等來檢查獨(dú)立性、同方差性和正態(tài)性。一個(gè)健康的模型應(yīng)該是整體顯著F檢驗(yàn)通過關(guān)鍵變量顯著t檢驗(yàn)通過調(diào)整R2在一個(gè)合理的范圍根據(jù)領(lǐng)域經(jīng)驗(yàn)判斷并且殘差圖沒有明顯的模式隨機(jī)分布。3. 完整實(shí)操流程從數(shù)據(jù)到報(bào)告紙上談兵終覺淺我們一步步走通整個(gè)流程。假設(shè)我們手頭有一個(gè)“汽車油耗預(yù)測(cè)”的數(shù)據(jù)集包含每加侖行駛英里數(shù)mpg我們的Y以及氣缸數(shù)、排量、馬力、車重等變量我們的X。3.1 數(shù)據(jù)準(zhǔn)備與探索性分析這是最耗時(shí)但也最重要的一步?jīng)Q定了模型的上限。第一步導(dǎo)入與清洗import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from statsmodels.stats.outliers_influence import variance_inflation_factor import statsmodels.api as sm # 1. 加載數(shù)據(jù) df pd.read_csv(auto_data.csv) # 2. 查看基本信息 print(df.info()) # 查看數(shù)據(jù)類型、缺失值 print(df.describe()) # 查看統(tǒng)計(jì)摘要 # 3. 處理缺失值示例用中位數(shù)填充 df.fillna(df.median(), inplaceTrue) # 4. 處理異常值示例用3σ原則或箱線圖識(shí)別 numeric_cols df.select_dtypes(include[np.number]).columns for col in numeric_cols: Q1 df[col].quantile(0.25) Q3 df[col].quantile(0.75) IQR Q3 - Q1 lower_bound Q1 - 1.5 * IQR upper_bound Q3 1.5 * IQR # 可以選擇蓋帽法處理而非直接刪除 df[col] np.where(df[col] lower_bound, lower_bound, df[col]) df[col] np.where(df[col] upper_bound, upper_bound, df[col])第二步探索性數(shù)據(jù)分析# 1. 因變量分布 sns.histplot(df[mpg], kdeTrue) plt.title(Distribution of MPG) plt.show() # 如果嚴(yán)重偏態(tài)可能需要對(duì)Y做變換如對(duì)數(shù)變換。 # 2. 自變量與因變量關(guān)系散點(diǎn)圖矩陣 sns.pairplot(df, y_vars[mpg], x_vars[cylinders, displacement, horsepower, weight]) plt.show() # 觀察線性趨勢(shì)和異常點(diǎn)。 # 3. 自變量間相關(guān)性熱力圖 corr_matrix df[numeric_cols].corr() sns.heatmap(corr_matrix, annotTrue, cmapcoolwarm, center0) plt.title(Correlation Matrix) plt.show() # 重點(diǎn)關(guān)注自變量間的高相關(guān)性0.8或-0.8這是多重共線性的預(yù)警。3.2 模型構(gòu)建與變量選擇不是所有變量都該扔進(jìn)模型。變量選擇是藝術(shù)也是科學(xué)。方法一基于統(tǒng)計(jì)檢驗(yàn)的逐步回歸# 使用statsmodels進(jìn)行逐步回歸這里演示后向消除 def backward_elimination(data, target, significance_level0.05): features data.columns.tolist() features.remove(target) while len(features) 0: X sm.add_constant(data[features]) # 添加常數(shù)項(xiàng) model sm.OLS(data[target], X).fit() pvalues model.pvalues[1:] # 排除常數(shù)項(xiàng)的p值 max_pvalue pvalues.max() if max_pvalue significance_level: excluded_feature pvalues.idxmax() features.remove(excluded_feature) print(fRemoved {excluded_feature} with p-value {max_pvalue:.4f}) else: break print(fFinal features: {features}) return features, model final_features, final_model backward_elimination(df[[cylinders, displacement, horsepower, weight, acceleration, mpg]], mpg) print(final_model.summary())后向消除從包含所有變量的模型開始每次移除P值最大的不顯著變量直到所有變量都顯著。方法二基于信息準(zhǔn)則AIC/BICAIC和BIC在衡量模型擬合優(yōu)度的同時(shí)懲罰了模型復(fù)雜度。我們追求AIC/BIC值更小的模型。statsmodels的summary()結(jié)果里直接給出了AIC和BIC。實(shí)操心得 在實(shí)際項(xiàng)目中我通常結(jié)合幾種方法業(yè)務(wù)驅(qū)動(dòng) 首先根據(jù)業(yè)務(wù)知識(shí)保留核心變量哪怕它暫時(shí)不顯著。逐步回歸 作為一個(gè)自動(dòng)化篩選的參考。看AIC/BIC 比較不同變量組合的模型選擇AIC/BIC較小的。最終檢查 確保保留的變量系數(shù)符號(hào)符合業(yè)務(wù)常識(shí)比如車重對(duì)油耗的影響應(yīng)該是負(fù)的并且VIF通常要求小于10嚴(yán)格點(diǎn)小于5。3.3 模型診斷與修正拿到初步模型后必須進(jìn)行嚴(yán)格的診斷。診斷一多重共線性VIF計(jì)算# 計(jì)算VIF X_with_const sm.add_constant(df[final_features]) vif_data pd.DataFrame() vif_data[feature] X_with_const.columns vif_data[VIF] [variance_inflation_factor(X_with_const.values, i) for i in range(X_with_const.shape[1])] print(vif_data)如果某個(gè)變量的VIF大于10說明存在嚴(yán)重的多重共線性需要考慮合并變量如主成分分析PCA或直接剔除。診斷二異方差性殘差圖與統(tǒng)計(jì)檢驗(yàn)# 1. 殘差與擬合值散點(diǎn)圖 fitted_values final_model.fittedvalues residuals final_model.resid plt.scatter(fitted_values, residuals) plt.axhline(y0, colorr, linestyle--) plt.xlabel(Fitted Values) plt.ylabel(Residuals) plt.title(Residuals vs Fitted) plt.show() # 理想情況是點(diǎn)隨機(jī)分布在0線周圍無漏斗狀或曲線模式。 # 2. Breusch-Pagan檢驗(yàn)statsmodels from statsmodels.stats.diagnostic import het_breuschpagan bp_test het_breuschpagan(residuals, X_with_const) labels [LM Statistic, LM-Test p-value, F-Statistic, F-Test p-value] print(dict(zip(labels, bp_test))) # 如果p值很小如0.05則拒絕同方差原假設(shè)存在異方差。如果存在異方差OLS估計(jì)雖仍是無偏的但標(biāo)準(zhǔn)誤估計(jì)不準(zhǔn)導(dǎo)致t檢驗(yàn)和F檢驗(yàn)失效。解決方法之一是使用穩(wěn)健標(biāo)準(zhǔn)誤這在statsmodels中很容易實(shí)現(xiàn)cov_typeHC3。診斷三殘差正態(tài)性QQ圖import scipy.stats as stats stats.probplot(residuals, distnorm, plotplt) plt.title(Q-Q Plot) plt.show() # 點(diǎn)大致分布在45度線上說明正態(tài)性假設(shè)基本滿足。如果嚴(yán)重偏離可以考慮對(duì)Y變量進(jìn)行變換如Box-Cox變換。3.4 模型解釋與報(bào)告撰寫這是向業(yè)務(wù)方或評(píng)委展示價(jià)值的一步。不能只扔出一堆數(shù)字。解讀系數(shù) 假設(shè)最終模型為mpg 40.0 - 0.5 * cylinders - 0.02 * horsepower - 0.006 * weight截距40.0 當(dāng)氣缸數(shù)、馬力、車重都為0時(shí)這無實(shí)際意義mpg的理論值。車重系數(shù)-0.006在氣缸數(shù)和馬力保持不變的情況下車重每增加1磅單位mpg平均減少0.006。更直觀地車重增加1000磅mpg預(yù)計(jì)減少6個(gè)單位。馬力系數(shù)-0.02 控制其他變量后馬力每增加1單位mpg減少0.02。報(bào)告要點(diǎn)模型整體表現(xiàn) 調(diào)整R20.82意味著模型能解釋82%的mpg波動(dòng)。F檢驗(yàn)p值0.001模型整體高度顯著。關(guān)鍵驅(qū)動(dòng)因素 根據(jù)標(biāo)準(zhǔn)化系數(shù)將變量標(biāo)準(zhǔn)化后回歸比較系數(shù)絕對(duì)值大小或系數(shù)顯著性指出最重要的影響因素。例如“車重是影響油耗的最主要因素”。業(yè)務(wù)建議 將統(tǒng)計(jì)結(jié)論轉(zhuǎn)化為業(yè)務(wù)語言。例如“我們的分析表明減輕車輛重量是提升燃油經(jīng)濟(jì)性最有效的工程方向。每減重100公斤預(yù)計(jì)可提升燃油效率約X%。”模型局限性 誠實(shí)說明例如“模型基于歷史數(shù)據(jù)未考慮駕駛習(xí)慣、路況等未觀測(cè)因素?!?“變量‘排量’因與‘馬力’高度共線性被剔除其單獨(dú)影響需進(jìn)一步研究。”4. 高級(jí)話題與常見陷阱4.1 分類變量如何處理數(shù)據(jù)中常有“車型產(chǎn)地”美國(guó)、歐洲、日本、“變速箱類型”手動(dòng)、自動(dòng)這類分類變量。不能直接編碼為1,2,3因?yàn)檫@會(huì)強(qiáng)加一個(gè)順序關(guān)系。正確做法獨(dú)熱編碼將一個(gè)有k個(gè)類別的變量轉(zhuǎn)化為(k-1)個(gè)虛擬變量Dummy Variable。# 使用pandas的get_dummies df_with_dummies pd.get_dummies(df, columns[origin], prefixorigin, drop_firstTrue) # drop_firstTrue 是為了避免完全多重共線性虛擬變量陷阱回歸后origin_Europe的系數(shù)表示相對(duì)于基準(zhǔn)類別此處是origin_America因?yàn)楸籨rop了歐洲產(chǎn)汽車的mpg平均差異是多少。4.2 交互項(xiàng)與多項(xiàng)式項(xiàng)有時(shí)變量間的影響不是獨(dú)立的。比如廣告投入對(duì)銷量的影響可能取決于產(chǎn)品價(jià)格高價(jià)產(chǎn)品廣告效果更好。這時(shí)需要引入交互項(xiàng)。Y β? β?*廣告 β?*價(jià)格 β?*(廣告*價(jià)格) ...如果β?顯著為正說明廣告和價(jià)格存在正向交互效應(yīng)。同樣如果散點(diǎn)圖顯示Y和X是曲線關(guān)系如先增后減可以加入多項(xiàng)式項(xiàng)如X2。Y β? β?*X β?*X2 ...這本質(zhì)上仍是線性回歸因?yàn)閷?duì)參數(shù)β而言是線性的。注意事項(xiàng) 引入交互項(xiàng)或高次項(xiàng)后多重共線性會(huì)急劇升高因?yàn)閄和X2高度相關(guān)。務(wù)必進(jìn)行中心化處理X_centered X - mean(X)后再計(jì)算平方項(xiàng)或交互項(xiàng)這能有效降低共線性。4.3 過擬合與正則化當(dāng)變量太多或模型太復(fù)雜如高階多項(xiàng)式時(shí)模型會(huì)在訓(xùn)練集上表現(xiàn)極好R2很高但在新數(shù)據(jù)測(cè)試集上表現(xiàn)糟糕。這就是過擬合。解決方法增加數(shù)據(jù)量 最有效但往往最難。交叉驗(yàn)證 將數(shù)據(jù)分成訓(xùn)練集和驗(yàn)證集在訓(xùn)練集上訓(xùn)練多個(gè)不同復(fù)雜度的模型在驗(yàn)證集上評(píng)估選擇驗(yàn)證集誤差最小的模型。正則化 在損失函數(shù)中加入對(duì)模型復(fù)雜度的懲罰項(xiàng)。嶺回歸 懲罰項(xiàng)是系數(shù)平方和L2范數(shù)。會(huì)使所有系數(shù)收縮但不會(huì)變?yōu)?。擅長(zhǎng)處理多重共線性。Lasso回歸 懲罰項(xiàng)是系數(shù)絕對(duì)值之和L1范數(shù)。可以將不重要的變量的系數(shù)直接壓縮為0實(shí)現(xiàn)變量選擇。from sklearn.linear_model import LassoCV # 使用交叉驗(yàn)證自動(dòng)選擇最佳的正則化強(qiáng)度alpha lasso_cv LassoCV(cv5, random_state42).fit(X_train, y_train) print(fBest alpha: {lasso_cv.alpha_}) print(fCoefficients: {lasso_cv.coef_}) # 系數(shù)為0的變量即被模型剔除4.4 內(nèi)生性問題這是因果推斷中的核心難題也是很多回歸分析得出錯(cuò)誤結(jié)論的根源。內(nèi)生性指自變量X與誤差項(xiàng)ε相關(guān)導(dǎo)致估計(jì)的系數(shù)β有偏。常見原因遺漏變量偏差 有一個(gè)同時(shí)影響X和Y的重要變量沒被納入模型。例如研究教育年限對(duì)收入的影響如果遺漏“個(gè)人能力”那么教育年限的系數(shù)就包含了“能力”的影響被高估了。測(cè)量誤差 自變量X的測(cè)量存在誤差。雙向因果關(guān)系 X影響YY也影響X。比如公司營(yíng)收增加可能增加研發(fā)投入X-Y同時(shí)研發(fā)成功又提升了營(yíng)收Y-X。應(yīng)對(duì)策略盡可能多地控制相關(guān)變量但無法控制未觀測(cè)變量。使用工具變量法、雙重差分法、斷點(diǎn)回歸等更高級(jí)的計(jì)量經(jīng)濟(jì)學(xué)方法。這超出了基礎(chǔ)多元回歸的范圍但必須要有這個(gè)意識(shí)回歸系數(shù)不等于因果效應(yīng)。5. 實(shí)戰(zhàn)問題排查與技巧實(shí)錄這里記錄幾個(gè)我踩過的坑和總結(jié)的技巧教科書上不一定有。問題1模型整體顯著F檢驗(yàn)p值很小但所有變量單獨(dú)都不顯著t檢驗(yàn)p值很大??赡茉?嚴(yán)重的多重共線性。變量間信息高度重疊模型無法區(qū)分各自貢獻(xiàn)。排查 立即計(jì)算VIF。通常會(huì)發(fā)現(xiàn)VIF值極高10甚至100。解決直接剔除相關(guān)性極高的變量之一。使用主成分回歸PCR或偏最小二乘回歸PLSR提取綜合指標(biāo)。使用嶺回歸Ridge來穩(wěn)定估計(jì)。問題2殘差圖呈現(xiàn)明顯的“漏斗形”或“喇叭形”異方差。可能原因 誤差方差隨著預(yù)測(cè)值的增大而增大。常見于金融、經(jīng)濟(jì)數(shù)據(jù)如預(yù)測(cè)收入高收入群體波動(dòng)大。解決對(duì)因變量Y做變換如取對(duì)數(shù)np.log(Y)。這通常能有效穩(wěn)定方差。使用加權(quán)最小二乘法WLS給方差小的觀測(cè)點(diǎn)更高權(quán)重。最實(shí)用的方法 在匯報(bào)結(jié)果時(shí)直接使用異方差穩(wěn)健標(biāo)準(zhǔn)誤如HC3。在statsmodels中只需在擬合時(shí)指定cov_typeHC3得到的t檢驗(yàn)和p值就是穩(wěn)健的。model_robust sm.OLS(y, X).fit(cov_typeHC3) print(model_robust.summary())問題3有一個(gè)變量的系數(shù)符號(hào)與業(yè)務(wù)常識(shí)相反。例子 預(yù)期“廣告投入”對(duì)“銷量”是正向影響但回歸系數(shù)為負(fù)。排查多重共線性 這是首要懷疑對(duì)象。檢查該變量與其他變量的相關(guān)性??赡芤?yàn)楣簿€性它的效應(yīng)被其他變量“搶走”或扭曲了。遺漏變量偏差 可能遺漏了一個(gè)與“廣告投入”負(fù)相關(guān)但與“銷量”正相關(guān)的變量。例如“經(jīng)濟(jì)衰退期”公司可能增加廣告試圖挽救銷量但整體銷量仍在下降。如果沒控制“經(jīng)濟(jì)周期”廣告的系數(shù)就可能為負(fù)。數(shù)據(jù)范圍或異常值 檢查該變量的數(shù)據(jù)分布和散點(diǎn)圖。問題4樣本量很小但變量很多。風(fēng)險(xiǎn) 極易過擬合模型結(jié)果不可信。經(jīng)驗(yàn)法則 每個(gè)自變量至少需要10-15個(gè)觀測(cè)值。如果只有50個(gè)樣本自變量最好不要超過5個(gè)。解決優(yōu)先使用領(lǐng)域知識(shí)選擇最核心的變量。使用Lasso回歸進(jìn)行變量選擇??紤]使用更簡(jiǎn)單的模型。獨(dú)家技巧標(biāo)準(zhǔn)化回歸系數(shù)比較重要性當(dāng)自變量單位不同如“車重”磅和“發(fā)動(dòng)機(jī)排量”升時(shí)直接比較系數(shù)大小沒意義??梢员容^標(biāo)準(zhǔn)化回歸系數(shù)Beta系數(shù)。from sklearn.preprocessing import StandardScaler scaler StandardScaler() X_scaled scaler.fit_transform(X) # 標(biāo)準(zhǔn)化X均值為0標(biāo)準(zhǔn)差為1 y_scaled (y - y.mean()) / y.std() # 標(biāo)準(zhǔn)化Y model_scaled sm.OLS(y_scaled, sm.add_constant(X_scaled)).fit() # 此時(shí)得到的系數(shù)排除常數(shù)項(xiàng)就是標(biāo)準(zhǔn)化系數(shù)其絕對(duì)值大小可直接比較變量重要性。標(biāo)準(zhǔn)化后“車重”系數(shù)為-0.6“排量”系數(shù)為-0.3就可以說“車重”的影響大約是“排量”的兩倍。最后想說的是多元線性回歸不是一個(gè)“一建了之”的模型。它是一個(gè)完整的分析流程從業(yè)務(wù)問題出發(fā)進(jìn)行數(shù)據(jù)探索、模型構(gòu)建、嚴(yán)格診斷、問題修正最后給出穩(wěn)健、可解釋的結(jié)論。它訓(xùn)練的不是代碼能力而是一種嚴(yán)謹(jǐn)?shù)?、量化的、基于?shù)據(jù)的思維方式。把這個(gè)基礎(chǔ)打牢了后面再接觸任何復(fù)雜的模型你都會(huì)有更扎實(shí)的底氣和更清晰的理解。在實(shí)際項(xiàng)目中一個(gè)解釋清晰、診斷充分的線性回歸模型其價(jià)值往往遠(yuǎn)勝于一個(gè)效果略好但無法解釋的黑箱模型。