推荐系统 - 基于SVD的协同召回算法

说明

SVD在进行用户i对商品j的评分时,考虑了用户特征向量和商品特征向量,以及评分相对于平均评分的偏置向量。 

数据在https://pan.baidu.com/s/1sQsHUgL__kwWAghe7TvMZA 提取码:18bz 

代码

# -*- coding: utf-8 -*-
import numpy as np
import time
import pickle

class SVD(object):
    """
    核心是:SVD在进行用户i对商品j的评分时,考虑了用户特征向量和商品特征向量,以及评分相对于平均评分的偏置向量。

    发现跟 LFM算法基本是一致的,核心就是下面的式子, 也是通过一定的计算来模拟构建 兴趣矩阵,只不过这里构建矩阵时,要考虑的参数
    包括 U 矩阵参数、M矩阵参数 、bu 、bi 这几种参数,其他都是差不多,  其余就是通过构建兴趣预估后的训练过程,这里正负样例是不需要构建的,
    因为用户的评分值rate是已知的,可以当做标签来使用。

    其实本质上是找到 用户特征矩阵U 、 物品特征向量M,学会对这两个向量的模拟。  这里新加的bi和bu整好应对之前感觉使用坐标来定位感觉信息不够,
    bi和bu是新加的信息,其中bi表示电影i的评分相对于平均评分的偏差,bu表示用户u所做的评分相对于平均评分的偏差,相当于是一种补足信息吧。

        p = self.meanV + self.bu[uid] + self.bi[iid] + np.sum(self.U[uid] * self.M[iid])
    """

    def __init__(self, epoch, eta, user
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值