带偏置的矩阵分解

一、基本概念

  基本的矩阵分解方法通过学习用户和物品的特征向量进行预测,即用户和物品的交互信息。用户的特征向量代表了用户的兴趣,物品的特征向量代表了物品的特点,且每一个维度相互对应,两个向量的内积表示用户对该物品的喜好程度。但是我们观测到的评分数据大部分都是都是和用户或物品无关的因素产生的效果,即有很大一部分因素是和用户对物品的喜好无关而只取决于用户或物品本身特性的。例如,对于乐观的用户来说,它的评分行为普遍偏高,而对批判性用户来说,他的评分记录普遍偏低,即使他们对同一物品的评分相同,但是他们对该物品的喜好程度却并不一样。同理,对物品来说,以电影为例,受大众欢迎的电影得到的评分普遍偏高,而一些烂片的评分普遍偏低,这些因素都是独立于用户或产品的因素,而和用户对产品的的喜好无关。

二、模型

  我们把这些独立于用户或独立于物品的因素称为偏置(Bias)部分,将用户和物品的交互即用户对物品的喜好部分称为个性化部分。事实上,在矩阵分解模型中偏好部分对提高评分预测准确率起的作用要大大高于个性化部分所起的作用,以Netflix Prize推荐比赛数据集为例为例,Yehuda Koren仅使用偏置部分可以将评分误差降低32%,而加入个性化部分能降低42%,也就是说只有10%是个性化部分起到的作用,这也充分说明了偏置部分所起的重要性,剩下的58%的误差Yehuda Koren将称之为模型不可解释部分,包括数据噪音等因素。

  偏置部分表示为

  偏置部分主要由三个子部分组成,分别是

  • 训练集中所有评分记录的全局平均数μ,表示了训练数据的总体评分情况,对于固定的数据集,它是一个常数。
  • 用户偏置bu,独立于物品特征的因素,表示某一特定用户的打分习惯。例如,对于批判性用户对于自己的评分比较苛刻,倾向于打低分;而乐观型用户则打分比较保守,总体打分要偏高。
  • 物品偏置bi,特立于用户兴趣的因素,表示某一特定物品得到的打分情况。以电影为例,好片获得的总体评分偏高,而烂片获得的评分普遍偏低,物品偏置捕获的就是这样的特征。

  以上所有偏置和用户对物品的喜好无关,我们将偏置部分当作基本预测,在此基础上添加用户对物品的喜好信息,即个性化部分,因此得到总评分预测公式如下:

  其中最后一项即为我们预测模型中的个性化部分,花括号部分为偏置部分,两个部分相加即得到最终预测评分。

  模型训练过程中仍采用平方误差作为损失函数,优化函数表示如下:

  优化以上函数,分别获得用户特征矩阵P、物品特征矩阵Q、各用户偏置bu各物品偏置bi,优化方法仍可采用交叉最小二乘或随机梯度下降。

三、总结

  数据集偏置:数据总体评分情况

  用户偏执:用户的评分习惯

  物品偏置:垃圾篇评分偏低,好的偏高。

  偏置加上PQ的内积就是预测分数。

时间: 2024-10-14 09:48:18

带偏置的矩阵分解的相关文章

推荐系统中的矩阵分解演变方式

推荐算法主要分为基于内容的算法和协同过滤. 协同过滤的两种基本方法是基于邻居的方法(基于内容/物品的协同过滤)和隐语义模型. 矩阵分解乃是实现隐语义模型的基石. 矩阵分解根据用户对物品的评分, 推断出用户和物品的隐语义向量, 然后根据用户和物品的隐语义向量来进行推荐. 推荐系统用到的数据可以有显式评分和隐式评分. 显式评分时用户对物品的打分, 显式评分矩阵通常非常稀疏. 隐式评分是指用户的浏览, 购买, 搜索等历史记录, 表示的是用户行为的有无, 所以是一个密集矩阵. 1. 基本矩阵分解 矩阵分

矩阵分解在协同过滤推荐算法中的应用

在协同过滤推荐算法总结中,我们讲到了用矩阵分解做协同过滤是广泛使用的方法,这里就对矩阵分解在协同过滤推荐算法中的应用做一个总结.(过年前最后一篇!祝大家新年快乐!明年的目标是写120篇机器学习,深度学习和NLP相关的文章) 1. 矩阵分解用于推荐算法要解决的问题 在推荐系统中,我们常常遇到的问题是这样的,我们有很多用户和物品,也有少部分用户对少部分物品的评分,我们希望预测目标用户对其他未评分物品的评分,进而将评分高的物品推荐给目标用户.比如下面的用户物品评分表: 用户\物品 物品1 物品2 物品

