天池新人实战赛之[离线赛]-指数加权平均

大赛链接

https://tianchi.aliyun.com/getStart/information.htm?spm=5176.100067.5678.2.6d75153cK2qkgK&raceId=231522

总之,就是给你一定量用户在一个月时间(11.18~12.18)之内的移动端行为数据(D),然后去判断这些用户在(12.19)对商品子集(P)的购买数据

 

刚看到这个题目,一头雾水,哪些是训练集?怎么测试?

结合一般的购物习惯,用户把商品加入购物车以后的当天或者第二天是最可能产生购买行为的,过了一个月之后很可能想买的欲望会降低很多,也就是说,把用户前一个月的行为进行加权平均,越靠近12.19号的行为权重更大,这不是妥妥的指数加权平均算法吗?

 

 关于指数加权平均数,可以参考此文:https://blog.csdn.net/u014525760/article/details/79331898

 

具体思路和步骤:

 1.给定的数据集只提取user_id,item_id,behavior_type,time,空间标识和商品标识先不用吧

 2.把time的时间简化为1-30的int数据

 3.去重,去掉同一用户对同一商品在同一天的多次相同行为

 4.把behavior_type用3个one-hot编码表示,用0-没有添加购物车,1-添加购物车,0-没有收藏,1-收藏,0-未购买,1-购买

 5.到底前一天的添加购物车或者收藏行为对第二天的购物行为的权重有多大呢?可以用12.18是否购买和前29天的购物行为推算

 6,初步确定计算公式(迭代公式):
  某一日的购买指数是前一天的心仪指数和前一天的购买指数的加权平均(初步估计系数为0.8,加购物车购买系数先设计个0.8,收藏购买系数先设计个0.2吧,不要问我为什么,我也不知道,先试试)

  依次计算每一个用户对一个商品的心仪指数,例如:

  只在12.17日加了购物车并且收藏的话就是:0.2*(0.8*1+0.2*1)

  分别在12.15日收藏和在12.18日加入购物车的话就是:0.2^3*0.8*(0.8*0+0.2*1)+0.8*(0.8*1+0.2*0)

 7.因为不管是加购物车还是收藏,之后购买的概率都是很小的,所以,我们最后求到的购买指数都不是反映实际购买率的,购买指数从大到小选择前1%作为我们最后筛选的最终结果

 

ok,这就是我的全部思路,现在开始代码阶段

 

posted @ 2018-07-03 12:34  TimoTong  阅读(322)  评论(0编辑  收藏  举报