阿里天池新人实战赛—移动推荐算法

简介

本次赛题为《阿里移动推荐算法》,以阿里巴巴移动电商平台的真实用户-商品行为数据为基础,同时提供移动时代特有的位置信息,而参赛队伍则需要通过大数据和算法构面向建移动电子商务的商品推荐模型。希望参赛队伍能够挖掘数据背后丰富的内涵,为移动用户在合适的时间、合适的地点精准推荐合适的内容。
赛事网址:https://tianchi.aliyun.com/competition/entrance/231522/introduction?spm=5176.12281973.1005.5.3dd54c2ab7Ixu4
GitHub:代码地址

比赛信息

  • 竞赛数据信息
    本场比赛提供20000用户的完整行为数据以及百万级的商品信息。竞赛数据包含两个部分。

第一部分是用户在商品全集上的移动端行为数据(D),表名为tianchi_fresh_comp_train_user_2w,包含如下字段:

在这里插入图片描述
第二个部分是商品子集(P),表名为tianchi_fresh_comp_train_item_2w,包含如下字段:
在这里插入图片描述

  • 比赛内容
    训练数据包含了抽样出来的一定量用户在一个月时间(11.18~12.18)之内的移动端行为数据(D),评分数据是这些用户在这个一个月之后的一天(12.19)对商品子集(P)的购买数据。参赛者要使用训练数据建立推荐模型,并输出用户在接下来一天对商品子集购买行为的预测结果。

  • 评分数据格式
    具体计算公式如下:参赛者完成用户对商品子集的购买预测之后,需要将结果放入指定格式的数据表(非分区表)中,要求结果表名为:tianchi_mobile_recommendation_predict.csv,且以utf-8格式编码;包含user_id和item_id两列(均为string类型),要求去除重复。例如:
    在这里插入图片描述

1. 探索数据分析

1.1 查看数据

用户行为数据表(tianchi_fresh_comp_train_user.csv)包含23291027条数据,数据样式如下:
在这里插入图片描述
商品子集数据表中包含620918条数据,数据样式如下:
在这里插入图片描述

1.2 数据缺失值占比

在这里插入图片描述
两个数据文件中中除了用户(user_geohash)有68.3%的缺失值
商品位置信息(item_geohash)有67.2%的缺失值,其他字段都无缺失值。

1.3 用户的行为类型

在这里插入图片描述
购买与非购买的占比约为1:100,标签存在严重的类别不均衡情况,易导致模型训练失效,可以考虑对数据进行抽样处理。

关于数据不均衡事例请戳这篇博客:https://blog.youkuaiyun.com/weixin_43746433/article/details/97537816

2.用户行为探索

2.1 转换时间类型

在这里插入图片描述

2.2 每日购买分布

  • 商品全集每天的购买情况
    在这里插入图片描述
    用户购买商品的数量比较稳定,基本维持在6000左右,双12由于购买量是平时的将近5倍。

  • 商品子集每天的购买情况
    在这里插入图片描述
    用户购买商品子集的数量基本稳定在500-600之间,也就是说我们最终需要预测的购买数据大概率在这个数量区间。

2.3 查看用户星期购买分布

  • 商品全集 浏览、加购物车、收藏 和购买的星期分布图
    在这里插入图片描述
    用户的四种行为在一个星期内每天的分布,浏览、收藏和加入购物车的分布大致相同,而星期五购买量比其他的天数多。

  • 商品子集购买星期分布图

在这里插入图片描述

  • 用户type操作的时间段分布

商品全集与子集购买时间段分布图
-在这里插入图片描述
按小时来观察用户行为的分布,用户一般在每天的19:00—23:00时间段,浏览、收藏、加入购物车的操作数量达到高峰,而购买行为则在下午和晚上够比较多。

由于数据只有行为时间的数据,所以必须通过各种行为构造新的特征。通过对数据的探索以及对购买行为的理解,可以在用户各种行为发生的次数和时间间隔等方面构造特征

3.特征工程

3.1 特征构造

