推荐算法基础笔记

数据清洗,数据统计和分析;用户长短期兴趣建模,推荐模型优化,在线服务开发;支持业务发展,提升用户效率

能力要求:

 

 

 Chapter 1 

1. 掌握协同过滤算法

2. 熟悉矩阵分解和LFM算法

3. 了解PersonalRank 算法思路

4.比较各算法优缺点并针对场景选型

1. 倒排索引

* 搜索引擎的核心技术之一,其核心目的是从大量文档中查找包含某些词的文档集合,并在O(1) 或 O(logn)的时间复杂度完成

* 一般过程:

 *  其中第二步 是 去除词条中的 无关词(停顿词) ,因为其对文章含义没影响

举例:有这样几个文章

 首先通过 NLP  相关工具 将上面的内容  分词,得到词条:

 将其中的 无关词  (与、的、之...)去掉,并建立索引映射:

 当用户搜索某一个词条,系统就能给出 对应文章

* 基础推荐模型:--词频-逆文档频率(TF- IDE):

对每个文档采用 词袋(BOW)以向量方式描述文档,方便进行相似性度量

a = (x1, x2,x3,x4,...xn)

 TF : b = (1,.........,m)      表示对应的 词 出现的频率

IDF(m) = log( N / DF(m) )             N: 总的文章数量; m: 对应词条的出现频率

 即,当 某一词条出现频率和文章数相同时,IDF值就小(某一词条对推荐文章的贡献力)

2. 基于邻域的推荐算法

2.1  UserCF 算法(基于用户的协同过滤) :

1. 找到和目标用户兴趣相似的用户集合(描述用户相似性)

2. 将相似用户喜欢的,且 目标用户没有听过的物品推荐给目标用户(根据相似性做推荐)

2.1.1  计算相似性

 分子: 目标用户和兴趣相似用户 喜爱物品的交集;  分母: 目标用户和兴趣相似用户 喜爱物品的并集

 两个公式 用来描述  两个用户之间的  相似性

举例:

 

存在问题:

1.   用户间产生交集的物品少, 怎么办?

* 建立倒排表,减小计算量

 

 *  建立倒排表后,得到共性矩阵 ,再通过  上述两个公式 计算相似性

2.  热门物品不能差异化地度量 人之间的相似性

IIF(逆物品频率)

         相似性计算: N(i) : 物品 i 被人喜欢的次数,相当于 TF(词频);当它大的时候,权重(相似性就越小)

2.1.2   根据相似度推荐 ( P(u,i):  将物品 i 推荐给 用户U 

找出  与 用户 U 相似度 排名前K的 ,并且含有物品 i 的用户 ; 

Wuv :上面计算的共性矩阵的W的值; Rvi:  用户v 对物品 i 的喜爱程度

2.2  ItermCF 算法(基于物品的协同过滤) :

1.定义:  一种通过分析用户行为记录,计算物品之间的相似度,并进行推荐的方法

2.过程:

一个喜欢物品 i 用户,同时还喜欢物品 j 的程度(即 物品间的相似度

举例:

计算好两物品间的相似性;接下来就是要  推荐

Pu,j: 与用户 U 喜欢的物品 i 中 相似的前K个物品 j ;累加:物品i、j 相似的权重 * 用户U对 i 的喜爱程度

存在问题:(优化:IUF)

 N(u): 用户U喜欢多少物品。  若他喜欢的物品很多,说明他活跃度很高,他喜欢的物品间相似性度量不具代表性。

总结:  UserCF   : 给用户推荐   跟他兴趣爱好相似的用户  喜欢的物品

             ItemCF   : 给用户推荐   他之前喜欢物品  的相似物品。

3. 隐语义模型(LFM):

---------基于兴趣分类的方法,可以对物品的兴趣进行分类。对于某个用户,首先得到他的兴趣分类,然后从分类中挑选他可能喜欢的物品。

3.1 矩阵分解模型

  

 

 用户对k个不同类别的喜好程度   *  物品 i 属于这个类别的概率;   

   为解决上问题  , 我们从数据出发,  确定某个物品属于哪一类, 以及确定 分成哪几类(k)

对于数据:

以 用户 有过行为的物品为正样本,没有过行为的物品为负样本,进行训练

 进行样本选择的代码:  在一个样本池中, 随机选取是负样本的样本

 

得到数据后,就要进行模型训练

 得到损失函数 C 后对 p、q求偏导,  然后对参数 α 更新;最后得到训练好的 p 、q , 然后即可用训练好的模型进行预估

代码实现:

4 、基于图的模型

 

5 基础推荐算法下

 

  • 38
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值