天池新人实战赛之[离线赛]题目与思路

1.1课题介绍

本课题以阿里巴巴移动电商平台的真实用户-商品行为数据为基础,同时提供移动时代特有的位置信息。您需要通过大数据和算法构建面向移动电子商务的商品推荐模型,挖掘数据背后丰富的内涵,为移动用户在合适的时间、合适的地点精准推荐合适的内容。

在真实的业务场景下,我们往往需要对所有商品的一个子集构建个性化推荐模型。在完成这件任务的过程中,我们不仅需要利用用户在这个商品子集上的行为数据,往往还需要利用更丰富的用户行为数据。

如下是一个真实的业务场景:

给出一定量用户在时间段1118~1218内的移动端行为数据(D),

需要预测1219日用户对商品子集(P)的购买数据。具体的数据说明下面将会详细介绍。

1.1.1数据说明

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

 字段

字段说明

提取说明

user_id

用户标识

抽样&字段脱敏

item_id

商品标识

字段脱敏

behavior_type

用户对商品的行为类型

包括浏览、收藏、加购物车、购买,对应取值分别是1234

user_geohash

用户位置的空间标识,可以为空

由经纬度通过保密的算法生成

item_category

商品分类标识

字段脱敏

Time

行为时间

精确到小时级别

 

D集合的记录显示如下:

每一行代表了用户 user_id 对属于分类 item_category 的物品 item_id  time 这个时间于地点 user_geohash 发生了交互,交互类型是 behavior_type behavior_type 包括浏览、收藏、加购物车、购买,对应取值分别是1234

给出的一共包含31天的交互数据,最后要预测32天有哪些user会购买哪些item

第二个部分是商品子集(P,表名为tianchi_mobile_recommend_train_item,包含如下字段: 

 字段

字段说明

提取说明

item_id

 商品标识

 抽样&字段脱敏

 item_ geohash

商品位置的空间标识,可以为空

由经纬度通过保密的算法生成

item_category 

商品分类标识

字段脱敏

这部分数据,是 tianchi_mobile_recommend_train_user中出现的物品item_id的一个子集。官方的第32天的会发生购买的 user, item 中的item都是这个数据表中的item,所以我们预测的 user, item 需要根据这个文件来过滤掉一些结果。

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

1.1.2   输出要求

完成用户对商品子集P的购买预测之后,需要将结果放入指定格式的数据表(非分区表)中,要求结果表名为:tianchi_mobile_recommendation_predict,包含user_iditem_id两列(均为string类型),要求去除重复。

表名:tianchi_mobile_recommendation_predict

结果表样例:

字段

字段类型

示例

User_id

String

100001

Item_id

String

12900

1.1.3   评估指标

比赛采用经典的精确度(precision)、召回率(recall)F1值作为评估指标。具体计算公式如下:

其中PredictionSet为算法预测的购买数据集合,ReferenceSet为真实的答案购买数据集合。我们以F1值作为最终的唯一评测标准。

 

2.1解答

2.1.1题目解读

已知用户在时间段11月18日~12月18日内的移动端行为数据(D),预测12月19日用户对商品子集(P)的购买数据。
数据(D),表名为tianchi_mobile_recommend_train_user,包含如下字段

 字段

字段说明

提取说明

user_id

用户标识

抽样&字段脱敏

item_id

商品标识

字段脱敏

behavior_type

用户对商品的行为类型

包括浏览、收藏、加购物车、购买,对应取值分别是1234

user_geohash

用户位置的空间标识,可以为空

由经纬度通过保密的算法生成

item_category

商品分类标识

字段脱敏

Time

行为时间

精确到小时级别

 

商品子集(P,表名为tianchi_mobile_recommend_train_item,包含如下字段: 

 字段

字段说明

提取说明

item_id

 商品标识

 抽样&字段脱敏

 item_ geohash

商品位置的空间标识,可以为空

由经纬度通过保密的算法生成

item_category 

商品分类标识

字段脱敏

其中,预测的用户为数据(D)中用户,预测的备选商品数据(P)为数据(D)中商品的子集。预测用户在12月19日有可能会购买多个不同备选商品。

输出表名为:tianchi_mobile_recommendation_predict,结果表样例如下:

字段

字段类型

示例

User_id

String

100001

Item_id

String

12900

 
 

2.1.1我的思路

准则
1、用户在19日前几天的网页行为中次数最多的,最有可能成为19日用户的购买商品
2、用户需求商品没在备选商品中时,
    2.1用户有可能根据商品类别item_category购买了同一类商品或者商品相关度高的商品
    2.2前一个月里,备选商品销售量最大的最有可能成为用户购买的商品
 
步骤
 
1、对数据(D)做清洗,将网页行为behavior_type转换为liulan、shoucang、jiagou和buy4个变量;分割时间字符串数据,将其分类year、month、day和hour4个变量,生成Data1.csv
2、提取出用户前3天的网页行为数据(12月16日至18日),生成bhv.csv(user_id, item_id, liulan, shoucang, jiagou, buy)
3、在bhv.csv表中计算用户需求指数Staneed<-Data$liulan*1+Data$shoucang*3+Data$jiagou*6,并对每个用户提取出指数大小前3的数据(user_id、item_id、Staneed、ind(排名1、2、3)),生成userneed.csv,其中部分商品为备选商品,还有一部分是特有的,需要根据其它准则替换成备选商品。
4、标记出在userneed.csv中的商品类别存在而在数据(P)备选商品类别中不存在的商品数据,从Data1.csv数据总表(增加Staneed变量)提取出userneed.csv中特有的数据(P)中备选商品类别的数据行(612706),并将这些数据转换为列为用户,行为商品,内容为Staneed的矩阵(cast函数)数据大,失败!,计算这些商品类别之间的距离,在userneed中特有商品类别取备选商品类别中最近的一个。
5、从Data1.csv数据总表(增加Staneed变量)中提取在备选数据(P)中对应商品行数据,并仅提取出(item_id,Staneed)两列数据,取Staneed最大的商品item_id作为userneed.csv中特有商品的替换商品。生成预测结果result.csv
 
没有用到的数据:hour、商品地理坐标、商品分类数据
 
后记:

没有用模型,结果不理想。(2016-03-21 17:06:17提交)F1和精准率为0,目前排名为103



posted @ 2016-03-23 10:08  萱草yy  阅读(7572)  评论(2编辑  收藏  举报