您的位置:首页 > 其它

推荐算法原理感悟

2017-07-15 21:53 204 查看

——Content Based

实践步骤:利用jieba先对Item分词,然后做出正排表(Item–Feature…);然后给每个Feature打分(TFIDF值),逆序排列;接着做倒排表(map阶段以每个Feature为Key,关联对应的Item,在reduce阶段把Feature值(TFIDF值)高的对应的Item放在前面,逆序排列);最后,便根据倒排表,对于某个Feature高的Item,给出一个推荐列表,这个推荐列表就是倒排表的top-N,也就是推荐列表出现的Item和正在被A使用的Item在Item上是很相近的。

例如:

倒排表:特征:“时间”——Item1:“时间简史”0.9 (A看过) Item2:“时间xx”0.8 Item3:“时间yy”0.7

在只考虑”时间”这个特征(就这一个维度)做推荐并且只能推荐一个Item时,直接把Item2推荐给A(因为0.9乘以0.8>0.9乘以0.7,一种比较相似度的方式)

假设如果知道xx=”模型简史”,yy=”概率简史”

特征:“简史”——Item1:“时间简史”0.8 (A看过) Item3:“时间yy”0.6 Item2:“时间xx”0.4

相似度: Item1&Item2(0.9乘以0.8+0.8乘以0.4)小于 Item1&Item3(0.9乘以0.7+0.8乘以0.6)

则应该把Item3推荐给A。

——Collaboration Filtering

User Based CF

原理:用户喜欢那些跟他有相似爱好的用户喜欢的东西,具有相似兴趣的用户在未来也具有相似兴趣。给定用户u,找到一个用户的集合S(u),他们和u具有相似的兴趣,将S(u)喜欢的物品推荐给用户。

A喜欢女生:xxx0、xxx1 、xxx2

B喜欢女生:xxx0、xxx1 、xxx3

B刚喜欢上女生: meimei

——可以把meimei推荐给A(因为B和A喜欢的女生很相似)

例如:

用户A翻他微信朋友圈,发现A的好友B看了部电影《xxx》并分享到朋友圈了,A与B从小关系好、志趣相投(历史信息),于是A也打算去看这部电影。

Item Based CF

原理:用户喜欢跟他过去喜欢的物品相似的物品,历史上相似的物品在未来也相似。给定用户u,找到他过去喜欢的物品的集合S(u),把和S(u)相似的物品推荐给u。

A喜欢女生:xxx0、xxx1 、xxx2

B喜欢女生:xxx0、xxx1 、xxx3

C喜欢女生:xxx0、xxx2 、xxx4

D喜欢女生:xxx0、xxx1 、xxx5

——可以把xxx1推荐给C(因为xxx1和C之前喜欢的xxx0相似,这是根据统计得来的:A、B、C都喜欢xxx0、xxx1,说明这两个女生很像,两个班花,哈哈~)

重点:这里评价Item相似,是通过与之关联的用户行为来判断的,而不是挖掘Item本身的属性来判断。即基于Item的协同过滤,是考虑用户的行为向量,跟Item本身毫无关系,譬如我们100个人中,有90个人都看了A和B两个Item,那么我认为A和B具有很强的相关性(跟Item本身无关),道理上跟关联规则的啤酒和尿不湿是类似的,就是看AB共同出现了很多次,就认为他们相关,喜欢A的用户很大程度上也喜欢B。

——Model based

以用户为基础(User-based)的协同过滤和以项目为基础(Item-based)的协同过滤统称为以记忆为基础(Memory based)的协同过滤技术,他们共有的缺点是数据稀疏,难以处理大数据量影响即时结果,因此发展出以模型为基础的协同过滤技术。 以模型为基础的协同过滤(Model-based Collaborative Filtering)是先用历史数据得到一个模型,再用此模型进行预测。以模型为基础的协同过滤广泛使用的技术包括Latent Semantic Indexing、Bayesian Networks…等,根据对一个样本的分析得到模型。

总结

差别在于:

协同过滤必须要有用户行为,基于Item的推荐可以不用考虑用户行为。冷启动阶段只能用基于Item的推荐,因为没有用户行为数据;积累一段时间用户行为数据后就可以用协同过滤了。基于Item的推荐的要求:item数据比较容易结构化,且结构化的数据能相对完整的描述item,否则效果不会太好。

协同过滤的要求:用户行为越丰富越好。用户数少时,推荐用User Based CF;Item少时,推荐用Item Based CF。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: