推荐系统入门实践系列

推荐系统入门实践(一)

《动手深度学习》第二版,推荐系统章节的个人理解以及pytorch代码实现。

李沐大神的《动手深度学习》第二版已经在更新了,目前只有英文版。并且推荐系统章节只有mxnet实现,这是本人看完之后的理解以及自己写的pytorch代码实现。代码和mxnet版本大部分相同,有兴趣的可以看一看。



前言

对于推荐系统入门而言,本文不会过多的对协同过滤、召回、排序等概念进行强调。更多的是从推荐二字直观的概念上进行讲解,比较适合入门者学习。


一、什么是推荐?

如果以商品为例,推荐简单来说就是从海量商品中选出用户可能喜欢的少量商品并呈现给用户。这一过程是一个双向共赢的过程,对用户可以节约时间,对企业可以增加商品购买率。那么如何进行推荐系统的设计?
如果你对词嵌入/词向量的概念有所了解的话可能会有一个不错的想法。我们可以将每一个用户用一个 k k k维向量 u ∈ R k u\in\mathbb R^k uRk表示,每一个商品用一个 k k k维向量 i ∈ R k i\in\mathbb R^k iRk表示。然后对 k k k i i i做内积,如果结果比较大那么可以将该商品推荐给用户,否则就不推荐。事实上,这种思想就是矩阵分解,也是我们首先要说的推荐算法思想。

下面考虑如何找出这些用户向量和商品向量。

二、协同过滤和矩阵分解

假设用户的数量为 m m m, 商品的数量为 n n n。那么我们需要找出的就是用户矩阵 P ∈ R m × k P\in\mathbb R^{m \times k} PRm×k和商品矩阵 Q ∈ R n × k Q\in\mathbb R^{n \times k} QRn×k P P P矩阵的第 i i i u i u^i ui代表第 i i i个用户的向量。 Q Q Q矩阵的含义同理。下面讲述具体方法。

1.协同过滤

在讲解协同过滤的概念之前我们首先要有一个假设:每一个用户都对一小部分商品做出过分数评价,每一件商品都被一小部分用户评价过。

根据假设我们可以得到一个以用户为行以商品为列的共现矩阵 M a t r i x ∈ R m × n Matrix\in\mathbb R^{m \times n} MatrixRm×n,如果用户 u u u评价过商品 i i i就将 M a t r i x [ u ] [ i ] Matrix [u][i] Matrix[u][i]设为具体的评分值,否则置为0(含义是未知)。很明显该 m × n m \times n m×n矩阵只有一小部分非零元素。而协同过滤的思想就是用这一小部分的非零元素推出 M a t r i x Matrix Matrix矩阵的未知元素。这是一个协同大家的反馈、评价和意见对海量信息进行过滤的过程,因此被称为协同过滤。

2.矩阵分解

了解了协同过滤的概念之后让我们回到最初的问题。我们的目的是找出代表用户们喜好的用户矩阵 P ∈ R m × k P\in\mathbb R^{m \times k} PRm×k和商品矩阵 Q ∈ R n × k Q\in\mathbb R^{n \

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值