基于矩阵分解的推荐系统

简介

推荐系统产生推荐列表的方式一般有两种:协同过滤以及基于内容推荐,或者基于个性化推荐。协同过滤方法根据用户历史行为(例如其购买的、选择的、评价过的物品等)结合其余用户的类似决策创建模型。这种模型可用于预测用户对哪些物品可能感兴趣(或用户对物品的感兴趣程度)。基于内容推荐利用一些列有关物品的离散特征,推荐出具备相似性质的类似物品。而本文使用协同过滤的方法来构建整个推荐系统。

推荐方式

  • 根据流行程度函数

    **优势**:可以给使用者推荐一些东西,了解到最新流行动向。
    
    **缺点**:没有表明性,由于这仅仅是该平台的数据集合。推荐的并不符合个性化的需求。
  • 根据我的特征3d

    经过用户信息和商品特征给出推荐。但这每每也有不少问题:用户信息不完善,商品信息不全,给分类的方式带来很大不肯定性。

  • 根据协同过滤code

    这也是今天的主角。首先说说什么是协同过滤:**经过其余人的我的特征,商品的特征,用户和商品的通常化关联关系给用户推荐相应的产品。**举个例子:好比你买了一个手机,那么该平台看看和你类似买了手机的用户都会买哪些东西,而后给你进行推荐。

实现步骤

step 1:

须要根据用户购买的东西和商品对应建一个矩阵:(列为商品,横为用户)blog


问题:一我的可能会购买多件商品这样会产生计算偏差。排序

这时须要对矩阵进行规范化处理(将数据按比例缩放,使之落入一个小的特定区间),引入Jaccard类似性系数:产品


step 2:

将购物历史加入其中,进行权重的计算。假如一名用户买了牛奶和尿布,那么他买湿巾的可能:
方法

最后将加权平均分排序后,便可按排序进行推荐。im


step 3:

现象:对一些产品来讲,用户可能喜欢,可是他用购买记录没办法获得推荐。数据

解决方案: 首先拿已经评价过的商品和用户对应构成以下矩阵(列为商品,横为用户),黑块是已经进行评价的,而白块是评价过的,那么将白块变成黑块即是咱们下面要作的。规范化

为了计算白块,咱们为商品和用户创建向量。而向量里有一系列关于商品和用户特征取值。如一用户喜欢计算机那么他的计算机属性值就较高。而每一个商品也具备计算机的属性值并赋值。

Lu = [ 0.3 0.6 1.6 ... ] --用户取值
Ru = [ 0.6 0.8 4.2 ... ] --商品取值

再对Lu和Ru取点乘,便能取得用户和商品的相关性。以这样的思路咱们便能创建起矩阵因子分解模型(L为用户集合,R为商品的集合,集合的每项便为特征取值):

经过获得模型与商品评价矩阵Rating进行残差平方和来判断模型的好坏。这种预测也仅仅是数据层面上的,下面介绍具体判断模型好坏的参数:召回率和精准度。

用户喜欢的商品而且被展现出来的商品 / 喜欢的商品

用户喜欢的商品而且被展现出来的商品 / 被展现出来的商品

不一样模型获得的不一样函数

相关文章
相关标签/搜索