理解互动术语的指南
介绍
交互项纳入回归模型中,以捕获因变量中两个或多个自变量的效果。有时,正在调查的不仅仅是控制变量与目标变量之间的简单关系,在这些时刻,交互项可能会很有帮助。每当一个自变量与因变量之间的关系是在另一个自变量的级别上的条件时,这些也很有用。
当然,这意味着一个预测因子对响应变量的影响取决于另一个预测因子的水平。在此博客中,我们通过模拟方案检查了交互术语的概念:一次又一次地预测用户使用过去的行为在电子商务渠道上花费的时间。
学习目标
- 了解相互作用术语如何增强回归模型的预测能力。
- 学会在回归分析中创建并纳入交互术语。
- 通过一个实际示例分析交互项对模型准确性的影响。
- 可视化和解释交互术语对预测结果的影响。
- 了解在现实世界中何时以及为什么应用互动术语的洞察力。
本文作为数据科学博客马拉松的一部分发表。
目录
- 介绍
- 了解互动术语的基础知识
- 相互作用术语如何影响回归系数?
- 模拟方案:电子商务平台上的用户行为
- 没有互动项的模型
- 具有相互作用术语的模型
- 比较模型性能
- 结论
- 常见问题
了解互动术语的基础知识
在现实生活中,我们没有发现变量可在隔离其他人方面起作用,因此现实生活中的模型比我们在课堂上研究的模型要复杂得多。例如,当用户将物品添加到购物车中并购买时,最终用户导航操作(例如将项目添加到购物车中)的影响会有所不同。因此,将交互项添加为变量到回归模型中,可以确认这些交叉点,因此,在解释观察到的数据和/或预测因变量的未来值的模式方面增强了模型的适合度。
数学表示
让我们考虑一个具有两个独立变量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中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

本文回顾了AI最高的艺术生成器,讨论了他们的功能,对创意项目的适用性和价值。它重点介绍了Midjourney是专业人士的最佳价值,并建议使用Dall-E 2进行高质量的可定制艺术。

Meta的Llama 3.2:多模式和移动AI的飞跃 Meta最近公布了Llama 3.2,这是AI的重大进步,具有强大的视觉功能和针对移动设备优化的轻量级文本模型。 以成功为基础

本文比较了诸如Chatgpt,Gemini和Claude之类的顶级AI聊天机器人,重点介绍了其独特功能,自定义选项以及自然语言处理和可靠性的性能。

文章讨论了Grammarly,Jasper,Copy.ai,Writesonic和Rytr等AI最高的写作助手,重点介绍了其独特的内容创建功能。它认为Jasper在SEO优化方面表现出色,而AI工具有助于保持音调的组成

Shopify首席执行官TobiLütke最近的备忘录大胆地宣布AI对每位员工的基本期望是公司内部的重大文化转变。 这不是短暂的趋势。这是整合到P中的新操作范式

嘿,编码忍者!您当天计划哪些与编码有关的任务?在您进一步研究此博客之前,我希望您考虑所有与编码相关的困境,这是将其列出的。 完毕? - 让&#8217

本周的AI景观:进步,道德考虑和监管辩论的旋风。 OpenAI,Google,Meta和Microsoft等主要参与者已经释放了一系列更新,从开创性的新车型到LE的关键转变

本文评论了Google Cloud,Amazon Polly,Microsoft Azure,IBM Watson和Discript等高级AI语音生成器,重点介绍其功能,语音质量和满足不同需求的适用性。
