1、推荐系统涉及的知识
电子商务业务知识、网站架构运营、机器学习算法、数学建模、大数据平台…
2、推荐系统涉及的常见算法
聚类、关联模式挖掘、大规模矩阵运算、文本挖掘、复杂网络和图论计算等…
3、推荐系统分类
Ⅰ、基于应用领域分类
代码语言:javascript复制 电子商务推荐系统、社交好友推荐系统、搜索引擎推荐系统、信息内容推荐系统......
Ⅱ、基于设计思想分类
代码语言:javascript复制 基于协同过滤的推荐系统、基于内容的推荐系统、基于知识的推荐系统、混合推荐系统......
Ⅲ、基于使用何种数据分类
代码语言:javascript复制 基于用户行为的推荐系统、基于用户标签的推荐系统、基于社交网络数据的推荐系统、基于上下文信息的推荐系统......
4、实现协同过滤的步骤
代码语言:javascript复制 ①收集用户偏好数据,如评分、投票、转发、评论、点击流等数据
②找到相似用户或物品
③计算推荐结果
基于用户行为数据设计的推荐算法一般称为协同过滤算法,实现方法有基于邻域、基于隐语义模型、基于图的随机游走算法等,目前使用最多的是基于邻域的推荐算法,基于邻域的推荐算法又分为基于物品推荐算法和基于用户推荐算法。
实现基于邻域的算法思路举例:
代码语言:javascript复制 推荐数据准备:用户id、物品id、偏好值 --- 把数据看成空间中的向量
(1)建立物品的同现矩阵
(2)建立用户对物品的评分矩阵
(3)矩阵计算推荐结果 --- 推荐结果 = 同现矩阵*评分矩阵
相似度计算:皮尔逊相关系数、欧式距离、同现相似度、余弦夹角…
邻域的圈定:固定数量的邻居、基于相似度门槛的邻居…
考虑因素:推荐算法选型、数据量、算法检验、结果解读…
算法评估:查准率、召回率(查全率)…
5、Mahout – Hadoop的子项目
Mahout中推荐算法支持单机算法和分布式算法两种,Mohout的推荐系统引擎分为5个模块:
代码语言:javascript复制 数据模型 -- DataModel
相似度计算 -- Similanity
近邻算法 -- Neighborhood
推荐算法 -- Recommender
算法评分器
6、数据挖掘 – 关联规则挖掘
代码语言:javascript复制 挖掘数据集
频繁模式
挖掘目标
关联规则
支持度
置信度...
Apriori算法:
代码语言:javascript复制 ①找出所有频繁项集
②由频繁项集产生强关联规则
提高Apriori算法的效率:
代码语言:javascript复制基于散列的算法
基于FP tree的算法
7、基于内容的推荐算法
基于内容的推荐算法常见的有根据商品属性和分类进行推荐、根据用户标签进行推荐、基于隐语义的推荐算法等。
基于内容的推荐算法原理是用户喜欢和关注过的item在内容上类似的item,可以通过计算item相似度进行推荐。
代码语言:javascript复制 物品i与物品j的相似度公式为:
Wij = N(i)∩N(j) / √ |N(i)|*|N(j)|
N(i)和N(j)分别为喜欢物品i和j的人数,N(i)∩N(j)则是同时喜欢物品i和j的人数;
8、基于模型的推荐算法
通过预先设定的计算模型来实现推荐,常用于实时推荐;
9、ALS矩阵分解模型
可以将打分理解为相似度,打分矩阵A(mn)就可以由用户喜好特征矩阵U(mk)和产品特征矩阵V(n*k)的乘积UV来近似表达,这种方式成为概率矩阵分解算法(PMF)。
交替最小二乘法是PMF在数值计算方面的应用,为了使低秩矩阵U和V的乘积更加接近A,需要4最小化平方误差损失函数,优化方法有通过交叉最小二乘法或随机梯度下降法(SGD)求出最小误差。
10、关联规则之FPGrowth算法
使用场景 – 用于发现频繁项集,比如啤酒和尿布;
基本概念:
代码语言:javascript复制 T*:代表一次购物
项集:项的集合
支持度:项出现的次数或频率