hadoop-mapreduce基于物品的协同推荐算法ItemCF

推荐算法作为一种大数据分析最早的应用,如今已经得到的大量的普及,特别是新进崛起的头条,抖音,更或是早前的网易云音乐,其中的最吸引的地方无不是人性化的推荐系统,实际上也正是这种技术,使得BAT三巨头始终无法将其击倒(过了)。尽管如今的推荐系统算法已经变得“面目全非”,但是其中的精髓还是基于协同过滤算法,只是在其基础上进行了适当的优化或者改进,以适应不同的场景和数据。更加详尽的推荐算法请参照项亮的《推荐系统实践》,此书理论虽然过于浅显,但是整体来说还是相对系统的,各方面都有涉及,如果需要更多的了解,可能还是需要进入数据公司才能够了解其中的奥妙,毕竟这是个数据的故事,没有数据,技术只能等待死亡,而不能新陈代谢。

  • 协同过滤算法
    数据和数据之间交流来协同得到有效信息,就比如你和你的朋友,这层朋友关系就是协同信息,如果你有一个好友雷军,系统就会将你的好友推荐给雷军,而你的朋友将来就很可能再融资时得到雷军的投资。所以你和你朋友的这层关系非常重要,因为雷军投资不投熟人。

下面的理论和上面的有所区别,大概意思相同,只是多了一个数据项商品

  • 商品推荐算法-分类

    • 基于用户的协同过滤UserIF
      基于用户,就是找和你爱好相似的用户,把他的喜欢的商品推荐给你(前提是你还并不知道这个商品)。比如,用户雷军,当当网通过查阅发现,你和马化腾都喜欢买一些《xx从精通到入门》《21天学会XX》系列的书籍,就会认为这两个都是一类人,便将马化腾买过的《人工智能》推荐给雷军。
    • 基于商品的协同过滤ItemIF
      基于商品,就是发掘商品的关联,对每个用户的商品购买列表进行归纳,而这些商品之间就是一种内在关系,将这些作为推荐的权重。比如:小明是个四川人,这一天他又出门买尿布去了,但是除了尿布之外,它的购买列表中还有啤酒!what?说明这两样之间有某种关系,我们就将其作为一个记录,最后,通过四川的全体数据分析,发现,整个四川的都是这样的,那么这种关系就相当大了。事件转到另一边,天美工作室的小刚由于业务表现良好,年终奖发了个天文数字,当年就把人生三大件给解决了(户口、房子、妻子)。某一天,小刚也开始网上购物了,他买了一瓶啤酒,淘宝立马就把尿布推荐给他了,他突然就懵逼了。(四川男人买啤酒都会推荐尿布的)。扯得太多,忘了重点。
  • 案例:基于商品的协同过滤算法来进行淘宝商品推荐

    • 数据格式类型:,分别是商品ID,用户ID,是否点击,点击时间。
    • 分析:点击一次,就表示喜欢,时间数据可以忽略
  • 步骤:这里核心算法其实很简单,第一步:找到所有的物品关联度权重矩阵matI;然后,对于一个需要推荐的用户,得出他对每个用户的喜爱矩阵matU;通过matI*matU就得出当前用户的物品推荐权重,越大的表明越可能被推荐。(理论很浅显,如看不懂,请参阅下列代码细看,或者手动画出步骤,就会一目了然。浅显的理论说太多反而不易懂,还显得啰嗦)

  • 实现步骤:分6步

    • 第一步:去重,四个字段相同的需要去重
    • 第二步:计算用户对商品喜爱度矩阵matU-得分矩阵
    • 第三步:计算商品的同显矩阵matI,注意:这里的输出结果并不是矩阵输出,而是列表,计算式需要自行转换
    • 第四步:同显矩阵和得分矩阵相乘,matI*matU,得出用户的对所有商品的得分结果
    • 第五步:由于上面的mapreduce计算都是单个计算,所以需要把相同条数的项目进行相加
    • 第六步:对数据项进行排序

说实在的java进行矩阵运算真的是蛋疼,很简单一个矩阵乘法,硬是写了一大片

  • 代码
    git

  • 相关博客或书籍
    协同过滤推荐算法的原理及实现
    《推荐系统实践》项亮

你可能感兴趣的:(大数据)