推荐系统 recommender system

本文深入探讨了协同过滤推荐系统的原理及应用。通过数学模型详细解释了如何通过用户历史评分预测其对未接触商品的喜好程度,利用特征向量和喜好程度矩阵优化推荐精度。适用于电商、影视等领域个性化推荐。

使用场景

消费者C={user1,user2,user3,…,usernu}C=\{user_1,user_2,user_3,\dots,user_{n_u}\}C={user1,user2,user3,,usernu},一共有nun_unu个样本

商品G={prod1,prod2,…,prodnp}G=\{prod_1,prod_2,\dots,prod_{n_p}\}G={prod1,prod2,,prodnp},一共有npn_pnp个样本

消费者对商品的评分如下表:

user1user_1user1user2user_2user2user3user_3user3…\dotsusernuuser_{n_u}usernu
prod1prod_1prod1r1,1r_{1,1}r1,1r1,2r_{1,2}r1,2r1,3r_{1,3}r1,3…\dotsr1,nur_{1,n_u}r1,nu
prod2prod_2prod2r2,1r_{2,1}r2,1r2,2r_{2,2}r2,2r2,3r_{2,3}r2,3…\dotsr2,nur_{2,n_u}r2,nu
…\dots
prodnpprod_{n_p}prodnprnp,1r_{n_p,1}rnp,1rnp,2r_{n_p,2}rnp,2rnp,3r_{n_p,3}rnp,3…\dotsrnp,nur_{n_p,n_u}rnp,nu

描述商品i在某特征的符合程度xi=[f1,f2,…,fm]T(m×1)x_i=[f_1,f_2,\dots,f_m]^T \quad(m \times 1)xi=[f1,f2,,fm]T(m×1)
消费者j对某个特征的喜好程度θj=[θ1,θ2,…,θm]T(m×1)\theta_j=[\theta_1,\theta_2,\dots,\theta_m]^T \quad (m\times 1)θj=[θ1,θ2,,θm]T(m×1)

特征的维数m将会在后面说到。

对于某个商品i,消费者j对其评分ri,jr_{i,j}ri,jxi,θjx_i,\theta_jxi,θj来决定,即
ri,j=θjTxi r_{i,j}=\theta_j^Tx_i ri,j=θjTxi

协同过滤算法

协同过滤算法的思想是对某种特征的喜好相同(比如都喜欢动作电影)的消费者,对在某种特征上比较契合的商品上评价也应趋于一致(对于新出的动作电影评分都可能较高)

  • 设置mmm个特征,f1,f2,…,fmf_1,f_2,\dots,f_mf1,f2,,fm,比如电影的浪漫程度,暴力程度,喜剧程度等等,这些特征不用手工提取,只需要确定m的大小,特征的具体值将会由算法学习得出。

  • 对于nun_unu个消费者,npn_pnp个商品,我们先初始化两个数据集:

    X={x1,x2,…,xnp}X=\{x_1,x_2,\dots,x_{n_p}\}X={x1,x2,,xnp}

    Θ={θ1,θ2,…,θnu}\Theta=\{\theta_1,\theta_2,\dots,\theta_{n_u}\}Θ={θ1,θ2,,θnu}

    随机赋一些较小的值。

协同过滤算法的基本思路是:同时优化X,ΘX,\ThetaX,Θ,优化目标如下:

J(x1,…,xnp,θ1,…,θnu)=12∑(i,j):r(i,j)=1(θjTxi−yi,j)2+λ2∑i=1np∑k=1m(xik)2+∑j=1nu∑k=1m(θjk)2 J(x_1,\dots,x_{n_p},\theta_1,\dots,\theta_{n_u})=\frac{1}{2}\sum_{(i,j):r(i,j)=1}(\theta_j^Tx_i-y_{i,j})^2+\frac{\lambda}{2}\sum_{i=1}^{n_p}\sum_{k=1}^{m}(x_i^{k})^2 +\sum_{j=1}^{n_u}\sum_{k=1}^m(\theta_j^k)^2 J(x1,,xnp,θ1,,θnu)=21(i,j):r(i,j)=1(θjTxiyi,j)2+2λi=1npk=1m(xik)2+j=1nuk=1m(θjk)2
注意,这时候就不需要加上恒为1的偏差(如之前的x0=1,θ0=1x_0=1,\theta_0=1x0=1,θ0=1),这时x∈Rm,θ∈Rmx \in \mathbb{R}^m,\theta \in \mathbb{R}^mxRm,θRm

  • 使用梯度下降等方法进行优化,对i=1,2,…,np;j=1,2,…,nu;k=1,2,…,mi=1,2,\dots,n_p;j=1,2,\dots,n_u;k=1,2,\dots,mi=1,2,,np;j=1,2,,nu;k=1,2,,m
    xik=xik−α(∑j:r(i,j)=1(θjTxi−yi,j)2+λik)θjk=θjk−α(∑i:r(i,j)=1(θjTxi−yi,j)2+λik) x_i^k=x_i^k-\alpha(\sum_{j:r(i,j)=1}(\theta_j^Tx_i-y_{i,j})^2 +\lambda_i^k)\\ \theta_j^k=\theta_j^k-\alpha(\sum_{i:r(i,j)=1}(\theta_j^Tx_i-y_{i,j})^2 +\lambda_i^k) xik=xikα(j:r(i,j)=1(θjTxiyi,j)2+λik)θjk=θjkα(i:r(i,j)=1(θjTxiyi,j)2+λik)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值