推荐算法

推荐系统笔记
常用推荐算法:
1.基于用户的协同过滤(UserCF)
2.基于商品的协同过滤(ItemCF)
3.基于商品内容的推荐
4.基于机器学习的推荐
5.混合模型

基于用户的协同过滤:
根据用户的兴趣相似度进行推荐,给用户推荐和其有相似兴趣用户喜欢的商品,举个例子:用户A对物品{a, b, d}有过行为,用户B对物品{a, c}有过行为,利用余弦相似度公式计算用户A和用户B的兴趣相似度为:


推荐算法:
推荐算法
S(u, K)包含和用户u兴趣最接近的K个用户,N(i)是对物品i有过行为的用户集合,wuv
是用户u和用户v的兴趣相似度,rvi代表用户v对物品i的兴趣程度(如用户对电影评分越高,兴趣程度越高)
算法实现:
第一步:建立物品和用户的的倒排索引
推荐算法
第二步:建立用户的共现矩阵C
循环倒排索引,对于同一个商品出现多个用户,用户之间两两关联如对于商品a
对于矩阵C[A][B] 和C[B][A] 都进行 +1

推荐算法
第三步:建立用户相似度矩阵W
通过循环共现矩阵C使用算法:因为C是一个稀疏矩阵,可以只处理不为0数据(可以减少计算量提高速度)
推荐算法
第四步:创建用户和兴趣商品的矩阵(电影可根据评分,电子商务网站商品可以根据购买次数)
第五步:根据推荐算法公司,获取所有商品的推荐得分,给用户推荐推荐得分最高的K个商品

基于商品的协同过滤:
根据商品的相似度进行推荐,给用户推荐和其感兴趣商品最相似的商品
商品相似度算法:
推荐算法
商品i和j相似度为同时喜欢i和j的人数/sqrt(喜欢i的人数 * 喜欢j的人数)
推荐算法:
推荐算法
这里N(u)是用户喜欢的物品的集合,S(j,K)是和物品j最相似的K个物品的集合,wji是物品j和i
的相似度,rui是用户u对物品i的兴趣

算法实现:
第一步:建立用户-商品的倒排索引
推荐算法
第二步:建立商品的共现矩阵C
循环倒排索引,如果一个用户对a和b同时感兴趣,C[a][b] 和 C[b][a]同时加1
推荐算法
第三步:建立商品相似度矩阵W
根据相似度算法计算出商品相似度矩阵W,是一个对称的稀疏矩阵
推荐算法
第四步:创建用户和兴趣商品的矩阵(电影可根据评分,电子商务网站商品可以根据购买次数)
第五步:根据推荐算法公司,获取所有商品的推荐得分,给用户推荐推荐得分最高的K个商品

基于商品协同过滤python实现:https://github.com/zengjianda/item_recommend

基于内容的推荐:
建立商品相似度矩阵W,算法做相关的调整,可以根据商品的内容:如电影同主演或者同导演,淘宝商品可以根据商品的分类,品牌,价格,药品可以根据功能主治,如治感冒的药,可以推荐其他治感冒的药等等,具体做法可以将不同因子用数字表示,进行归一化,然后将商品映射到一个n维空间中的一个点,可以通过k邻近算法,或者cos求得商品之间的相似度

基于机器学习的推荐:
使用机器学习的无监督学习,对用户进行聚类(k-mean),根据用户感兴趣的商品,将用户划分为高档用户,中档用户,抵挡用户,推荐的时候可根据商品的价格寻找合适的人群。这个聚类可以是多维度的,性别:男性,女性,年龄:老人,中年人,年轻人,小孩,对用户进行深层次的画像。这种聚类也适用于商品,商品可以根据:品牌,分类,价格区间等。基于内容的相似,可以使用NLP(自然语言处理)来分析商品内容的相似性。(这里谈到的比较浅显)

混合模型的推荐:
使用混合模型可以将上述推荐算法做一个整合,25%基于用户的协同过滤算法 推荐+ 25%基于商品的协同过滤算法的推荐 + 25%基于内容的算法推荐 + 25%基于机器学习的推荐

推荐算法好文章推荐: