速卖通2019跨境电商数据集和待成熟国家用户推荐算法

摘要:

合集:AI案例-NLP-零售业
赛题:安泰杯-跨境电商智能算法大赛
主页:https://tianchi.aliyun.com/competition/entrance/231718/introduction
主办方:上海交通大学安泰经济与管理学院、阿里云智能天池平台、AliExpress
AI问题:语义相似度识别
数据集:速卖通2019跨境电商历史用户和交易数据集
数据集价值:利用已成熟国家的稠密用户数据和待成熟国家的稀疏用户数据,训练出对于待成熟国家用户的正确模型,支持更好地服务待成熟国家用户。
解决方案:用户特征提取工程

一、赛题描述

背景

在我们开拓海外市场时往往会遭遇到用户习惯与国内不同造成国内的优秀策略难以在海外奏效等问题。即使成功开拓了某一国的市场,当需要进一步向更多国家扩张时,也会遇到不同国家的用户心智不统一的问题。

AliExpress是中国最大出口B2C电商平台,2010 年平台成立至今已过 8 年,高速发展,日趋成熟。我们覆盖全球 230 个国家和地区,支持世界 18 种语言站点,22 个行业囊括日常消费类目,商品备受海外消费者欢迎;海外装机量超过 6亿,入围全球应用榜单 TOP 10;目前的主要交易市场为俄、美、西、巴、法等国。

对于AliExpress来说,目前某些国家的用户群体比较成熟。这些成熟国家的用户在AliExpress尽享买买买之乐的同时,为我们沉淀了大量的该国用户的行为数据。这些沉淀下来的用户数据被我们挖掘利用后形成我们的推荐算法,用来更好的服务于该国用户。

但是还有一些待成熟国家的用户在AliExpress上的行为比较稀疏,对于这些国家用户的推荐算法如果单纯不加区分的使用全网用户的行为数据,可能会忽略这些国家用户的一些独特的心智;而如果只使用这些国家的用户的行为数据,由于数据过于稀疏,不具备统计意义,会难以训练出正确的模型。于是怎样利用已成熟国家的稠密用户数据和待成熟国家的稀疏用户数据,训练出对于待成熟国家用户的正确模型对于我们更好的服务待成熟国家用户具有非常重要的意义。

本次比赛给出若干日内来自成熟国家的部分用户A的电商行为数据,以及来自待成熟国家的A部分用户的行为数据,以及待成熟国家的B部分用户的行为数据,去除掉每个用户的最后一条购买数据,让参赛人预测B部分用户的最后一条电商行为数据。

二、数据集描述

数据说明

数据集包含四个文件:

  • 训练数据(Antai_AE_round1_train_20190626.csv)
  • 测试数据(Antai_AE_round1_test_20190626.csv)
  • 商品属性信息(Antai_AE_round1_item_attr_20190626.csv)
  • 提交示例(Antai_AE_round1_submit_20190715.csv)

商品属性表: 数据中共涉及2,840,536个商品,对于其中大部分商品,我们都会给出该商品的类目id、店铺id以及加密价格,其中价格的加密函数f(x)为一个单调增函数。

训练数据: 给出xx国的用户的购买数据和yy国的A部分用户的购买数据。数据的整体统计信息如下:

国家记录数买家数
xx10,635,642670,631
yy2,232,867138,678

测试数据:给出yy国的B部分用户的购买数据除掉最后一条。数据的整体统计信息如下:

国家记录数买家数
yy166,83211,398

商品属性表、训练数据、测试数据对应的文件列表为:item_attr, train和test。

数据格式: 无论是训练数据还是测试数据,都具有如下的格式:

buyer_country_idbuyer_admin_iditem_idcreate_order_timeirank
xx81773140335252018-06-12 07:12:581
xx817731981202018-06-11 07:12:582

其中各字段含义如下:

  • buyer_country_id: 买家国家id, 只有’xx’和’yy’两种取值
  • buyer_admin_id: 买家id
  • item_id: 商品id
  • create_order_time: 订单创建时间
  • irank: 每个买家对应的所有记录按照时间顺序的逆排序

数据集特点: 1)每个用户有至少7条购买数据; 2)测试数据中每个用户的最后一条购买数据所对应的商品一定在训练数据中出现过; 3)少量用户在两个国家有购买记录,评测中将忽略这部分记录;

要求选手提交的数据 关于yy国的B部分用户每个用户的最后一条购买数据的预测前30。

数据集版权许可协议

BY-NC-SA 4.0
https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh-hans

三、解决方案样例

源码:CrossBorder-ECommerce-Intelligent-Algorithm.ipynb。目标是基于用户历史订单数据预测用户下一次购买的商品。

思路

挑战:待成熟国家用户数据稀疏,难以独立训练有效模型,直接使用全局数据忽略其独特性。 目标:利用成熟国家的稠密数据(源域)辅助训练,同时保留待成熟国家(目标域)的独特特征。

