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

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

Atom编辑器mac版下载
最流行的的开源编辑器

Dreamweaver CS6
视觉化网页开发工具

Dreamweaver Mac版
视觉化网页开发工具