1. 前期知识 均方根值(RMS)+ 均方根误差(RMSE)+标准差(Standard Deviation)

1、均方根值(RMS)也称作为效值,它的计算方法是先平方、再平均、然后开方。

2、均方根误差,它是观测值与真值偏差的平方和观测次数n比值的平方根,在实际测量中,观测次数n总是有限的,真值只能用最可信赖(最佳)值来代替.方根误差对一组测量中的特大或特小误差反映非常敏感,所以,均方根误差能够很好地反映出测量的精密度。均方根误差,当对某一列进行甚多次的测量时,取这一测量列真误差的均方根差(真误差平方的算术平均值再开方),称为标准偏差,以σ表示。σ反映了测量数据偏离真实值的程度,σ越小,表示测量精度越高,因此可用σ作为评定这一测量过程精度的标准。

3、标准差(Standard Deviation),标准差是方差的算术平方根,也称均方差(mean square error),是各数据偏离平均数的距离的平均数,它是离均差平方和平均后的方根,用σ表示,标准差能反映一个数据集的离散程度。

2.隐语义模型 之通俗理解

一、隐语义模型的基本思想

隐语义模型是近年来推荐系统领域较为热门的话题,它主要是根据隐含特征将用户与物品联系起来。

现从简单例子出发介绍隐语义模型的基本思想。假设用户A喜欢《数据挖掘导论》,用户B喜欢《三个火枪手》,现在小编要对用户A和用户B推荐其他书籍。基于 UserCF(基于用户的协同过滤),找到与他们偏好相似的用户,将相似用户偏好的书籍推荐给他们;基于ItemCF(基于物品的协同过滤),找到与他们 当前偏好书籍相似的其他书籍,推荐给他们。其实还有一种思路,就是根据用户的当前偏好信息,得到用户的兴趣偏好,将该类兴趣对应的物品推荐给当前用户。比 如,用户A喜欢的《数据挖掘导论》属于计算机类的书籍,那我们可以将其他的计算机类书籍推荐给用户A;用户B喜欢的是文学类数据,可将《巴黎圣母院》等这 类文字作品推荐给用户B。这就是隐语义模型,依据“兴趣”这一隐含特征将用户与物品进行连接,需要说明的是此处的“兴趣”其实是对物品类型的一个分类而 已。

二、隐语义模型的数学理解

我们从数学角度来理解隐语义模型。如下图所示,R矩阵是用户对物品的偏好信息(Rij表示的是user i对item j的兴趣度),P矩阵是用户对各物品类别的一个偏好信息(Pij表示的是user i对class j的兴趣度),Q矩阵是各物品所归属的的物品类别的信息(Qij表示的是item j在class i中的权重)。隐语义模型就是要将矩阵R分解为矩阵P和矩阵Q的乘积,即通过矩阵中的物品类别(class)将用户user和物品item联系起来。实际 上我们需要根据用户当前的物品偏好信息R进行计算,从而得到对应的矩阵P和矩阵Q。

三、隐语义模型所解决的问题

从上面的陈述我们可以知道,要想实现隐语义模型,我们需解决以下问题:

如何对物品进行分类,分成几类?

如何确定用户对哪些物品类别有兴趣,兴趣程度如何?

对于一个给定的类,选择这个类中的哪些物品进行推荐,如何确定物品在某个类别中的权重?

对于第一个问题,就是找对应的编辑人进行人工分类,但是人工分类会存在以下问题:

当前的人工分类不能代表用户的意见:比如一本《数据挖掘导论》,从编辑人员的角度看会属于计算机类,但从用户来看,可能会归到数学类;

难以把握分类的粒度:仍以《数据挖掘导论》为例,可分类得粗一点,属于计算机类,也可分得再细一点,属于计算机类别中的数据挖掘类;

难以给一个物品多个类别:一本小说可归为文学类,或言情类等;

难以给出多维度的分类:对物品的分类可从多个角度进行,比如一本书可从内容进行分类,也可从作者角度进行分类;

难以确定一个物品在某一分类中的权重:一个物品可能属于多个类别,但是权重不同;