1、数据混合:将成熟国家(xx)和待成熟国家(yy)的用户数据合并,利用成熟国家的数据增强模型对稀疏数据的理解。

2、特征工程:提取用户行为、商品属性、时间序列等特征,为模型提供丰富的输入。

3、迁移学习(Transfer Learning) 预训练-微调(Pre-training & Fine-tuning): 步骤:在源域(成熟国家)数据上预训练模型,捕捉通用行为模式(如点击、购买偏好);在目标域数据上微调,适配本地特征。 优势:源域模型提供初始化参数,缓解目标域数据不足问题。 技术:使用领域自适应方法(如DANN)学习域不变特征,或通过适配器(Adapter)调整部分网络层。

4、跨域推荐(Cross-Domain Recommendation) 共享潜在空间(Shared Latent Space): 方法:将用户和项目嵌入到统一低维空间,源域与目标域共享部分嵌入参数,同时保留独有特征。 实现:通过矩阵分解(MF)或深度模型(如DeepCoNN)建模跨域用户-项目交互。

运行环境

外部库名称版本号
python3.12.3
pandas2.2.2
numpy1.26.4

源码结构

1. 读入数据集

加载训练集、测试集和商品信息

item = pd.read_csv('./data/Antai_AE_round1_item_attr_20190626.csv')
train = pd.read_csv('./data/Antai_AE_round1_train_20190626.csv')
test = pd.read_csv('./data/Antai_AE_round1_test_20190626.csv')

2. 数据预处理

  • 将训练集和测试集合并,并标记来源(is_train列)。
  • 日期处理:从create_order_time提取日期、天和小时信息
  • 数据合并:将订单数据与商品信息合并
  • 内存优化:转换数据类型以减少内存使用
  • 缺失值处理:填充并转换store_id, item_price, cate_id中的缺失值
  • 数据存储:将处理后的数据保存为HDF5格式以便快速读取
df = pd.concat([train.assign(is_train=1), test.assign(is_train=0)])

df['create_order_time'] = pd.to_datetime(df['create_order_time'])
df['date'] = df['create_order_time'].dt.date
df['day'] = df['create_order_time'].dt.day
df['hour'] = df['create_order_time'].dt.hour

df = pd.merge(df, item, how='left', on='item_id')
。。。

3. 数据探查分析

  • 国家分布分析:
    • 训练集中有2个国家数据,xx国家占83%,yy国家占17%
    • 测试集只有yy国家的数据
  • 用户分析:
    • 训练集有809,213位用户,测试集有11,398位用户
    • 有6位用户同时出现在训练集和测试集中
  • 用户购买记录分布:
    • 训练集中xx国家用户最多有42,751条记录,最少8条,中位数11条
    • yy国家用户最多有3,480条记录,最少8条,中位数12条
    • 测试集用户最多有1,386条记录,最少7条,中位数11条
plt.rcParams['font.sans-serif'] = ['SimHei']  # 支持中文显示
plt.rcParams['axes.unicode_minus'] = False    # 解决负号显示问题

plt.figure(figsize=(8,6))
sns.countplot(x='is_train', data = df, palette=['red', 'blue'], hue='buyer_country_id', order=[1, 0])
plt.xticks(np.arange(2), ('训练集', '测试集'))
plt.xlabel('数据文件')
plt.title('国家编号')

4、特征工程

  1. 时间特征:从订单时间提取了日期、天和小时
  2. 商品特征:合并了商品品类、店铺和价格信息
  3. 用户行为特征:分析用户的购买频率和模式

5. 预测用户购买行为

虽然代码中尚未实现完整的预测模型,但从数据探索可以推测可能的算法方向:

  1. 协同过滤:基于用户历史行为和其他相似用户的行为进行推荐
  2. 序列模型:考虑用户购买的时间序列模式
  3. 特征工程:利用商品属性、购买时间等构建特征
  4. 集成模型:可能结合多种推荐算法提高预测准确性
test = pd.read_csv('./data/Antai_AE_round1_test_20190626.csv')
tmp = test[test['irank']<=31].sort_values(by=['buyer_country_id', 'buyer_admin_id', 'irank'])[['buyer_admin_id', 'item_id', 'irank']]
sub = tmp.set_index(['buyer_admin_id', 'irank']).unstack(-1)
sub.fillna(5595070).astype(int).reset_index().to_csv('submit.csv', index=False, header=None)

上述输出文件submit.csv的数据示例可参见下表:

buyer_admin_idtop1_item_idtop2_item_idtop3_item_id
152841085779371548472223
2821172180276654237665423
321146180073798459243286

技术特点

  • 大数据处理:使用了内存优化技巧处理千万级记录
  • 详细的数据探索:对国家、用户、商品等多维度进行分析
  • 时间序列分析:特别关注了购买时间模式
  • 推荐系统:最终目标是预测用户下一次购买的商品

源码开源协议

GPL-v3

四、获取案例套装

需要登录后才允许下载文件包。登录

发表评论