莫名其妙搞了这个比赛(戳这里看比赛内容)
然后被虐得生活不能自理 ...开始还能排到top80
现在都要掉出Top500了
感觉到了瓶颈木有提升空间
就放弃治疗了
就把我的一些思路&想法记录下来吧
比赛大致内容是 给你几个月的封装后的数据(用户对品牌的一些操作行为的记录)推测下一个月用户可能会购买神马
因为字段都是加密过的(其实就是用户和品牌都是用ID表示)
这样就无法考虑用户之间和品牌之间的相互作用
这种情况下我们来考虑用户A是否会购买品牌X的商品只需要考虑之前用户A对品牌X的操作行为就好
这一点应该很容易想到
然后实现这一点的话大部分人的第一反应应该都是把用户和品牌都给Hash掉吧...(好吧我的第一反应是这个...不知道大家是怎么样)
然后我仔细想了想 发现Hash其实是不必要的
我们只需要按用户和品牌双关键字排序就好 这样逐记录处理即可(你当前处理的操作记录中的用户和品牌和上一条不一样就说明之前的处理完了)
再考虑到方便输出 就令用户为第一关键字,品牌为第二关键字
现在就该考虑如何判断用户A是否会购买品牌X的商品了
我的想法是 给予每个操作行为类型一个权值k,再乘上一个与时间相关的函数f(t)
当用户A对品牌X的所有操作的 k*f(t) 之和大于某一特定值L时 就认为A会买X了
函数f(t)应该是这个操作行为越久远对现在的影响就越小 突然就想到了记忆曲线这玩意儿了...然后就用了个e为底的指数函数拟合了
再之后就是考虑系数k和特定值L的确定了