基于以上局限性,显然我们不能靠由个人的主观想法建立起来的分类标准对整个平台用户喜好进行标准化。隐语义模型是从用户的偏好数据出发进行个性推荐的,即基于用户的行为统计进行自动聚类,所以能解决以上提到的5个问题:

隐语义模型是基于用户的行为数据进行自动聚类的,能反应用户对物品的分类意见;

我们可以指定将物品聚类的类别数k,k越大,则粒度越细;

隐语义模型能计算出物品在各个类别中的权重,这是根据用户的行为数据统计的,不会只将其归到一类中;

隐语义模型得到的物品类别不是基于同一个维度的,维度是由用户的共同兴趣决定的;

四、隐语义模型的样本问题

隐语义模型在显性反馈数据(也就是评分数据)上能解决评分预测问题并达到了很好的精度。不过推荐系统主要讨论的是隐性反馈数据集,这种数据集的特点 是只有正样本(用户喜欢什么物品),而没有负样本(用户对什么物品不感兴趣)。那么,在隐性反馈数据集上应用隐语义模型解决推荐的第一个关键问题就是如何 给每个用户生成负样本。我们发现对负样本采样时应该 遵循以下原则:

对每个用户,要保证正负样本的平衡(数目相似);

每个用户采样负样本时,要选取那些很热门,而用户却没有行为的物品:一般认为,很热门而用户却没有行为更加代表用户对这个物品不感兴趣。因为对于冷门的物 品,用户可能是压根没在网站中发现这个物品,所以谈不上是否感兴趣;

五、隐语义模型的推导思路

隐语义模型是根据如下公式来计算用户U对物品I的兴趣度。

其中,隐语义模型会把物品分成K个类型,这个是我们根据经验和业务知识进行反复尝试决定的,p(u,k)表示用户u对于第k个分类的喜爱程度(1 < k <= K),q(k, i)表示物品i属于第k个分类的权重(1 < k <= K)。

现在我们讨论下如何计算矩阵P和矩阵Q中的参数值。一般做法就是最优化损失函数来求参数。

损失函数如下所示:

上式中的

是用来防止过拟合的正则化项,λ需要根据具体应用场景反复实验得到。损失函数的意义是用户u对物品i的真实喜爱程度与推算出来的喜爱程度的均方根误差,通俗 来说就是真实的喜爱程度与推算的喜爱程度的误差,要使模型最合理当然就是使这个误差达到最小值。公式中最后两项是惩罚因子,用来防止分类数取得过大而使误 差减少的不合理做法的发生,λ参数是一个常数,需要根据经验和业务知识进行反复尝试决定的。

损失函数的优化使用随机梯度下降算法:

1)对两组未知数求偏导数

2)根据随机梯度下降法得到递推公式

其中α是在梯度下降的过程中的步长(也可以称作学习速率),这个值不宜过大也不宜过小,过大会产生震荡而导致很难求得最小值,过小会造成计算速度下降,需要经过试验得到最合适的值。最终会求得每个用户对于每个隐分类的喜爱程度矩阵P和每个物品与每个隐分类的匹配程度矩阵Q。在用户对物品的偏好信息矩阵R 中,通过迭代可以求得每个用户对每个物品的喜爱程度,选取喜爱程度最高而且用户没有反馈过的物品进行推荐。

在隐语义模型中,重要的参数有以下4个:

1)隐分类的个数F;

2)梯度下降过程中的步长(学习速率)α;

3)损失函数中的惩罚因子λ;

4)正反馈样本数和负反馈样本数的比例ratio;

这四项参数需要在试验过程中获得最合适的值.1)3)4)这三项需要根据推荐系统的准确率、召回率、覆盖率及流行度作为参考, 而2)步长α要参考模型的训练效率。

六、优缺点分析

