前段时间帮朋友做了个电信学院的竞赛题
已知用户一个月前27天的浏览和操作记录
要求根据月末三天的用户帖子的打开情况来预测月末三天用户的点赞或踩行为
这是个典型的分类问题,对与一个用户浏览记录 判断用户是否会操作,进一步预测是点赞或者踩
由于给的特征是基于时间的日志记录,所以也可以定义为时间序列的用户行为预测
分类问题可以用LR,RF,GBDT,XGBoost,SVM等很多模型来处理,这里我们采用了比较火的
XGBoost。
要判断用户是否会对某个帖子进行点赞或踩,需要提取一系列的特征来刻画用户和帖子
问题的定义:
用u表示一个用户,p表示帖子,问题即定义一个多类分类器C
C(u,p)={0,1,2} 0表示无操作,1表示赞,2表示踩
或者2个2类分类器C1,C2
C1(u,p) ={0,1} u对p有无操作
C2(u,p) = {0,1} 是赞还是踩
问题定义完后,我们来处理样本集,题目中的数据已知1-30号的用户浏览数据 ,以及
1-27号的用户操作数据。要求预测28-30号的用户操作。
很明显我们的问题样本为预测的所有28-30号中用户u浏览过的帖子p
并根据u,p来判断是否会有点赞行为。
那怎么来训练这个模型呢?
我们可以使用1-24号的数据来训练25-27的点赞行为。
那用户或者帖子的哪些特征会对是否点赞有影响呢
用户的历史点赞行为,浏览点击情况,以及帖子的历史点赞,点击情况,帖子的热门度,新鲜度等
基于此我们可以提取以下特征
用户:基于预测点(预测为28号,训练选25号)的前1,3,5,7,10,20天浏览,点击,点赞,点踩数
帖子:基于预测点的前前1,3,5,7,10,20天浏览,点击,点赞,点踩数
此外还可以找一些其他刻画特征
查看立即点赞的次数,
帖子的热度:(log(view*0.1+click*0.5)+praise*click/5 + praise) / (0.5*T + 0.5*p_lastday_praise+1)^1.5
T卡片存在时间,p_lastday_praise最后一次点赞时间
帖子的新鲜度:(view*0.1+click*0.5)/(T+1)^G
用户喜欢的内容(图片,主题词)
帖子内容
定义好特征后,我们可以有数据生成每个帖子和用户的特征,
用户根据25,26,27三天的用户浏览和点赞数据生成训练集:
然后用28,29,30三天的数据来生成要预测的预测集并预测结果。