对于特征构造的思路,可以考虑在用户、商品、商品类型以及用户-商品、用户-商品类型几个大类,对各种行为的次数、时间等方面进行特征构造,构造的特征如下:
在这里插入图片描述

3.2 特征选择

用了XGBoost模型。可以通过模型中Feature importance中各特征的Score值来筛选特征,最终留下Score值较高的特征。

rom xgboost import plot_importance
plot_importance(model_xgb)
plt.show()

在这里插入图片描述

4.模型训练

4.1 数据集划分

训练数据建立推荐模型,并输出用户在接下来在19号对商品子集购买行为的预测结果(提交结果)。 所有数据需要划分训练集,验证集,以及测试集。
训练集:17号以前的数据 预测17号的购买
验证集:17号以前的数据 预测18号的购买
测试集:17号以前的数据 预测19号的购买(结果)

4.2 模型的选择

解决本问题适用的模型有Logistic Regression、随机森林、GBDT、XGBoost等
可使用模型融合方法进行预测。
参考:https://blog.youkuaiyun.com/weixin_43746433/article/details/98787993#57__939
XGBoost模型具有以下的优势:
(1)数据存在严重的正负样本不均衡的情况,采用Logistic Regression需要数据进行采样,平衡正负样本的数量,而决策树类的模型对于类别失衡不敏感。
(2)不需要对数据进行标准化和归一化,而且,可以自动处理Null值。
(3)训练速度快,并且可以通过参数调节防止模型过拟合。

4.3 模型训练与参数调整

使用sklearn中的 GridSearchCV() 函数调节参数,详情请戳:https://blog.youkuaiyun.com/weixin_43746433/article/details/96483129#4XGBoost__324

5.提交数据

此前,在探索性数据分析的环节,数据显示用户对子集中商品的购买数量大致稳定在每天500-600。因此,结合模型的结果,最终选取评分前550的用户-商品对作为预测结果。
在这里插入图片描述

### 阿里天池新人实战概述 阿里天池新人实战是一项面向新手的数据科学竞,旨在通过实际问题帮助参与者提升数据分析和建模能力。以下是关于该事的一些关键信息: #### 比目标 比的目标是基于给定的历史消费数据,预测用户在领取优惠券后的15天内是否会使用该优惠券[^1]。这涉及分析用户的消费习惯以及优惠券使用的可能性。 #### 数据描述 比中提供了2016年1月至6月期间的真实线上线下消费记录,经过匿名化处理并采用有偏采样以保护隐私。参者需重点关注`User_id`、`Coupon_id` 和 `Date_received` 字段,并构建模型来预测优惠券的使用概率。此外,在提交结果时,可以创建一个新的字段`Probability`,将其初始化为随机数值作为初始猜测[^2]。 #### 提交要求 最终的结果文件应命名为`tianchi_mobile_recommendation_predict.csv`,保存为UTF-8编码格式[^4]。此CSV文件仅需包含两个字符串类型的列——`user_id` 和 `item_id`,并且要确保无重复项存在[^3]。 #### 评价标准 对于预测性能的评估,官方会依据特定公式衡量准确性。具体而言,它考量的是团队能否精准地识别哪些商品会被其潜在买家选购。 #### 如何参与 虽然未直接提及具体的注册流程,通常情况下可以通过访问阿里巴巴旗下的天池平台网站找到对应的比页面进行在线报名。一般需要填写个人信息并通过审核才能正式加入到项目当中去体验整个过程。 #### 参建议 - **熟悉工具**: 使用Python或其他适合做机器学习任务的语言编写脚本。 - **探索数据**: 利用可视化手段理解输入特征之间的关系及其分布特性。 - **优化算法**: 尝试多种分类器组合寻找最佳解决方案路径。 ```python import pandas as pd from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier # 加载训练集与测试集 train_data = pd.read_csv('path_to_train_dataset') test_data = pd.read_csv('path_to_test_dataset') X = train_data[['features']] # 替换为实际特征列表 y = train_data['label'] # 假设标签列为'label' X_train, X_val, y_train, y_val = train_test_split(X, y) model = RandomForestClassifier() model.fit(X_train, y_train) predictions = model.predict_proba(test_data[['features']]) ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值