隐语义模型在实际使用中有一个困难,那就是它很难实现实时推荐。经典的隐语义模型每次训练时都需要扫描所有的用户行为记录,这样才能计算出用户对于 每个隐分类的喜爱程度矩阵P和每个物品与每个隐分类的匹配程度矩阵Q。而且隐语义模型的训练需要在用户行为记录上反复迭代才能获得比较好的性能,因此 LFM的每次训练都很耗时,一般在实际应用中只能每天训练一次,并且计算出所有用户的推荐结果。从而隐语义模型不能因为用户行为的变化实时地调整推荐结果 来满足用户最近的行为。

3 隐语义模型算法精讲

p(u,i) 表示user与item对,如果user点击了item,那么p(u,i)就是1,反之为0。模型最终输出user向量和item向量,也就是Pu和Qi,公式中的f表示向量的维度,也就是user对item喜欢与否的影响因素的个数。补充:这个公式是计算用户u对物品i的兴趣度,是一个矩阵的某个值,f为隐藏类别的个数

损失函数:式子中p(u,i)就是我们训练样本的label,也就是说user如果对item进行了点击,那么label就是1,否则 lable就是0,后面这一项就是我们模型预估的user对item的喜好程度,也就是模型产出的参数Pu 与 Qi 转置 的乘积,这里的D是所有的训练样本的集合,我们可以看到如果模型预估的乘积与label越接近的话,损失函数数值越小,反之则越大。第二个式子中,将模型预估的公式按照LFM建模公式展开,是正则化系数,是用来平衡平方损失与正则化项的,正则化目的是为了让模型更加简单化, 防止P(u)和Q(i)过度拟合训练样本中的数据,使模型参数变得复杂,泛化能力减弱。

损失函数对 的偏导数,我们先考第一部分,如果是单一样本的话,我们看到仅与后面一部分有关,因此第一部分我们可以想象成 [y-k(x)]^2 的形式,对x求偏导数,根据复合函数求导的链式法则,得 2[y-k(x)]*(-k)=   -2[y-k(x)]*k  ,p(u,i)就是label,也就是这里的y,最终也能得到,再看后面的正则项,正则项对

求偏导的时候,与是没有关系的,它是常数所以导数为0,而实际上是 [sqrt(pu1^2 +pu2^2+…+puf^2)]^2,也只有puf这一项对puf求偏导的时候是有作用的,也就是

,由于puf和qif是对偶关系,因此可以同理得到损失函数对qif的偏导数。

当我们得到两个偏导数之后,就可以用梯度下降的方法,在每一个样本的时候,对于进行参数的更新,其中为学习率。

下面看一下那些模型的设定会影响最终的结果

