博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
推荐系统初探
阅读量:4068 次
发布时间:2019-05-25

本文共 2221 字,大约阅读时间需要 7 分钟。

推荐系统样例:

  • 基于对用户兴趣的预测结果,为读者推荐新闻报道、短视频等。(如:今日头条)
  • 基于顾客过去的购物或商品搜索历史,为在线商店的顾客推荐他们可能要买的商品。(如:亚马逊)

长尾:实体店的货架空间有限,只能给顾客展示所有存在商品的很小一部分,而在线商店能展示任何可用商品

—— 在线销售商对于传统实体销售商的优势。 同样,也是由于长尾的存在,信息爆炸,人们无法看到所有的东西,推荐系统发挥作用。

推荐系统中,用户(user)对物品(item)的偏好信息通过效用矩阵(utility matrix)表示。信息的获取方式:

  • 用户对物品评级:商品评价、电影打分等
  • 根据用户的行为推理:观看、阅读、购买、添加购物车等

基于内容(Content-based)的推荐

推荐系统面临的一个问题就是如何在缺乏数据时给出好的推荐,这称为冷启动(cold-start)。

可以将推荐看成搜索,这就可能会使用所需要推荐的物品的属性,可以使用属性作为相似度计算所需的数据,这称为基于内容的推荐

基于内容的系统集中关注物品的属性。物品之间的相似度通过计算它们的属性之间的相似度来确定,需要为每个物品构造特征。举例如电影的明星、导演、年份、流派等。

基于协同过滤(collaborative filtering)的推荐系统

不是利用专家给出的属性来描述物品来计算相似度,转而利用用户对物品的意见来计算相似度。协同过滤不是关心物品的描述属性,而是按照许多用户的观点来计算相似度

相似度计算:见距离计算Blog

  • 相似度 = 1 / (1 + 欧式距离)
def eulidSim(inA, inB):    return 1.0 / (1.0 + np.linalg.norm(inA - inB))
  • 皮尔逊相关系数(Pearson correlation)
def pearsonSim(inA, inB):    if len(inA) < 3:        return 1.0    return 0.5 + 0.5 * np.corrcoef(inA, inB, rowvar=0)[0][1]
  • 余弦相似度(cosione similarity)
def cosineSim(inA, inB):    return 0.5 + 0.5 * (float(np.dot(inA, inB)) / (np.linalg.norm(inA) * np.linalg.norm(inB)))

相似性度量的选择

  • 当您的数据受用户偏好/用户的不同评分尺度影响时,请使用皮尔逊相似度(适合矩阵中仅由0和1组成)
  • 如果数据稀疏,则使用余弦(许多额定值未定义)
  • 如果您的数据不稀疏并且属性值的大小很重要,请使用欧几里得(Euclidean)。
  • 建议使用调整后的余弦(Adjusted Cosine Similarity)进行基于商品的方法来调整用户偏好。
  • 进行相似度度量时,可以选择对数据进行舍入处理或者评分归一化(即将每个评分减去某个用户的平均评分值)

内存方法(Memory-based)

基于用户的协同过滤

通过用户对物品的偏好来计算用户之间的相似度(与某用户相似的用户所喜欢的项会推荐给该用户)。

基于物品的协同过滤

通过喜欢物品的用户来计算物品之间的相似度。

UserCF和ItemCF比较与选择:

基于物品的相似度计算的时间会随物品数量的增加而增加,基于用户的相似度计算的时间则会随用户数量的增加而增加。如果商品数目比较少,用户的数目很多,可能倾向于基于物品相似度的计算方法(大部分产品导向的推荐引擎)。

模型方法(Model-based)

利用矩阵分解(Matrix factorization)提高推荐的效果

SVD分解

SVD分解会降低程序的速度,SVD分解可以在程序调入时运行一次。在大型系统中,SVD每天运行一次或者其频率更低,并且还要离线运行。

SVD++算法

协同关系矩阵

  • (rua)UA ( r u a ) U ∏ A :每个元素 rua r u a 表示 u u
    a
    上的交互强度
  • 此矩阵的大多数元素为未知,推荐算法的目标就是预测这些位置上的强度值(对比:Topic Model)

minb(u,a)K(ruaμbubapTuqa)2+λ||||2 m i n b ∑ ( u , a ) ∈ K ( r u a − μ − b u − b a − p u T q a ) 2 + λ | | ⋅ | | 2

上式: μ μ 为全局偏置, bu b u 为u的偏差, ba b a a a 的偏差,

p
u
u u 的描述,
q
a
a a 的描述。

  • 矩阵分解方法,比SVD在处理未知元素上更合理,同时在矩阵稀疏时计算速度快
  • 无法直接处理新出现的
    u
    a a
  • 在Netflix电影推荐项目上取得了很好的效果
UV分解

M
n
×
m
=
U
n
×
d
V
d
×
m

推荐系统的评价

通用的一个指标:均方根误差(Root-Mean-Square Error, RMSE)

《推荐系统实战》

《Machine Learning in Action》 P253 14.1.2

《Mining of Massive Datasets》 9 P227

转载地址:http://gioji.baihongyu.com/

你可能感兴趣的文章
is not in the sudoers file. This incident will be reported.
查看>>
win7 Centos 双系统的时间问题
查看>>
CentOs安装无线网卡后,一段时间后不用,网络自动断开的解决办法
查看>>
Centos 成功安装NTFS-3G
查看>>
Linux下tar.xz结尾的文件的解压方法
查看>>
yum install vlc
查看>>
Java技术路线图
查看>>
Java学习的30个目标
查看>>
Spring2.5+MINA2搭建Socket Server
查看>>
jcharts画线图,饼图和柱状图
查看>>
DOS 命令大全
查看>>
linux nc 端口转发
查看>>
less 快速入门(一)
查看>>
less语言特性(二)
查看>>
less函数手册(三)
查看>>
less入门教程一
查看>>
less入门教程二
查看>>
less入门教程三(函数手册)
查看>>
监控服务器端口,Down掉会自动重启,并发送邮件 Linux Shell
查看>>
git clone 地址 时,出现错误解决方案
查看>>