推荐系统应用
- 广告推荐
- 豆瓣电影推荐
- 电商推荐
日常生活中的2种简单的推荐方法
- 第一种就是非定制的推荐系统;
- 第二种就是定制化的推荐系统。
非定制的推荐系统
简单来说就是,什么最热卖,什么关注的人多,就推荐你什么。
定制化推荐系统
协同过滤:(基于统计的算法)
目的:找相似,可以是找相似的人,也可以找相似的东西。
-
比如,我们找到相似的一群人,我们就能用其中一些人喜欢的东西,推荐给另一个人;
-
找相似的东西的,如果一个人喜欢一样东西,那么我再推荐她另一样东西,因为这两样东西很相似。
要实现协同过滤,需要的步骤?
1.收集用户的偏好
2.找到相似的用户或物品
3.计算推荐
用户和物品之间是如何建立关系的?
相似度计算:KNN
(1)欧几里得距离:
(2)皮尔逊相关系数
它是由两个变量的协方差除以两个变量的标准差得到的。
(3)cosine相似性
邻居的选择:
A.固定数量的邻居
5个
B.基于相似度门槛的邻居:
注:b方案比较好。
基于用户的协同过滤
- 相似度计算最好使用皮尔逊相似度
- 考虑共同打分物品的数目,如,乘上min(n,N)/N (n:共同打分数 N:指定阈值)
- 对打分进行归一化处理
- 设定一个相似度阈值
一个人也就买十几件商品,但是商品是上百万的。
基于物品的协同过滤:
基于物品的协同过滤优势:
·计算性能高,通常用户数量远大于物品数量。
·可以预先保留,物品并不善变。
用户冷启动问题:
·引导用户把自己的一些属性表达出来
·利用现有的开放数据平台
·根据用户注册属性
·推荐排行榜单
物品冷启动问题:
·文本分析(描述)
·主机模型
·打标签
·推荐排行榜单
隐语义模型 :
- 从数据出发,进行个性化推荐
- 用户和物品之间有隐含的联系
- 隐含因子人理解有点费劲,让计算机理解就好。
- 将用户和物品通过中介隐含因子联系起来
1、利用隐语义模型主要解决了以下问题
-
分类的可靠性。分类来自对用户行为的统计,代表了用户对物品分类的看法。
-
可控制分类的粒度。允许我们自己指定有多少个隐类。
- 将一个物品多类化。通过统计用户行为来决定某物品在每个类中的权重。
2、通过举例理解隐语义模型
其中P矩阵是user-class矩阵,矩阵值Pij表示的是user i对class j的兴趣度;Q矩阵式class-item矩阵,矩阵值Qij表示的是item j在class i中的权重,权重越高越能作为该类的代表
ToyExample
User-Item Matrix
ToyExample的分解U、V
Class-User Matrix
Class-Item Matrix
注意:每次得到的U、V可能有所不同,原因是初始值是随机的。
ToyExample的预测
Predicted User-Item Matrix
3.隐语义模型定义:
U用户,I物品
隐语义模型求解
隐语义模型负样本选择:
- 对每个用户,要保证正负样本的平衡(数目相似)
- 选取那些很热门,而用户却没有行为的用户
- 对于用户--物品集K{(u,i)}其中如果(u,i)是正样本,则有rui = 1,负样本则rui = 0
隐语义模型参数选择:
- 隐特征的个数F,通常F=100
- 学习速率alpha,别太大
- 正则化参数lambda,别太大
- 负样本/正样本比例ratio
评估标准:
(真实值-预测值)除以所有的
协同过滤VS隐语义
- 原理:协同过滤基于统计,隐语义基于建模
- 空间复杂度,隐语义模型较小
- 实时推荐依旧难,目前离线计算多