开发者学堂课程【天池大赛算法教程及获奖选手答辩: 新手入门赛-阿里移动推荐算法(上)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/389/detail/4999
新手入门赛-阿里移动推荐算法(上)
内容介绍:
一、赛题是做什么的
二、如何评价赛题做的好坏
三、如何做赛题
四、怎样能把赛题做的更好
一、赛题是做什么的
一句话描述:根据用户在手淘上的历史行为记录,预测用户们第二天买什么
(1)历史行为记录
(2)预测的是什么
历史记录:
例:谁在什么时间对什么商品进行什么操作预测:在第32天中,谁买了什么
数据相貌:
records:12312542
user
_
id:10000
item
_
id
:
2914411
user
_
item
pairs:4719002
and purchased pairs: 10346
4
,CTR is 0.02192497
min time 2014-11-18 00 max time 2014-12-18 23
二、如何评价赛题做的好坏
既然要预测,如何评价一个东西?若只看哪一个预测的多,那么把所有的可能性都提交了,就有可能得满分?如果只评价哪一个预测的准?
只要找到一条,预测对的,就也可以得满分。因此两种评价必然是不合理的,由此可知评价指标是希望所提交的问题预测当中做到又多又准。
如果比预测的多:那么提交所有种可能,必得满分
如果比预测的准:只预测一条对的,必得满分
因此评价指标必须要兼顾到“多”和“准”
Example:
假设第31天(12月19号)发生了20000次交易,预测了10000条,预测对了1000条
准确率为: 1000/10000=0.1
召回率为: 1000/20000=0.05
F1=2*0.1*0.05/(0.1+0.05)
三、如何做赛题
首先从业务常识去判断,什么样的 user_item pair,可能在下一天中发生“购买”:
用户i不停的去看商品j,预测: USERi-ITEMj
用户i将商品j放入购物车,预测: USERi-ITEMj
用户i非常喜欢买东西,预测和 USERi 相关的所有 PAIR 商品这几天卖得很好,预测和 ITEMj 相关的所有 PAIR
其次将业务逻辑转化为规则
规则:找到一个条件概率函数,将其最高的那段取出来
需要运用条件概率、贝叶斯定理、分类器模型
一个有意思的贝叶斯定理介绍:
http://mindhacks .cn/2008/09/21/the-magical-bayesian-method/
一个简单的分类器 Naive Bayesian Model:
http://www.cnblogs.com/jerrylead/archive/2011/03/05/1971903.html
条件概率函数:基于最大似然的估计
通过 Nshifts 获得更多的样本以增加最大似然估计的准确,120shifts 获得遗忘曲线(条件概率函数)
横轴为时间(小时)纵轴为概率并取最高的几点作为预测值
四、怎样能把赛题做的更好
如何将多个规则结合在一起:
1.按照每一个规则是否达标进行打分,打分最高的当作预测
2.自动的确定分数: Logistics Regression
3.若诸多规则和目标之间的关系是非线性的用 More MachineLearning Algorithm