最近在做一个内嵌推荐算法的推荐系统,当时想的是会java多一点就用java做吧(其实也是半瓢水),一做一个不吱声,下面记录一下常见推荐系统里的推荐算法,以及我使用的算法的特点与场景。
1分类概述
推荐分类 | 算法 | 代表算法特点 |
---|---|---|
面向客户需求推荐 | 分类模型(逻辑回归/神经网络) | - |
基于购物车的推荐 | 关联规则 | 2.1 |
基于物品相似性的推荐 | item-based CF | 2.2.1 |
基于客户相似性的推荐 | user-based CF/knn | 2.2.2 |
基于内容的推荐 | 关联规则或SVD方法 | - |
市场细分 | K-Means等聚类 | - |
代表算法特点介绍
2.1应用关联规则到推荐
关联规则其实是一个很方便的发现两样商品关系的算法。共同提升的关系表示两者是正相关,可以作为互补品,如尿不湿和啤酒一起卖是最经典的。
- 相关概念
规则 X 的支持度 = 包含规则 X 的交易购物车数 /购物车总数。
理解:支持度表示规则 X 是否普遍。
规则 X(A→B) 的置信度 = 包含规则 X 的交易购物车数/规则X中含商品B的交易购物车。
理解:置信度是一种条件概率,表示购买了A产品的客户再购买B产品的概率。
总体理解:
支持度的分母都是5,也就是购物车的数量,分子则是选取这个规则中的所有商品同时出现在一个篮子的次数。
以A->D为例,同时包含A和D的篮子有2个,总的交易数量有5个,所以规则A->D的支持度为2/5;
有商品 A 的购物车个数为3,在这三个购物车中,其中2个购物车又包含商品D,所以该规则的置信度(可信度)为2/3。
频繁关联:关联,同时发生;频繁,次数很多,这里的次数多就需要我们认为规定阈值(后序称为支持度阈值或是置信度阈值)。那么就是项集同时发生的次数很多。
频繁项集:该项集的相(绝)对支持度满足最小支持度(计数)阈值。
注:由于频繁项集的子集也是频繁的,因此在存储所有频繁项集时个数太多,因此存储闭得频繁项集或者是极大频繁项集。
由挖掘频繁项集 到 根据频繁项集得到关联规则:
- 挖掘频繁项集
具体步骤(伪代码):
- 由频繁项集产生关联规则(频繁关联规则):
- 对于一个频繁项集l,导出所有非空真子集s,我们的关联规则就是s=>(l-s),过程中的所有子集因为是从频繁来的,因此都满足强规则中的满足最小支持度。
- 通过是否满足最小置信度来筛选关联规则。
置信度=支持度计数(s ∪ l-s) / 支持度计数(s)=p(l-s | s)
注:这里的支持度由于我们是从频繁项集推出的关联规则,所以
支持度= 支持度计数(s ∪ l-s) / 总事务数=p((s ∪ l-s))
都满足最小支持度阈值
适用场景:无需个性化定制的场景;有销售记录的产品,向老客户推荐;套餐设计与产品摆放。
2.2应用CF到推荐
基于用户和基于物品的协同过滤算法都是常见的推荐系统技术,它们各自有优点和缺点,并适用于不同的推荐场景。
- 基于用户的协同过滤算法:
优点:
简单直观: 基于用户的协同过滤算法易于理解和实现,因为它主要根据用户的行为历史(如评分、喜好)来进行推荐。
适用性广泛: 基于用户的协同过滤适用于用户数量较多、物品相对稳定的场景,例如电影、音乐等领域。
个性化程度高: 该算法能够根据用户的个性化偏好进行推荐,从而提供更符合用户兴趣的推荐结果。
缺点:
稀疏性问题: 在用户-物品矩阵中,用户对物品的评分数据往往是稀疏的,这会导致难以找到足够相似的用户进行推荐。
冷启动问题: 对于新用户,缺乏足够的行为数据,因此难以为其进行个性化推荐。
计算复杂度高: 随着用户数量和物品数量的增加,基于用户的协同过滤算法的计算复杂度也会增加,导致效率低下。
适用场景: 基于用户的协同过滤算法适用于用户数量较多、用户行为数据相对丰富、物品相对稳定的推荐场景,例如电影、音乐、图书等。
- 基于物品的协同过滤算法:
优点:
抗稀疏性: 基于物品的协同过滤算法相对于基于用户的算法更加抗稀疏,因为物品之间的相似度更容易计算。
适用于物品稳定的场景: 如果物品相对稳定,其属性和特征不会频繁变化,基于物品的算法能够提供稳定且高质量的推荐结果。
计算复杂度相对较低: 相比于基于用户的算法,基于物品的算法的计算复杂度通常较低,因为物品间的相似度计算相对简单。
缺点:
不适用于新物品: 对于新加入系统的物品,基于物品的协同过滤算法可能无法立即为其提供准确的推荐结果,因为它需要一定数量的用户行为数据来计算物品间的相似度。
不适用于动态物品: 如果物品属性和特征频繁变化,基于物品的算法可能无法及时适应变化,导致推荐结果不准确。
适用场景: 基于物品的协同过滤算法适用于物品相对稳定、用户行为数据较为稀疏的推荐场景,例如电商平台中的商品推荐。
参考文章
https://zhuanlan.zhihu.com/p/161340720
《数据挖掘:概念与技术(原书第3版)》