5分钟了解推荐系统算法

1. 推荐系统的种类

在互联网发达的今天,推荐系统已经成为了不少互联网产品的重要组成部分,甚至是不可获取的一部分。那么推荐系统在这些互联网产品中到底做了些什么。推荐系统实则是一个信息处理系统,主要用于预测用户偏好。推荐系统的可以通过不同的方向给用户做出推荐。推荐系统大致分为:人工推荐系统,聚合推荐系统,个性化推荐系统。

人工推荐系统就是人工将推荐内容加到网站或者APP的首页或者其他目标位置。它听起来是是比较过时,但是现在很多的软件也会结合人工的方式将内容推荐给用户。这种方法所推荐的内容和用户的喜好没有直接的关系。比如新闻网站可能会将今日的重大事件推荐给用户,即便这个重大事件和用户的爱好没有丝毫关系。

第二种推荐系统的种类是聚合推荐系统,常见的聚合推荐系统,比如KTV的点歌单等,票房排行榜等。所谓的聚类模型就是将N个用户分成Q个类别,然后新的用户与Q个类别做计算,根据用户所属的类别进行推荐。这样的做法往往找不到最相似的用户,推荐效果较差。

第三种就是个性化的推荐系统,推荐内容完全根据用户的个人爱好产生。本文接下来所记录的算法都是个性化推荐系统的算法。

推荐系统存在着挑战?
数据收集是建立一个优秀推荐系统的一大挑战。首先数据的收集是有时效性的。如果数据的时间跨度过大会导致推荐系统的性能出现问题。而数据的收集往往也是困难重重。数据的收集分为显性和隐性两种。所谓的显性收集,就是从用户的正面或者负面反馈中收集信息。比如,一个用户给一部电影打了5分说明该用户对这部电影十分喜爱,反之,这说明用户不太喜欢这部电影。隐性收集是从用户的行为动作中获取用户是否喜欢一个物品。还是拿电影来举例子,如果用户没有正面或者负面的反馈,但是这名用户反复的观看这部影片,而且每一次都没有快进,可以说明这名用户对这一部电影持有正面的评价,相反如果用户在观看这部电影的时候,一直快进说明用户可能对这部电影不太感兴趣,这就是所谓的隐性收集。

除此之外,也可以使用已经收集到的数据去预测那些未知的数据,这也是数据收集的一种方式,但是问题在于,已经收集到的数据往往都很稀疏。我们这样想,一个电影网站的电影可能多达几十万部,但是一个正常用户看过的电影可能也就几百部。所以这样的一个数据集多数的位置都是0。所以用少量的已知数据去预测大量的未知数据,不太可行。

另外,冷启动问题也是推荐系统的遇到的一个挑战。推荐系统通常是根据相似度来进行推荐,但是万一是一个新的用户或者是一个新的商品,它们没有和其他的商品或者用户产生过交互。

2. 推荐系统常见算法

推荐系统的算法有很多种,每一种都可以考虑成是一种不同的策略。
首先最容易理解的一种算法就是基于内容的推荐方法。所谓基于内容的推荐算法就是,计算内容之间的相似度来进行推荐。比如,一个用户给一部电影,推荐系统就会根据内容的特点,比如电影的种类,演员导演等,为用户进行推荐。这样的推荐系统有一个缺点,就是推荐的内容没有多样性,比如用户A给一部威尔史密斯的科幻片评了5星,那么系统会一直给用户推荐威尔史密斯的科幻片。

第二种推荐系统算法是协同过滤算法。与基于内容的推荐算法不同的是协同过滤算法推荐的内容和内容本身的关系并不大。该算法是根据用户与物品之间的行为交互作出的推荐。比如,现在有ABC三个用户和abc三个商品,如果用户A与B都购买了商品a,系统也会给用户C 推荐商品a。通常我们可以将矩阵分解和协同过滤结合起来理解。但是这里所说的矩阵分解并不是严格意义上数学定义的矩阵分解,因为数学上定义的矩阵分解,矩阵不可以是稀疏矩阵。

第三种常见的推荐算法叫做因子分解机。它主要考虑的是特征与特征之间的相关性,它主要的优点是在面对稀疏矩阵的时候也可以有比较好的学习能力,这一点是SVM做不到的。因子分解机的可以被定义为:
在这里插入图片描述
其中 w i w_i wi是每一个特征的权重, x i x j x_ix_j xixj是在做feature crossing,相当于笛卡尔积, v i ⋅ v j v_i \cdot v_j vivj也可以理解成是 x i x j x_ix_j xixj的权重,他代替了原本的权重 w i j w_{ij} wij,因为将所有的特征进行笛卡尔积之后的维度是很大的,如果每一个特征都要给一个权重,那么这个权重矩阵就会非常大。通常,参数越多就需要越大的数据集来进行训练,但是恰好,所收集到的数据往往是很稀疏的数据,所以这里使用了 v i v j v_i v_j vivj两个向量的点积来代替原本的权重矩阵。

深度学习是推荐系统的基石。现在的主流推荐系统都会借用深度学习的力量。很经典的一个使用深度学习方式的推荐系统,就是谷歌的wide & deep 模型。其网络结构如下。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值