介紹
交互項納入回歸模型中,以捕獲因變量中兩個或多個自變量的效果。有時,正在調查的不僅僅是控制變量與目標變量之間的簡單關係,在這些時刻,交互項可能會很有幫助。每當一個自變量與因變量之間的關係是在另一個自變量的級別上的條件時,這些也很有用。
當然,這意味著一個預測因子對響應變量的影響取決於另一個預測因子的水平。在此博客中,我們通過模擬方案檢查了交互術語的概念:一次又一次地預測用戶使用過去的行為在電子商務渠道上花費的時間。
學習目標
- 了解相互作用術語如何增強回歸模型的預測能力。
- 學會在回歸分析中創建並納入交互術語。
- 通過一個實際示例分析交互項對模型準確性的影響。
- 可視化和解釋交互術語對預測結果的影響。
- 了解在現實世界中何時以及為什麼應用互動術語的洞察力。
本文作為數據科學博客馬拉鬆的一部分發表。
目錄
- 介紹
- 了解互動術語的基礎知識
- 相互作用術語如何影響回歸係數?
- 模擬方案:電子商務平台上的用戶行為
- 沒有互動項的模型
- 具有相互作用術語的模型
- 比較模型性能
- 結論
- 常見問題
了解互動術語的基礎知識
在現實生活中,我們沒有發現變量可在隔離其他人方面起作用,因此現實生活中的模型比我們在課堂上研究的模型要復雜得多。例如,當用戶將物品添加到購物車中併購買時,最終用戶導航操作(例如將項目添加到購物車中)的影響會有所不同。因此,將交互項添加為變量到回歸模型中,可以確認這些交叉點,因此,在解釋觀察到的數據和/或預測因變量的未來值的模式方面增強了模型的適合度。
數學表示
讓我們考慮一個具有兩個獨立變量x1和x2的線性回歸模型:
y =β0β1x1β2x2 ϵ,
其中y是因變量,β0是截距,β1和β2分別是自變量x1和x2的係數,並且是誤差項。
添加互動術語
要包括X1和X2之間的交互項,我們引入了一個新的變量X1·X2:
y =β0β1x1β2x2β3(x1·x2)ϵ,
其中β3的代表x1和x2之間的相互作用效應。 x1·x2術語兩個自變量的乘積。
相互作用術語如何影響回歸係數?
- β0:截距,代表所有自變量零時y的期望值。
- β1:當x2為零時x1對y的影響。
- β2:當x1為零時x2對y的影響。
- β3:X1對X的影響的變化X2的單位變化,或等效地,X2對Y對X1單位變化的影響的變化。
示例:用戶活動和花費的時間
首先,讓我們創建一個模擬數據集來表示在線商店上的用戶行為。數據包括:
- add_in_cart:指示用戶是否已在其購物車中添加了產品(1添加1,而不添加0)。
- 購買:用戶是否完成了購買(完成為1,或不完成為0)。
- time_spent:用戶在電子商務平台上花費的時間。我們的目標是通過分析用戶是否在購物車中添加產品並完成交易來預測用戶訪問的持續時間。
#導入庫 導入大熊貓作為pd 導入numpy作為NP #生成合成數據 def generate_synthetic_data(n_samples = 2000): np.random.seed(42) add_in_cart = np.random.randint(0,2,n_samples) 購買= np.random.randint(0,2,n_samples) time_spent = 3 2*購買2.5*添加了_in_cart 4*購買*add_in_cart np.random.normal(0,1,n_samples) 返回pd.dataframe({'購買':購買,'add_in_cart':add_in_cart,'time_spent':time_spent}) df = generate_synthetic_data() df.head()
輸出:
模擬方案:電子商務平台上的用戶行為
作為下一步,我們將首先構建一個普通的最小平方回歸模型,並考慮到市場的這些行動,但沒有覆蓋其相互作用的影響。我們的假設如下:(假設1)在網站上所花費的時間分別採取了分別採取的時間。現在,我們將構建第二個模型,其中包括將產品添加到購物車與購買之間存在的交互項。
這將有助於我們分別或在網站上花費的時間組合這些行動的影響。這表明我們要找出在購物車中添加產品並進行購買的用戶是否在網站上花費更多的時間,而不是單獨考慮每個行為時所花費的時間。
沒有互動項的模型
遵循模型的構建,記錄了以下結果:
- 沒有交互項的平均平方誤差(MSE)為2.11,大約為80%(測試R平方)和Time_Spent中差異的82%(列車R-Squared)。這表明time_spent預測平均是2.11平方單元與實際time_spent關閉。儘管可以改善此模型,但它是合理準確的。
- 此外,下圖以圖形方式表明,儘管該模型的性能相當出色。仍然有很大的改進空間,尤其是在捕獲更高的time_spent值方面。
#導入庫 來自sklearn.model_selection導入train_test_split 來自sklearn.linear_model導入linearrecress 來自sklearn.metrics導入均值_squared_error,r2_score 導入statsmodels.api作為sm 來自sklearn.model_selection導入train_test_split 導入matplotlib.pyplot作為PLT #沒有互動術語的模型 x = df [['publated','add_in_cart']] y = df ['time_spent'] x_train,x_test,y_train,y_test = train_test_split(x,y,test_size = 0.3,andural_state = 42) #為攔截添加一個常數 x_train_const = sm.add_constant(x_train) x_test_const = sm.add_constant(x_test) model = sm.ols(y_train,x_train_const).fit() y_pred = model.predict(x_test_const) #計算模型的指標,而無需交互項 train_r2 = model.rsquared test_r2 = r2_score(y_test,y_pred) mse = mean_squared_error(y_test,y_pred) 打印(“沒有互動術語的模型:”) 打印('訓練R平方分數(%):',圓形(Train_r2 * 100,4)) 打印('測試R平方分數(%):',圓形(test_r2 * 100,4)) 打印(“ MSE:”,圓形(MSE,4)) 打印(model.summary()) #繪製實際與預測的功能 def plot_actual_vs_predicted(y_test,y_pred,title): plt.figure(無花果=(8,4)) plt. -scatter(y_test,y_pred,edgeColors =(0,0,0,0)) plt.plot([y_test.min(),y_test.max()],[y_test.min(),y_test.max()],'k--',lw = 2) plt.xlabel('實際') plt.ylabel(“預測”) plt.title(標題) plt.show() #沒有互動術語的情節 plot_actual_vs_predicted(y_test,y_pred,'實際vs預測時間(無互動術語)')
輸出:
具有相互作用術語的模型
- 與交互項的散點圖指示了具有交互項的模型的更好擬合,該散點圖與交互項相互貼合,該術語顯示了更接近實際值的預測值。
- 該模型用交互項解釋了time_spent中的更多差異,如較高的測試R平方值所示(從80.36%到90.46%)。
- 較低的MSE(從2.11到1.02)證明了模型對交互項的預測更為準確。
- 該點與對角線線的距離更緊密,特別是對於更高的時間_spent值,這表明擬合度得到了改善。交互術語有助於表達用戶行動如何共同影響所花費的時間。
#添加互動術語 df ['購買的_ADDED_IN_CART'] = DF ['puperated'] * df ['add_in_cart'] x = df [['購買','add_in_cart','購買的_added_in_cart']]] y = df ['time_spent'] x_train,x_test,y_train,y_test = train_test_split(x,y,test_size = 0.3,andural_state = 42) #為攔截添加一個常數 x_train_const = sm.add_constant(x_train) x_test_const = sm.add_constant(x_test) model_with_interaction = sm.ols(y_train,x_train_const).fit() y_pred_with_interaction = model_with_interaction.predict(x_test_const) #計算具有交互項的模型的指標 train_r2_with_interaction = model_with_interaction.rsquared test_r2_with_interaction = r2_score(y_test,y_pred_with_interaction) mse_with_interaction = mean_squared_error(y_test,y_pred_with_interaction) 打印(“ \ nmodel具有交互術語:”) 打印('訓練R平方分數(%):',圓形(train_r2_with_interaction * 100,4)) 打印('測試R平方分數(%):',圓形(test_r2_with_interaction * 100,4)) 打印(“ MSE:”,圓形(MSE_WITH_INTRACTION,4)) 打印(model_with_interaction.summary()) #帶有互動術語的情節 plot_actual_vs_predicted(y_test,y_pred_with_interaction,'實際vs預測的時間(與互動術語)') #打印比較 打印(“模型的比較:”) 打印(“無互動術語的r平方:”,round(r2_score(y_test,y_pred)*100,4)) print(“帶有交互術語的R平方:”,round(r2_score(y_test,y_pred_with_interaction)*100,4))))) 打印(“沒有互動術語的MSE:”,round(mean_squared_error(y_test,y_pred),4)) 打印(“帶有交互術語的MSE:”,round(mean_squared_error(y_test,y_pred_with_interaction),4))
輸出:
比較模型性能
- 沒有交互項的模型預測由藍點表示。當實際花費的值較高時,這些點就會從對角線分散。
- 相互作用項的模型預測由紅點表示。具有相互作用項的模型會產生更準確的預測。特別是對於更高的實際時間所花費的值,因為這些點更接近對角線線。
#在有和沒有交互項的情況下比較模型 def plot_actual_vs_predication_combined(y_test,y_pred1,y_pred2,title1,title2): plt.figure(無花果=(10,6)) plt. -scatter(y_test,y_pred1,edgecolors ='blue',label = title1,alpha = 0.6) plt. -scatter(y_test,y_pred2,edgecolors ='red',label = title2,alpha = 0.6) plt.plot([y_test.min(),y_test.max()],[y_test.min(),y_test.max()],'k--',lw = 2) plt.xlabel('實際') plt.ylabel(“預測”) plt.title(“實際vs預測用戶花費的時間”) plt.legend() plt.show() plot_actual_vs_predictical_combined(y_test,y_pred,y_pred_with_interaction,'模型無交互項',“具有交互術語的模型”)
輸出:
結論
與交互術語相互作用的模型性能的改進表明,有時在模型中添加交互項可能會增強其重要性。這個示例強調了相互作用項如何捕獲僅從主要效果中明顯看出的其他信息。實際上,考慮回歸模型中的相互作用術語可能會導致更準確和有見地的預測。
在此博客中,我們首先生成了一個合成數據集,以模擬電子商務平台上的用戶行為。然後,我們構建了兩個回歸模型:一個沒有相互作用項,一個具有相互作用項。通過比較它們的性能,我們證明了交互項對模型準確性的重大影響。
在GitHub上查看完整的代碼和資源。
關鍵要點
- 具有相互作用項的回歸模型可以通過捕獲其組合效果來更好地理解兩個或多個變量與目標變量之間的關係。
- 包括交互項可以顯著改善模型性能,這可以通過本指南中較高的R平方值和較低的MSE證明。
- 互動術語不僅是理論概念,還可以應用於現實世界的情況。
常見問題
Q1。回歸分析中的相互作用術語是什麼?答:它們是通過乘以兩個或多個自變量來創建的變量。它們用於捕獲這些變量對因變量的綜合效果。這可以為數據中的關係提供更細微的理解。
Q2。我什麼時候應該考慮在模型中使用互動術語?答:當您懷疑一個自變量對因變量的影響取決於另一個自變量的級別時,應考慮使用它。例如,如果您認為在電子商務平台上花費的時間添加物品的影響取決於用戶是否進行購買。您應該在這些變量之間包括一個交互項。
Q3。如何解釋相互作用術語的係數?答:交互項的係數表示一個獨立變量對另一個自變量中一個單元變化的因變量的效果的變化。例如,在上面的示例中,我們在購買和add_in_cart之間有一個交互項,該係數告訴我們在購買購買時如何將物品添加到購物車的時間更改的效果。
本文所示的媒體不由Analytics Vidhya擁有,並由作者酌情使用。
以上是理解互動術語的指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

