发布时间:2013-01-13 15:20:15
1.协同过滤的主要部分是相似度的计算,直接抽象成物品间距离的计算比较方便理解和计算。 方法有很多,比如我们都学过的欧几里得,相关性系数,具体公式就不细讲了。真实的推荐系统的计算方式就复杂了,做系统的时候再深入了解好了。 ps:相关性系数可以修正用户标准不一致问题。比如有人打分苛刻,有人打分偏高导致推荐不一致的问题。2.存储方式:这里是一个全矩阵。用双层dict保存。稀疏矩阵:基于物品的存储空间要远基于用户密集矩阵:存储空间差不多如下图是个用户和物品的分数表,中间是分值。 比如user3对item3的打分是3. item1item2item3item4item5......【阅读全文】
发布时间:2013-01-13 13:41:20
好久前的笔记,翻出来整理了下,顺便mark之。一,史前时代之基于人口统计的推荐 顾名思义,就是针对用户的年龄,性别,地域等基本属性来推荐物品,会对这些基本属性属于一个分类的用户推荐一类物品。 它的优点是可以解决冷启动的问题,缺点是比较粗造。 例子: 第一次进入亚马逊,当当,推荐你本年度中国最受欢迎的热门书籍。 一点自己的看法: 1,推荐本质上是从数据中获取信息,信息就是用来消除不确定性的,这里可以避免冷启动不是由于他不需要数据,而是选择了直接利用了现实生活中信息,这......【阅读全文】
发布时间:2013-01-08 14:46:53
hadoop的使用中,一般只关注运行结果。对于mapper和reducer之间的处理逻辑往往不care。比如key-value对到达reducer的先后顺序等目前接触到的运用场景有:1.根据用户操作时间来整理事件链,在网站分析里比较常用。需要按时间先后顺序来处理,如果过亿的访问操作全在reducer里来排序,对计算能力和内存都是一个挑战。2.海量数据处理中,求去重distinct这种操作,往往需要先缓存很大的数据集,对单个reducer的内存要求很高,特别是上亿的数据时,很容易就撑爆内存。这里如果在reducer进入前就排好序,后续处理就简单的多。二次排序相当于把一个reducer的负载推给了......【阅读全文】