推荐系统的各个矩阵分解模型1

推荐系统的各个矩阵分解模型 1. SVD 当然提到矩阵分解,人们首先想到的是数学中经典的SVD(奇异值)分解,直接上公式: $$ M_{m \times n}=U_{m \times k} \Sigma_{k \times k} V_{k \times n}^{T} $$ 原理和流程 当然SVD分解的形式为3个矩阵相乘 左右两个矩阵分别表示用户/项目隐含因子矩阵 中间矩阵为奇异值矩阵并且是对角矩阵,每个元素满足非负性,并且逐渐减小 目的 推荐好 计算得到三个矩阵 左右两个矩阵分别表示用户/项目隐

推荐系统的各个矩阵分解模型

# 推荐系统的各个矩阵分解模型 ## 1. SVD 当然提到矩阵分解,人们首先想到的是数学中经典的SVD(奇异值)分解,直接上公式:$$M_{m \times n}=U_{m \times k} \Sigma_{k \times k} V_{k \times n}^{T}$$ - 原理和流程 - 当然SVD分解的形式为3个矩阵相乘 - 左右两个矩阵分别表示用户/项目隐含因子矩阵 - 中间矩阵为奇异值矩阵并且是对角矩阵,每个元素满足非负性,并且逐渐减小- 目的 - 推荐好 - 计算得到三个矩阵 -

矩阵分解

矩阵分解在推荐系统中的应用 浅谈矩阵分解在推荐系统中的应用 SVD在推荐系统中的应用 用于推荐系统的一种矩阵分解库:LibMF 基于矩阵分解的推荐算法,简单入门 - kobeshow

ALS矩阵分解推荐模型

其实通过模型来预测一个user对一个item的评分,思想类似线性回归做预测,大致如下 定义一个预测模型(数学公式), 然后确定一个损失函数, 将已有数据作为训练集, 不断迭代来最小化损失函数的值, 最终确定参数,把参数套到预测模型中做预测. 矩阵分解的预测模型是: 损失函数是: 我们就是要最小化损失函数,从而求得参数q和p. 矩阵分解模型的物理意义 我们希望学习到一个P代表user的特征,Q代表item的特征.特征的每一个维度代表一个隐性因子,比如对电影来说,这些隐性因子可能是导演,演员等.当然

基于One-Class的矩阵分解方法

在矩阵分解中. 有类问题比較常见,即矩阵的元素仅仅有0和1. 相应实际应用中的场景是:用户对新闻的点击情况,对某些物品的购买情况等. 基于graphchi里面的矩阵分解结果不太理想.调研了下相关的文献,代码主要实现了基于PLSA的分解方法,具体请參考后面的參考文献 #!/usr/local/bin/python #-*-coding:utf-8-*- import sys import math import numpy as np import string import random "&q

【机器学习】K-Means 聚类是特殊的矩阵分解问题

[机器学习]K-Means 聚类是特殊的矩阵分解(Matrix Factorization)问题 原文是:<k-Means Clustering Is Matrix Factorization> 本博客是该论文的阅读笔记,不免有很多细节不对之处. 还望各位看官能够见谅,欢迎批评指正. 更多相关博客请猛戳:http://blog.csdn.net/cyh_24 如需转载,请附上本文链接:http://blog.csdn.net/cyh_24/article/details/50408884 论文

NMath矩阵分解的两种方式

概述:本教程为您介绍.Net唯一的数学与统计学运算库NMath,实现矩阵分解的两种方法. Nmath中包括用于构造和操作矩阵QR和奇异值分解的分解类.QR分解如下表示: 1 AP=QR 其中P是一个可置换矩阵,Q是正交的,且R为上梯形.矩阵A的奇异值分解(SVD)的形式表示为: 1 A=USV* 其中U和V是正交的,S是对角的,和V *表示一个真正的矩阵V或一个复杂的矩阵V的条目沿对角线S的共轭转置的奇异值. 接下来带来一个矩阵分解类的实例,下面代码示例为从FloatMatrix创建FloatQ