关联规则
如果女票说:圣诞节你买了SK-2神仙水,元旦你给我买。。。
你该怎么办
- 去柜台问导购员 <- 基于关联规则的推荐
- 看女票较相似的闺蜜买什么 <- 基于用户的协同过滤
- 看买过SK-2的人还买了什么 <-基于物品的协同过滤
推荐系统评价指标
第一层次:基于数据的指标
– 预测评分准确度,预测评分关联,分类准确度,排序准确度
– 准确率,召回率,准确率提高率,召回率提高率,F1指标和AUC值
第二层次:商业应用上关键表现指标
– 用户受推荐影响后的转化率,客单价,购买品类数和活跃度等的变化
第三层次:用户真实体验
召回率:查全率,所推荐的物品占所有物品的比值
准确度:推荐的物品占它所喜欢物品的比值
覆盖率:描述一个推荐系统对物品长尾的发掘能力;推荐系统里能推荐多少冷门产品
购物篮分析与关联规则
支持度
提升度
置信度:有顺序,先验和后验
什么是购物篮分析
定义
– 单个客户一次购买商品总和称为一个购物篮
如何定义购物篮很重要(由数据分析师决定)
思想
– 分析商品与商品之间的关联(啤酒和尿布)
算法
– 不考虑购物顺序:关联规则
– 考虑购物顺序:序贯模型(加入时间,比如买了门才买把手,不会买了把手再卖门)
应用
– 超市货架布局:互补品与互斥品
– 套餐设计和捆绑销售
关联规则挖掘
关联规则挖掘的定义:给定一个交易数据集T,找出其中所有支持度和置信度满足一定条件的关联规则
最简单方法是穷举项集的所有组合,并计算和判断每个组合是否满足条件
怎样快速挖出满足条件的关联规则是关联挖掘的需要解决的主要问题
Apriori算法是解决这一问题的最流行算法
其他算法
Brute-force algorithm暴力筛选法(遍历所有)
FP-growth algorithm 频繁模式增长筛选算法(操作比较复杂)
关联规则挖掘:Apriori算法
1)生成频繁项集
这一阶段找出所有满足最小支持度的项集,找出这些项集称为频繁项集
2)生成规则
在上一步产生的频繁项集基础上生成满足最小置信度的规则,产生的规则称为强规则
关联规则挖掘所花费的时间主要是在生成频繁项集上,因为找出的频繁项集往往不会很多,利用频繁项集生成规则也就不会花太多时间
Apriori基于以下两条核心原理生成频繁项集
如果某个项集是频繁的,那么它的所有子集也是频繁的
若子集不是频繁的,则所有包含它的项集都是不频繁的
Apriori算法优缺点
- Apriori算法利用频繁集的两个特性,过滤了很多无关集合,效率提高不少
- Apriori算法是一个候选消除算法,每一次消除都需要扫描一次所有数据记录,造成整个算法在面临大数据集时显得无能为力,每次生成频繁项集时都要进行全表扫描
关联规则优缺点
优点
– 原理易于理解,比较容易解释
– 提炼规则相对稳定,不需要频繁更新
缺点
– 并不是真正的个性化推荐,不同用户的推荐结果相同
– 面对稀疏数据效果不佳
稀疏数据:商品是成百上千,而每个人买的很少,如果构建0/1矩阵,则每行中1的值很少;容易使得整个系统不收敛或产生过拟合
基于邻域的相似性推荐和协同过滤
协同过滤:个性化推荐的体现;协同是利用群体智慧把所有物品的相似度计算出来,过滤是利用相似度加权物品的评分再进行排序,排名靠前的推荐给客户
相似度如何计算
收集了用户行为数据,经过一定预处理和归一化,得到一个用户偏好的二维矩阵,一维是用户列表,另一维是物品列表,值是用户对物品的偏好,一般是[0,1]或者[-1,1]的浮点数值
在用户-物品偏好的二维矩阵中,我们可以将一个用户对所有物品的偏好作为一个矢量计算用户之间的相似度,或者将所有用户对某个物品的偏好作为一个矢量来计算物品之间的相似度
相似度可用于人脸识别,自然语言处理,或手写识别
欧式距离
余弦相似度
Pearson相似度
杰卡德相似度
基于距离度量的相似度
Person相似度
Person系数的取值范围为[-1,1],当值为负时,为负相关,当值为正时,为正相关,绝对值越大,则正/负相关的程度越大
优点是计算中考虑了用户评分的均值
缺点:
– 如果用户只对一个商品有评分
– 如果用户对所有商品评分都一样
– 没有考虑到用户评分数量的差异
协同过滤
利用集体智慧的一个典型方法
协同是群体行为,过滤是针对个人的行为
两种分类:
Item-based CF:
– 通过用户对不同item评分来评测item之间的相似性,基于item之间的相似性做出推荐
– 物以类聚
User-based CF:
– 通过不同用户对item的评分来评测用户之间的相似性,基于用户之间的相似性做出推荐
– 人以群分
关联规则vs协同过滤
关联规则
– 回答问题:某消费者购买商品A,那么它还可能买什么商品?
– 特征:直接的推荐,从整体数据中挖掘潜在关联,与单个人的偏好无关
协同过滤:
– 回答问题:1)与A客户相似的客户群是谁?将客户群中物品推荐给A(A没有的物品);2)与A物品相似的物品群是什么?对某用户,若其已经购买或收藏A,则推荐该用户与A相似的物品群
– 特征:间接推荐,即先找到相似的人(user-based)或物(item-based),然后再根据品味相似的人的偏好进行推荐
– 协同过滤=协同(集体智慧的部分)+过滤(针对具体某个人又做了一次个性化)
基于用户的协同过滤,通过不同用户对物品的评分来评测用户之间的相似性,基于用户之间的相似性做出推荐
简单概括:给用户推荐和他兴趣相似的其他用户喜欢的物品
基于用户协同过滤算法主要包括两个步骤:
- 找到和目标用户兴趣相似的用户集合
- 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户
基于物品的协同过滤算法主要分为两步:
- 计算物品之间的相似度
- 根据物品的相似度和用户的历史行为给用户生成推荐列表
计算物品的相似度比计算用户的相似度多了一个共现矩阵
协同过滤的优缺点
优点
– 能够过滤难以进行机器自动内容分析的信息,如艺术品,音乐等
– 共享其他人的经验,避免了内容分析的不完全和不精确
– 有推荐新信息的能力,可以发现内容上完全不相似的信息,可以发现用户潜在的但自己尚未发现的兴趣偏好
缺点
– 冷启动问题
– 数据稀疏问题
– 热门物品的干扰,两个不同领域的最热门物品之间具有较高的相似度
基于模型的个性化推荐——LFM隐语义模型推荐
基于模型协同过滤推荐是采用机器学习或数据挖掘等算法,用训练数据来学习识别复杂模式,从而得到学习模型,然后基于学习模型在数据集上进行智能预测,主要模型:
隐语义模型/矩阵分解模型
贝叶斯信念协同过滤模型
聚类协同过滤模型
概率因素模型
ALS交替最小二乘模型—spark中所提供的推荐系统模型的最优解
基于矩阵分解(SVD)的推荐算法
奇异值分解的定义:
任何一个MN的矩阵A, 如果它的行数M大于或等于它的列数N,那么它就可被转换成以下三个矩阵乘积:一个MM的正交矩阵U,一个MN的对角矩阵S(奇异值矩阵),和一个正交矩阵V的转置矩阵
对于由M个产品和N个用户组成的评分矩阵MN,我们就可把这个矩阵分解为MM的矩阵U,MN的奇异值矩阵S和NN的矩阵V
取S矩阵的前几个奇异值就能接近原来的MN的矩阵,而不必去完整的S ——近似还原,还原程度取决于r
类似于主成份分析思路,只取前几个重要变量来替代全部变量,从而大大减少运算过程
准确率与召回率
什么是正确率和召回率
-
正确率=提取出的正确信息条数/提取出的信息条数
-
召回率=提取出的正确信息条数/样本中的信息条数
两者取值在0和1之间,数值越接近1,查准率或查全率就越高 -
F值=正确率召回率2/(正确率+召回率)
(F值即为正确率和召回率的调和平均值)
混合推荐方法
冷启动:没有用户信息如何进行推荐
方法:用标签让客户进行选择
关键问题——数据稀疏性
考虑到现在互联网用户和商品的规模,数据非常稀疏,直接用协同过滤效果并不好
这问题本质上无法完全克服,只能一定程度缓解
数据是否产生关联比用户偏好更重要
– 实践表明,稀疏数据情况下给同一个商品分别打负分(低评价)和打正分两个用户要看作正相关的而非负相关的
基于相似性可传播的假设,通过扩散的算法,从原来一阶关联(两个用户有多少相似打分或共同购买的商品)到二阶甚至更高阶的关联,该计算量较大
基于单品的数据可能非常稀疏,若把这些商品信息粗粒化,在品类的水平上数据会变得稠密,若能够计算品类间相似性,就可帮助进行基于品类的推荐
阿里技术是将稀疏矩阵拆分成小的矩阵