推荐系统中的SVD

本文主要参考:Factorization Meets the Neighborhood: a Multifaceted Collaborative Filtering Model算法

在用户对本身需求相对明确的时候,用搜索引擎很方便的经过关键字搜索很快的找到本身须要的信息。但搜索引擎并不能彻底知足用户对信息发现的需求,那是由于在不少状况下,用户其实并不明确本身的须要,或者他们的需求很难用简单的关键字来表述。又或者他们须要更加符合他们我的口味和喜爱的结果,所以出现了推荐系统,与搜索引擎对应,你们也习惯称它为推荐引擎。网站

推荐系统一般依赖于协同过滤(Collaborative Filtering),从海量数据中发掘出一小部分与你口味相近的产品推荐给你。本文主要介绍协同过滤的两种方式: 隐语义模型(Latent factor models)和邻域模型(neighborhood model).ui

Neighborhood model

首先考虑基于邻域的协同过滤模型, 加入baseline 估计搜索引擎

这是考虑在实际状况下,一个评分系统有些固有属性和用户物品无关,而用户也有些属性和物品无关,物品也有些属性和用户无关。所以,μ为训练集中全部记录的评分的全局平均数,表示网站自己对用户评分的影响。 bu 为用户偏置项,表示在用户评分习惯中和物品无关的因素,若有些用户偏苛刻,广泛评分较低而有些用户比较宽容,评分偏高。 bi 为物品偏置项,表示物品接受评分中和用户无关的因素,例如物品自己质量很高,所以得到评分广泛比较高。google

cij 与 wij 相似,对于两个物品i和j,一个用户u对物品j的正隐性反馈信息会在模型中修正预测值 rui ,给出一个更高的预测值。将这些权值视为baseline的偏移,而非基于用户或者基于项目的系数,便强化了缺失评分值的影响,即用户的预测评分不只与其评分历史数据相关,同时与他未评分的物品相关,特别是那些相对热门,而用户并未评分的物品。例如,假设一个电影评分数据集显示那些对"指环王3"评分较高的用户一般对"指环王1-2"的评分也相对较高,这就使得"指环王3"与"指环王1-2"之间有很高的权值。假设一个用户没有对"指环王1-2"进行评分,那么他对"指环王3"的预测评分会变低,由于相应的权值 cij 在模型中为0。设计

利用这个模型预测出来的值有时候会不怎么精确,即得出来的结果非0即1.为此咱们须要对结果进行平滑处理,以下式:3d

其中R(u)表明显示因子,N(u)是隐式因子,例如R(u)为某用户打过评分的电影,N(u)是某用户看过但没有评分的电影。blog

但若是用户看过不少电影的状况下,对上述模型进行训练,复杂度会增长。而其实咱们能够只保留类似度最高的k部电影来训练,类似度的评估能够用余弦定理求得。获得最终的预测公式:排序

如今使用随机梯度降低(Stochastic gradient descent)来最小化下式索引

其中e_ui是真实值r_ui与预测值的差值。

 

Latent factor model

Latent factor model中比较著名的算法即SVD,对于一个给定的用户行为数据集(数据集包含的是全部的user, 全部的item,以及每一个user有过行为的item列表),使用LFM对其建模后,咱们能够获得以下图所示的模型:

R矩阵是user-item矩阵,矩阵值Rij表示的是user i 对item j的兴趣度,这正是咱们要求的值。对于一个user来讲,当计算出他对全部item的兴趣度后,就能够进行排序并做出推荐。LFM算法从数据集中抽取出若干主题,做为user和item之间链接的桥梁,将R矩阵表示为P矩阵和Q矩阵相乘。其中P矩阵是user-class矩阵,矩阵值Pij表示的是user i对class j的兴趣度;Q矩阵式class-item矩阵,矩阵值Qij表示的是item j在class i中的权重,权重越高越能做为该类的表明。因此LFM根据以下公式来计算用户U对物品I的兴趣度。

咱们在上述式子中加入上文提到的N(u),获得:

这个就是SVD++了,里面的y叫作implicit feedback factor,为这个值的意思google了很久,囧。

 

下面是对于这两种方法的优缺点,英文很差,没法用中文准确的表达出来……。

Neighborhood models are most effective at detecting very localized relationships. They rely on a few significant neighborhood relations, often ignoring the vast majority of ratings by a user. Consequently ,these methods are unable to capture the totality of weak signals encompassed in all of a user's ratings. Latent factor models are generally effective at estimating overall structure that relates simultaneously to most or all items. However, these models are poor at detecting strong associations among a small set of closely related items, precisely where neighborhood models do best.

根据二者的优缺点,咱们把它们联合起来训练获得:

相应的梯度降低:

最后介绍下当前的推荐系统实际应用。

以Amazon为例,做为推荐引擎的鼻祖,它已经将推荐的思想渗透在应用的各个角落。Amazon 推荐的核心是经过数据挖掘算法和比较用户的消费偏好于其余用户进行对比,借以预测用户可能感兴趣的商品。对应于上面介绍的各类推荐机制,Amazon 采用的是分区的混合的机制,并将不一样的推荐结果分不一样的区显示给用户,下凸展现了用户在 Amazon 上能获得的推荐。

 

 

Amazon 利用能够记录的全部用户在站点上的行为,根据不一样数据的特色对它们进行处理,并分红不一样区为用户推送推荐:

今日推荐 (Today's Recommendation For You): 一般是根据用户的近期的历史购买或者查看记录,并结合时下流行的物品给出一个折中的推荐。

新产品的推荐 (New For You): 采用了基于内容的推荐机制 (Content-based Recommendation),将一些新到物品推荐给用户。在方法选择上因为新物品没有大量的用户喜爱信息,因此基于内容的推荐能很好的解决这个"冷启动"的问题。

捆绑销售 (Frequently Bought Together): 采用数据挖掘技术对用户的购买行为进行分析,找到常常被一块儿或同一我的购买的物品集,进行捆绑销售,这是一种典型的基于项目的协同过滤推荐机制。

别人购买 / 浏览的商品 (Customers Who Bought/See This Item Also Bought/See): 这也是一个典型的基于项目的协同过滤推荐的应用,经过社会化机制用户能更快更方便的找到本身感兴趣的物品。

值得一提的是,Amazon 在作推荐时,设计和用户体验也作得特别独到:

Amazon 利用有它大量历史数据的优点,量化推荐缘由。

基于社会化的推荐,Amazon 会给你事实的数据,让用户信服,例如:购买此物品的用户百分之多少也购买了那个物品;

基于物品自己的推荐,Amazon 也会列出推荐的理由,例如:由于你的购物框中有 ***,或者由于你购买过 ***,因此给你推荐相似的 ***。

另外,Amazon 不少推荐是基于用户的 profile 计算出来的,用户的 profile 中记录了用户在 Amazon 上的行为,包括看了那些物品,买了那些物品,收藏夹和 wish list 里的物品等等,固然 Amazon 里还集成了评分等其余的用户反馈的方式,它们都是 profile 的一部分,同时,Amazon 提供了让用户自主管理本身 profile 的功能,经过这种方式用户能够更明确的告诉推荐引擎他的品味和意图是什么。

相关文章
相关标签/搜索