線性回歸是一種強(qiáng)大的統(tǒng)計(jì)工具,用于對(duì)因變量和一個(gè)或多個(gè)自變量(特征)之間的關(guān)系進(jìn)行建模。回歸分析中一個(gè)重要且經(jīng)常被遺忘的概念是交互作用項(xiàng)。簡(jiǎn)而言之,交互術(shù)語(yǔ)使您能夠檢查目標(biāo)和自變量之間的關(guān)系是否會(huì)根據(jù)另一個(gè)自變量的值而變化。
交互術(shù)語(yǔ)是回歸分析的一個(gè)關(guān)鍵組成部分,了解它們的工作原理可以幫助從業(yè)者更好地訓(xùn)練模型和解釋數(shù)據(jù)。然而,盡管交互術(shù)語(yǔ)很重要,但它們可能很難理解。
這篇文章提供了線性回歸背景下交互作用術(shù)語(yǔ)的直觀解釋。
回歸模型中的交互項(xiàng)是什么?
首先,這是一個(gè)更簡(jiǎn)單的案例;也就是說(shuō),一個(gè)沒(méi)有相互作用項(xiàng)的線性模型。這樣的模型假設(shè)每個(gè)特征或預(yù)測(cè)器對(duì)因變量(目標(biāo))的影響?yīng)毩⒂谀P椭械钠渌A(yù)測(cè)器。
以下等式描述了具有兩個(gè)特征的此類(lèi)模型規(guī)范:
為了使解釋更容易理解,這里有一個(gè)例子。想象一下,你對(duì)房地產(chǎn)價(jià)格建模感興趣 (y) 使用兩個(gè)功能:它們的大小 (X1 個(gè)) 以及指示公寓是否位于市中心的布爾標(biāo)志 (2 個(gè)) .是截距,和是線性模型的系數(shù),以及是誤差項(xiàng)(模型無(wú)法解釋?zhuān)?/p>
在收集數(shù)據(jù)并估計(jì)線性回歸模型后,可以獲得以下系數(shù):
知道估計(jì)的系數(shù)和2 個(gè)是一個(gè)布爾功能,您可以根據(jù)的值寫(xiě)出兩種可能的情況2 個(gè).
市中心
市中心外
如何解讀這些?雖然這在房地產(chǎn)領(lǐng)域可能沒(méi)有多大意義,但你可以說(shuō),市中心一套 0 平方米的公寓的價(jià)格是 310 (截距的價(jià)值)。每增加一平方米的空間,價(jià)格就會(huì)上漲 20 。在另一種情況下,唯一的區(qū)別是截距小于 10 個(gè)單位。圖 1 顯示了兩條最佳擬合線。
圖 1 。市中心和城外房產(chǎn)的回歸線
正如你所看到的,這些線是平行的,它們有相同的斜率 — 系數(shù)由X1 個(gè),這在兩種情況下都是一樣的。
交互作用術(shù)語(yǔ)表示聯(lián)合效應(yīng)
在這一點(diǎn)上,你可能會(huì)爭(zhēng)辯說(shuō),在市中心的公寓里多住一平方米比在郊區(qū)的公寓里多花一平方米要貴。換句話說(shuō),這兩個(gè)特征可能會(huì)對(duì)房地產(chǎn)價(jià)格產(chǎn)生共同影響。
所以,你認(rèn)為不僅兩種情況下的截距應(yīng)該不同,而且直線的斜率也應(yīng)該不同。如何做到這一點(diǎn)?這正是互動(dòng)術(shù)語(yǔ)發(fā)揮作用的時(shí)候。它們使模型的規(guī)范更加靈活,并使您能夠考慮到這些模式。
交互項(xiàng)實(shí)際上是你認(rèn)為對(duì)目標(biāo)有共同影響的兩個(gè)特征的乘積。以下等式表示模型的新規(guī)范:
再次假設(shè)你已經(jīng)估計(jì)了你的模型,并且你知道系數(shù)。為了簡(jiǎn)單起見(jiàn),我保留了與前面示例中相同的值。請(qǐng)記住,在現(xiàn)實(shí)生活中,它們可能會(huì)有所不同。
市中心
市中心外
在你寫(xiě)出兩個(gè)場(chǎng)景之后2 個(gè)(市中心或市中心外),您可以立即看到坡度(系數(shù)X1 個(gè)) 兩條線中的一條不同。正如假設(shè)的那樣,現(xiàn)在市中心增加一平方米的空間比郊區(qū)更貴。
用交互項(xiàng)解釋系數(shù)
向模型中添加交互項(xiàng)會(huì)改變對(duì)所有系數(shù)的解釋。如果沒(méi)有交互項(xiàng),則可以將系數(shù)解釋為預(yù)測(cè)器對(duì)因變量的獨(dú)特影響。
所以在這種情況下,你可以這么說(shuō)是公寓大小對(duì)價(jià)格的獨(dú)特影響。然而,對(duì)于交互項(xiàng),公寓大小對(duì)不同值的影響是不同的2 個(gè)換句話說(shuō),公寓規(guī)模對(duì)價(jià)格的獨(dú)特影響不再局限于.
為了更好地理解每個(gè)系數(shù)代表什么,這里再看一看具有交互項(xiàng)的線性模型的原始規(guī)范。作為提醒,2 個(gè)是一個(gè)布爾特征,指示特定公寓是否位于市中心。
現(xiàn)在,您可以通過(guò)以下方式解釋每個(gè)系數(shù):
: 攔截市中心以外的公寓(或布爾特征為零值的任何組2 個(gè)) .
: 市中心以外公寓的坡度(價(jià)格的影響)。
: 兩組之間的截距差異。
: 市中心和城外公寓之間的坡度差異。
例如,假設(shè)你正在測(cè)試一個(gè)假設(shè),即無(wú)論公寓是否在市中心,公寓的大小對(duì)價(jià)格的影響都是相等的。然后,您將使用交互項(xiàng)來(lái)估計(jì)線性回歸,并檢查與 0 顯著不同。
關(guān)于交互術(shù)語(yǔ)的一些附加注釋?zhuān)?/p>
我提出了雙向交互術(shù)語(yǔ);然而,高階相互作用(例如,三個(gè)特征的相互作用)也是可能的。
在這個(gè)例子中,我展示了一個(gè)數(shù)字特征(公寓的大?。┡c布爾特征(公寓在市中心嗎?)的交互。但是,您也可以為兩個(gè)數(shù)字特征創(chuàng)建交互項(xiàng)。例如,您可以創(chuàng)建一個(gè)公寓大小與房間數(shù)量的交互項(xiàng)。有關(guān)詳細(xì)信息,請(qǐng)參閱相關(guān)資源部分。
這種情況下,相互作用項(xiàng)可能具有統(tǒng)計(jì)學(xué)意義,但主要影響并不顯著。然后,你應(yīng)該遵循分層原則,即如果你在模型中包括一個(gè)交互項(xiàng),你也應(yīng)該包括主要影響,即使它們的影響在統(tǒng)計(jì)上并不顯著。
Python 中的實(shí)際操作示例
在所有的理論介紹之后,下面是如何在 Python 中為線性回歸模型添加交互項(xiàng)。一如既往,首先導(dǎo)入所需的庫(kù)。
import numpy as np import pandas as pd import statsmodels.api as sm import statsmodels.formula.api as smf # plotting import seaborn as sns import matplotlib.pyplot as plt # settings plt.style.use("seaborn-v0_8") sns.set_palette("colorblind") plt.rcParams["figure.figsize"] = (16, 8) %config InlineBackend.figure_format = 'retina'
在本例中,您使用statsmodels圖書(shū)館對(duì)于數(shù)據(jù)集,使用mtcars數(shù)據(jù)集。我敢肯定,如果你曾經(jīng)使用過(guò) R ,你就會(huì)對(duì)這個(gè)數(shù)據(jù)集很熟悉。
首先,加載數(shù)據(jù)集:
mtcars = sm.datasets.get_rdataset("mtcars", "datasets", cache=True) print(mtcars.__doc__)
執(zhí)行代碼示例將打印數(shù)據(jù)集的全面描述。在這篇文章中,我只展示了相關(guān)部分 — 列的總體描述和定義:
====== =============== mtcars R Documentation ====== ===============
數(shù)據(jù)摘自 1974 年的美國(guó)雜志MotorTrend,由 32 輛汽車(chē)( 1973-74 車(chē)型)的油耗和汽車(chē)設(shè)計(jì)和性能的 10 個(gè)方面組成。
這是一個(gè) DataFrame ,它對(duì) 11 個(gè)(數(shù)字)變量進(jìn)行了 32 次觀測(cè):
===== ==== ======================================== [, 1] mpg Miles/(US) gallon [, 2] cyl Number of cylinders [, 3] disp Displacement (cu.in.) [, 4] hp Gross horsepower [, 5] drat Rear axle ratio [, 6] wt Weight (1000 lbs) [, 7] qsec 1/4 mile time [, 8] vs Engine (0 = V-shaped, 1 = straight) [, 9] am Transmission (0 = automatic, 1 = manual) [,10] gear Number of forward gears [,11] carb Number of carburetors ===== ==== ========================================
然后,從加載的對(duì)象中提取實(shí)際數(shù)據(jù)集:
df = mtcars.data df.head()
英里/加侖 | 氣缸 | 顯示 | 馬力 | 德拉特 | 重量 | 質(zhì)量安全委員會(huì) | 對(duì) | 是 | 排擋 | 碳水化合物 | |
馬自達(dá) RX4 | 21 | 6 | 160 | 110 | 3 . 90 | 2 . 620 | 16 . 46 | 0 | 1 | 4 | 4 |
馬自達(dá) RX4 Wag | 21 | 6 | 160 | 110 | 3 . 90 | 2 . 875 | 17 . 02 | 0 | 1 | 4 | 4 |
達(dá)特桑 710 | 22 . 8 | 4 | 108 | 93 | 3 . 85 | 2 . 320 | 18 . 61 | 1 | 1 | 4 | 1 |
大黃蜂 4 號(hào)驅(qū)動(dòng)器 | 21 . 4 | 6 | 258 | 110 | 3 . 08 | 3 . 215 | 19 . 44 | 1 | 0 | 3 | 1 |
大黃蜂運(yùn)動(dòng)型 | 18 . 7 | 8 | 360 | 175 | 3 . 15 | 3 . 440 | 17 . 02 | 0 | 0 | 3 | 2 |
表 1 。的預(yù)覽動(dòng)車(chē)組數(shù)據(jù)集
對(duì)于這個(gè)例子,假設(shè)你想調(diào)查每加侖英里數(shù)之間的關(guān)系 (mpg) 和兩個(gè)特征:重量 (wt,連續(xù))和變速器類(lèi)型 (am,布爾值)。
首先,繪制數(shù)據(jù)以獲得一些初步見(jiàn)解:
sns.lmplot(x="wt", y="mpg", hue="am", data=df, fit_reg=False) plt.ylabel("Miles per Gallon") plt.xlabel("Vehicle Weight");
圖 2 :每加侖英里數(shù)與車(chē)輛重量、每種變速器類(lèi)型顏色的散點(diǎn)圖
通過(guò)觀察圖 2 ,您可以看到 am 變量的兩個(gè)類(lèi)別的回歸線將大不相同。為了進(jìn)行比較,從一個(gè)沒(méi)有交互項(xiàng)的模型開(kāi)始。
model_1 = smf.ols(formula="mpg ~ wt + am", data=df).fit() model_1.summary()
下表顯示了在沒(méi)有交互項(xiàng)的情況下擬合線性回歸的結(jié)果。
OLS Regression Results ============================================================================== Dep. Variable: mpg R-squared: 0.753 Model: OLS Adj. R-squared: 0.736 Method: Least Squares F-statistic: 44.17 Date: Sat, 22 Apr 2023 Prob (F-statistic): 1.58e-09 Time: 23:15:11 Log-Likelihood: -80.015 No. Observations: 32 AIC: 166.0 Df Residuals: 29 BIC: 170.4 Df Model: 2 Covariance Type: nonrobust ============================================================================== coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------ Intercept 37.3216 3.055 12.218 0.000 31.074 43.569 wt -5.3528 0.788 -6.791 0.000 -6.965 -3.741 am -0.0236 1.546 -0.015 0.988 -3.185 3.138 ============================================================================== Omnibus: 3.009 Durbin-Watson: 1.252 Prob(Omnibus): 0.222 Jarque-Bera (JB): 2.413 Skew: 0.670 Prob(JB): 0.299 Kurtosis: 2.881 Cond. No. 21.7 ==============================================================================
從匯總表中可以看出, am 特征的系數(shù)在統(tǒng)計(jì)上并不顯著。使用您已經(jīng)學(xué)習(xí)的系數(shù)的解釋?zhuān)梢詾?am 特征的兩類(lèi)繪制最佳擬合線。
X = np.linspace(1, 6, num=20) sns.lmplot(x="wt", y="mpg", hue="am", data=df, fit_reg=False) plt.title("Best fit lines for from the model without interactions") plt.ylabel("Miles per Gallon") plt.xlabel("Vehicle Weight") plt.plot(X, 37.3216 - 5.3528 * X, "blue") plt.plot(X, (37.3216 - 0.0236) - 5.3528 * X, "orange");
圖 3 。兩種變速器的最佳匹配線路
圖 3 顯示了線條幾乎重疊,因?yàn)?am 特征的系數(shù)基本為零。
接下來(lái)是第二個(gè)模型,這一次是兩個(gè)功能之間的交互項(xiàng)。以下是如何在statsmodels公式
model_2 = smf.ols(formula="mpg ~ wt + am + wt:am", data=df).fit() model_2.summary()
以下匯總表顯示了用交互項(xiàng)擬合線性回歸的結(jié)果。
OLS Regression Results ============================================================================== Dep. Variable: mpg R-squared: 0.833 Model: OLS Adj. R-squared: 0.815 Method: Least Squares F-statistic: 46.57 Date: Mon, 24 Apr 2023 Prob (F-statistic): 5.21e-11 Time: 21:45:40 Log-Likelihood: -73.738 No. Observations: 32 AIC: 155.5 Df Residuals: 28 BIC: 161.3 Df Model: 3 Covariance Type: nonrobust =============================================================================== coef std err t P>|t| [0.025 0.975] ------------------------------------------------------------------------------ Intercept 31.4161 3.020 10.402 0.000 25.230 37.602 wt -3.7859 0.786 -4.819 0.000 -5.395 -2.177 am 14.8784 4.264 3.489 0.002 6.144 23.613 wt:am -5.2984 1.445 -3.667 0.001 -8.258 -2.339 ============================================================================== Omnibus: 3.839 Durbin-Watson: 1.793 Prob(Omnibus): 0.147 Jarque-Bera (JB): 3.088 Skew: 0.761 Prob(JB): 0.213 Kurtosis: 2.963 Cond. No. 40.1 ==============================================================================
以下是您可以從具有交互項(xiàng)的匯總表中快速得出的兩個(gè)結(jié)論:
所有的系數(shù),包括相互作用項(xiàng),都具有統(tǒng)計(jì)學(xué)意義。
通過(guò)檢查 R2 (及其調(diào)整后的變體,因?yàn)槟P椭杏胁煌瑪?shù)量的功能),您可以聲明具有交互項(xiàng)的模型會(huì)產(chǎn)生更好的擬合。
與前面的情況類(lèi)似,繪制最佳擬合線:
X = np.linspace(1, 6, num=20) sns.lmplot(x="wt", y="mpg", hue="am", data=df, fit_reg=False) plt.title("Best fit lines for from the model with interactions") plt.ylabel("Miles per Gallon") plt.xlabel("Vehicle Weight") plt.plot(X, 31.4161 - 3.7859 * X, "blue") plt.plot(X, (31.4161 + 14.8784) + (-3.7859 - 5.2984) * X, "orange");
圖 4 。兩種類(lèi)型變速器的最佳匹配線路,包括相互作用項(xiàng)
在圖 4 中,您可以立即看到配備自動(dòng)變速器和手動(dòng)變速器的汽車(chē)在截距和坡度方面的擬合線差異。
這里有一個(gè)好處:您還可以使用添加交互術(shù)語(yǔ)scikit-learn的PolynomialFeaturestransformer 不僅提供了添加任意階的交互項(xiàng)的可能性,而且還創(chuàng)建了多項(xiàng)式特征(例如,可用特征的平方值)。有關(guān)詳細(xì)信息,請(qǐng)參閱sklearn.preprocessing.PolynomialFeatures.
結(jié)束語(yǔ)
在處理線性回歸中的交互項(xiàng)時(shí),需要記住以下幾點(diǎn):
交互術(shù)語(yǔ)使您能夠檢查目標(biāo)和功能之間的關(guān)系是否會(huì)根據(jù)另一個(gè)功能的值而變化。
添加交互項(xiàng)作為原始特征的乘積。通過(guò)將這些新變量添加到回歸模型中,可以測(cè)量它們與目標(biāo)之間相互作用的效果。仔細(xì)解釋相互作用項(xiàng)的系數(shù)對(duì)于理解關(guān)系的方向和強(qiáng)度至關(guān)重要。
通過(guò)使用交互項(xiàng),可以使線性模型的規(guī)范更加靈活(不同線的斜率不同),從而更好地?cái)M合數(shù)據(jù)并具有更好的預(yù)測(cè)性能。
-
NVIDIA
+關(guān)注
關(guān)注
14文章
4855瀏覽量
102711 -
人工智能
+關(guān)注
關(guān)注
1789文章
46663瀏覽量
237102
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論