用Microsoft Power BI圖來利用數據可視化的功能 在當今數據驅動的世界中,有效地將復雜信息傳達給非技術觀眾至關重要。 數據可視化橋接此差距,轉換原始數據i

專家系統:深入研究AI的決策能力 想像一下,從醫療診斷到財務計劃,都可以訪問任何事情的專家建議。 這就是人工智能專家系統的力量。 這些系統模仿Pro

首先,很明顯,這種情況正在迅速發生。各種公司都在談論AI目前撰寫的代碼的比例,並且這些代碼的比例正在迅速地增加。已經有很多工作流離失所

從數字營銷到社交媒體的所有創意領域,電影業都站在技術十字路口。隨著人工智能開始重塑視覺講故事的各個方面並改變娛樂的景觀

ISRO的免費AI/ML在線課程:通向地理空間技術創新的門戶 印度太空研究組織(ISRO)通過其印度遙感研究所(IIR)為學生和專業人士提供了絕佳的機會

本地搜索算法:綜合指南 規劃大規模活動需要有效的工作量分佈。 當傳統方法失敗時,本地搜索算法提供了強大的解決方案。 本文探討了爬山和模擬

該版本包括三種不同的型號,GPT-4.1,GPT-4.1 MINI和GPT-4.1 NANO,標誌著向大語言模型景觀內的特定任務優化邁進。這些模型並未立即替換諸如

Chip Giant Nvidia週一表示,它將開始製造AI超級計算機(可以處理大量數據並運行複雜算法的機器),完全是在美國首次在美國境內。這一消息是在特朗普總統SI之後發布的


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

SublimeText3 Linux新版
SublimeText3 Linux最新版

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器