You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合理合并物品属性与用户交互DataFrame以用于Decision预测

方案合理性与实现方法

1. 转宽表方案的合理性判断

这种方案有适用场景,并非通用最优解,你可以结合自身情况判断:

适用场景

  • 用户规模较小(通常在千量级以内),不会出现特征维度爆炸的问题
  • 你的预测目标是物品维度的Decision,不同用户对物品的决策可以作为反映物品受欢迎程度、适配人群的有效特征

不适用场景

  • 用户量级过万时,宽表会出现大量空值,特征稀疏度过高,反而会降低模型效果,此时更建议直接对用户交互数据做聚合统计,比如计算物品的决策均值、正负决策占比、交互用户总数等聚合特征,比稀疏宽表效率高很多
  • 你使用的模型对稀疏特征支持度差,也不建议采用该方案,可替换为上述聚合特征或者用户交互嵌入特征

2. 合并操作实现(基于Pandas)

核心思路是先将用户交互表做行转列透视,再按itemId和物品属性表关联,代码示例如下:

import pandas as pd

# 假设物品属性表变量名为item_df,用户交互表变量名为user_item_df
# 第一步:将用户交互表透视转为宽表,列名自动增加_decision后缀
user_decision_wide = user_item_df.pivot(
    index="itemId",
    columns="userId",
    values="Decision"
).add_suffix("_decision").reset_index()

# 第二步:将透视后的宽表和物品属性表按itemId左连接
final_df = pd.merge(
    left=item_df,
    right=user_decision_wide,
    on="itemId",
    how="left"
)

特殊情况处理

如果存在同一个用户对同一个物品有多条Decision记录,直接用pivot会报错,可以改用pivot_table先做聚合,示例如下(以取决策均值为例,也可根据业务替换为aggfunc="last"取最新值、aggfunc=lambda x:x.value_counts().index[0]取众数等):

user_decision_wide = user_item_df.pivot_table(
    index="itemId",
    columns="userId",
    values="Decision",
    aggfunc="mean"
).add_suffix("_decision").reset_index()

内容的提问来源于stack exchange,提问作者futuredataengineer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 15:54:05