基于用户(user-based)的协同过滤推荐算法的初步理解以及代码实现

本文深入探讨了用户基的协同过滤推荐算法,从基础概念到具体实现,包括算法原理及代码实践,同时借助Apache Mahout库进行演示和源码分析。
摘要由CSDN通过智能技术生成

总论

    协同过滤是目前最经典的推荐算法。
    分而理之,协同,指通过在线数据找到用户可能喜欢的物品;过滤,滤掉一些不值得推荐的数据。
    协同过滤推荐分为三种类型。第一种是基于用户(user-based)的协同过滤,第二种是基于项目(item-based)的协同过滤,第三种是基于模型(model based)的协同过滤。
    我认为,选择哪种类型,取决于业务场景。需要考虑的是,user和item的数量比,谁的数量级小就选择哪个模式的cf;在业务处于的场景中,user和item的多变性比较,选择多变性较小的一方,在后续的维护,会方便很多;最后一点,明确你的推荐覆盖要求。
    今天主要讲基于用户。
    凡是推荐算法离不开大数据的基础,基于用户类型的数据一般是如下格式:
用户id,外物id,用户对外物的评分,以上是一般物联网的算法模型,(举一反三,分析系统日志,建立如下模型,用户id,资源id,用户对资源的访问次数,--->实现推荐页面 )

算法基础实现

  看这块的时候,我是真的后悔大学没好好学数学!!!
  首先让我们拆分下过程。 基于用户的协同过滤 可分为2步,
  1.找到相似度高的用户
  2.根据1步骤获取的信息,推荐源用户相对喜欢,并且未采取过的行为
    下面这个是大名鼎鼎的Jaccard公式,很简单, 取2个用户的选择集的交集,跟2个用户的选择集的并集,进行计算。但很显然,若要计算整个用户集合,
时间复杂度是O(n^2),太慢了。

这里写图片描述

    后续就有了利用倒排查表进行优化如下: 可以建立个
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值