基于隐语义模型的个性化推荐算法综述-笔记整理相关推荐

  1. 电商推荐系统(上):推荐系统架构、数据模型、离线统计与机器学习推荐、历史热门商品、最近热门商品、商品平均得分统计推荐、基于隐语义模型的协同过滤推荐、用户商品推荐列表、商品相似度矩阵、模型评估和参数选取

    文章目录 第1章 项目体系架构设计 1.1 项目系统架构 1.2 项目数据流程 1.3 数据模型 第2章 工具环境搭建 2.1 MongoDB(单节点)环境配置 2.2 Redis(单节点)环境配置 ...

  2. 电商推荐系统四: 基于隐语义模型的协同过滤推荐

    四.离线推荐服务建设(基于隐语义模型的协同过滤推荐) 目录 四.离线推荐服务建设(基于隐语义模型的协同过滤推荐) 4.1 离线推荐服务 4.2 离线统计服务 4.3 基于隐语义模型的协同过滤推荐 4. ...

  3. 个性化推荐算法实战第01章个性化推荐算法综述

    文章目录 个性化推荐算法实战第01章个性化推荐算法综述 1.什么是推荐系统? 2.个性化推荐算法在系统中所起到的作用 3.如何衡量个性化推荐算法在产品中起到的作用 4.推荐算法介绍 5.评估指标: 个 ...

  4. 推荐算法!基于隐语义模型的协同过滤推荐之用户商品推荐列表

    项目采用ALS作为协同过滤算法,根据MongoDB中的用户评分表计算离线的用户商品推荐列表以及商品相似度矩阵. 通过ALS训练出来的Model来计算所有当前用户商品的推荐列表,主要思路如下: 1. u ...

  5. 个性化推荐算法 综述

    随着互联网的迅速发展,接入互联网的网页与服务器数量也以指数形式迅猛增长.互联网的发展,使得海量信息以飞快的更新速度在我们眼前不断呈现.例如,卓越亚马逊上存在着上千万的图书,NetFlix上有数万部电影 ...

  6. infoQ推荐算法综述笔记

    推荐系统算法通常是某类推荐模型的实现,它负责获取数据,例如用户的喜好和可推荐项的描述,以及预测给定的用户组会对哪些选项感兴趣. CF的方法大体可分为两类:分别为邻域和基于模型的方法.邻域方法(即基于内 ...

  7. 基于SVD++隐语义模型的信任网络推荐算法

    点击上方蓝字关注我们 基于SVD++隐语义模型的信任网络推荐算法 陈佩武1, 束方兴2 1 平安科技(深圳)有限公司,广东 深圳 518031 2 北京大学互联网研究院(深圳),广东 深圳 51805 ...

  8. Python推荐系统学习笔记(1)基于协同过滤的个性化推荐算法实战---隐语义模型

    一.相关概念: 1.隐语义模型(LFM) 通过矩阵分解建立用户和隐类之间的关系,物品和隐类之间的关系,最终得到用户对物品的偏好关系. 假设我们想要发现 F 个隐类, 我们的任务就是找到两个矩阵 U 和 ...

  9. 推荐系统中的隐语义模型

    使用LFM(Latent factor model)隐语义模型进行Top-N推荐 最近在拜读项亮博士的<推荐系统实践>,系统的学习一下推荐系统的相关知识.今天学习了其中的隐语义模型在Top ...

最新文章

  1. dell服务器清空系统空间,PowerEdge 服务器上的内存配置错误。
  2. 常用的 cocos2d-x 游戏开发工具
  3. JavaScript 32位整型无符号操作
  4. Centos6.9安装部署nginx服务器
  5. NFS服务的配置过程
  6. java.lang.SecurityException: Prohibited package name: java.xxx.xxxx
  7. python编程入门-Python编程入门经典pdf(Python编程入门教程) 高清中文版
  8. ECharts 教程
  9. Sentaurus Process Refinement Boxes
  10. c语言ad转换实验报告,苏州大学实验报告-实验四ad转换模块实验报告
  11. RenderingNG中关键数据结构和它们的角色
  12. 已解决:Navicat 1046 - UDAL - No database selected
  13. 2021-07-28-飞桨课程笔记-关于数据获取途径与处理方面的技巧
  14. Android UI设计 下拉菜单Spinner用法 动态添加删除Spinner菜单项
  15. MQTT-Eclipse paho mqtt重连机制
  16. mathtype中如何添加一个圆圈中间一个减号的符号
  17. Sql 学习查询多种条件(记录自己常用一些方法,本人学习用)
  18. Xtreme9.0 - Mr. Pippo's Pizza 数学
  19. 卡波姆对皮肤的作用副作用_【 卡波姆的副作用】_影响_坏处-大众养生网
  20. 有苦有乐的算法 --- 有序数组中的元素存在问题、最左元素问题和无序数组局部最小问题

热门文章

  1. pywinauto java_Robot Framework + Pywinauto 框架实现Windows GUI Automation
  2. 激光雷达初体验 == 思岚A1M8 + Ubuntu 18.04 + ROS melodic + hector_slam
  3. Centos 7安装 Mysql
  4. 计算机网络:ISO/OSI参考模型和TCP/IP模型
  5. iOS 字典转模型纯swift框架HandyJSON使用实例:本地存取
  6. Zookeeper服务器动态上下线idea上server类中server.regist(args[0])数组越界解决
  7. RFID软件:简介、功能和应用范围
  8. vue-video-player播放m3u8格式的视频
  9. mate40怎么升级鸿蒙系统,怎么升级为鸿蒙系统?
  10. 自学web前端达到什么水平,才能找到工作?