SiGIR 2014在推荐系统方面收录了三篇很有价值的论文,提出了新的算法框架。在此介绍第一种算法框架(来自论文:Explicit Factor Models for Explainable Recommendation based on Phrase-level Sentiment Analysis,基于短语级情感分析的可解释型推荐模型——显因子模型)。如与本文有不同理解,不吝赐教。
一、概述
       EFM ( Explicit Factor Models,显因子模型),是针对LFM (Latent Factor Models,隐因子模型) 的不足而设计的。
LFM的特点如下:
       a. 通过分类抽象出隐因子空间。在分类过程中,我们不需要关心分类的角度,结果都是基于用户打分自动聚类的。分类的粒度通过设置LFM的最终分类数来控制。
       b. 对于每个物品,并不是明确地划分到某一类,而是计算其属于该类的程度。
       c. 对于每个用户,计算他对每个类的兴趣度。
不足在于:
       <1>单一的打分不能反映用户对物品各项特征的偏好,没有利用到用户评论。
       <2>因为类别是抽象出来的,没有明确的含义,所以向用户推荐物品时,无法解释推荐理由。
EFM的特点如下:
       a. 通过对用户评论进行phrase-level(短语级)的情感分析,显式地抽取物品的特征和用户的意见。
       b. 对于每个物品,计算它对每个特征的包含程度。
       c. 对于每个用户,计算他对每个特征的喜好程度。
       d. 根据用户评论和打分两方面的数据(设置这两者的权重),计算得到用户-物品的喜好程度矩阵。
       e. 向用户推荐购买物品的同时,也建议用户不要购买某些物品。
优点在于:
       <1>充分利用用户评论,提高算法的精准度。
       <2>因为物品的特征已经被显式的抽取出来,所以向用户推荐商品时,可以直观地解释推荐理由。从而帮助用户更快决定是否购买;特别是建议用户不要购买某些物品,有助于提高用户对系统的信任度。
二、EFM算法框架
1. 构建情感词典
       EFM构建词典的过程用下面的例子说明:(有阴影的格子表示用户对该物品进行了评论。)
      首先,从用户评论的语料库抽取物品的特征(或者说,物品的某一方面):screen、earphone。然后,抽取用户对这些特征的意见:perfect、good。如果这些表示意见的词汇本身是积极的情感,则用1表示;反之则用-1表示。所以在这个例子中,情感短语表示为(screen, perfect, 1), (earphone, good, 1),这一条条短语就组成了情感词典。
      根据情感词典,对用户评论进行情感分析,判断用户的情感是肯定的还是否定的。例如:perfect是肯定的,而good是否定的,因为前面加了否定词not。所以,这个例子中,用户的评论就可以表示成特征/情感对:(screen, 1), (earphone, -1)。
      把用户的评论表示为特征/情感对,是构建情感词典的目的。
2. 构建矩阵
       EFM需要构建三个矩阵。
       第一个是用户打分矩阵A,表示第 i 个用户对第 j 个物品打的分数。由于用户不一定对所有物品都打过分数,所以没打分则记为
       第二个是用户-特征关注矩阵X,表示第 i 个用户对第 j 个特征的喜好程度:
其中,N表示用户打分的最高分数(一般为5分)。为了使该矩阵的每个值与用户打分矩阵的值范围都是[1, N],用sigmoid函数规范参数的取值。
       第三个是物品-特征质量矩阵Y,表示第 i 个物品包含第 j 个特征的程度:

其中,k表示第 i 个物品的第 j 个特征被用户提到了几次。k次提到则被表示成k个特征/情感对,计算这k个对的取值(1或-1)的平均值,则为

3.  估计矩阵X、Y、A的缺失值
       矩阵X、Y中的非零数表示已有的用户或物品与特征之间的关系,而则表示尚未清楚的缺失值。为了估计这些缺失值,则采用最优化损失函数的方法。
       损失函数是把一个事件映射能表示与其相关的经济成本或机会成本的实数的一种函数。在统计学中,损失函数经常用来估计参数。损失函数的未知参数用 θ 表示,决策的方案(已获得的实际值)用 d 表示,常见的损失函数有两种:
       二次损失函数: L(θ,d) = c(θ − d)2
       绝对损失函数: L(θ,d) = c |θ − d|

       该算法采用的是二次损失函数。采用最优化损失函数的方法,是指最小化估计值与真实值的差距。所以X、Y的最优化损失函数如下:
与LFM相比,EFM已经抽取出了显式的特征。我们假设一些特征属于某一类型,而用户喜欢这一类型或者物品包含这一类型,由于特征是显式的,因而引入“显因子”的概念。上面表达式中的 r 就是指显因子的数量
      同理,估计打分矩阵A的缺失值也会用到显因子。同时,考虑到用户在打分时还会考虑到其他一些潜在的因素,因此也引入了LFM中用到的隐因子表示隐因子的数量。A的最优化损失函数为:
然后把这两个损失函数合并为:
 ( * )
其中,是防止过拟合的正则化项。
( * )式通过拉格朗日函数和KKT条件的推导后,得到矩阵V、U1、U2、H1、H2的更新公式,如下所示:

设置迭代次数进行迭代,或者在参数收敛后,得到以上5个矩阵的参数值,从而估计X、Y、A的缺失值:


4. Top-K推荐
       矢量的行表示第 i 个用户对每个特征的喜好程度,选取其中参数值最大的k个特征的下标,用表示。然后用以下方法计算第 i 个用户对第 j 个物品的打分:
       其中,,具体的值由实验确定。在大多数打分系统中,最高分数为5,所以N=5。
       最后,选择打分最高的前K个物品推荐给用户,并根据特征向用户解释推荐理由。

EFM (Explicit Factor Models)显因子模型相关推荐

  1. 推荐系统学习笔记之三 LFM (Latent Factor Model) 隐因子模型 + SVD (singular value decomposition) 奇异值分解

    Low Rank Matrix Factorization低阶矩阵分解 在上一篇笔记之二里面说到我们有五部电影,以及四位用户,每个用户对电影的评分如下,?表示未评分. Movies\User User ...

  2. 【转】可解释推荐系统:知其然,知其所以然

    原文标题:"可解释推荐系统:知其然,知其所以然" 原文地址:可解释推荐系统:知其然,知其所以然 又是需要学习的地方 近几年,人工智能的可解释性问题受到了来自政府.工业界和学术界的广 ...

  3. 揭秘可解释推荐系统:知其然,知其所以然

    [导读]单纯的推荐结果和推荐结果+理由的组合,哪个更让你信服?长篇累牍的推荐语和言简意赅的关键词,你更愿意看哪个?这是人们每天都会面对的场景,也是可解释推荐系统研究需要不断优化的问题. 近几年,人工智 ...

  4. Mysql 死锁过程及案例详解之显式与隐式锁Explicit Table Lock Implicit Table Lock

    显式锁Explicit Table Lock与隐式锁Explicit Table Lock 显式锁Explicit Table Lock 显式表锁(Explicit Table Locks)即通过命令 ...

  5. A review of 3D vessel lumen segmentation techniques: Models, features and extraction schemes

    强调方式 粗体:定理或者结论 背景:方法方案 下划线:名词   Vascular diseases are among the most important public health problem ...

  6. 因子模型:套利定价理论APT

    本文是Quantitative Methods and Analysis: Pairs Trading此书的读书笔记. 因子模型(factor models)用来解释资产的风险或者回报的特点.在CAP ...

  7. 石川: 主流多因子模型巡礼

    主流多因子模型巡礼 原创 石川 川总写量化 今天 作者:石川,北京量信投资管理有限公司创始合伙人,清华大学学士.硕士,麻省理工学院博士. 封面来源:https://www.pexels.com 未经授 ...

  8. 股票多因子模型的回归验

    转 股票多因子模型的回归检验 作者:石川,量信投资创始合伙人,清华大学学士.硕士,麻省理工学院博士:精通各种概率模型和统计方法,擅长不确定性随机系统的建模及优化.知乎专栏:https://zhuanl ...

  9. 2018_IJCAI_DELF: a dual-embedding based deep latent factor model for recommendation

    [论文阅读笔记]2018_IJCAI_a dual-embedding based deep latent factor model for recommendation-(IJCAI, 2018.0 ...

  10. C++ explicit关键字详解(用于构造函数)

    C++ explicit关键字详解(用于构造函数) C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生.声明为explicit的构造函数不能在隐式转换中使用. ...

最新文章

  1. 浅析商城网站建设需要注意哪些细节内容呢?
  2. python第三方库numpy-python第三方库之numpy基础
  3. DFS求连通块数目(深搜)
  4. php 降低图像大小,PHP图像重新调整大小
  5. 转 Java jar (SpringBoot Jar)转为win可执行的exe程序
  6. flutter不支持热更新_Flutter 在安卓上可以实现热更新了
  7. html作业本,小鹅通作业本使用教程
  8. 若无云,岂有风——词语语义相似度计算简介
  9. 设计模式之模板模式(模板方法)
  10. 如何学习Java软件开发
  11. Linux运维基础知识
  12. 读《因果的真相》第四章摘抄笔记
  13. 恩尼格玛计划续章…以及,我们正在招贤纳士
  14. 单片机蓝桥杯——超声波测距
  15. 什么是根目录,网站根目录是哪个?
  16. 华为鸿蒙系统是安卓套壳?直接看代码
  17. 基于LCD1602的多功能万年历,温湿度计,非RTC时钟芯片单片机技术
  18. Python PIL Image的使用
  19. RK3288原理图和PCB,RK3288核心板硬件设计资料汇总
  20. 习题4-5 换硬币 将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?

热门文章

  1. MySQL学习笔记:limit
  2. 线程、同步异步、队列
  3. 用 O(1) 时间检测整数 n 是否是 2 的幂次。
  4. 二叉树的非递归遍历(转载)
  5. PL/SQL跨库查询数据
  6. 单元素的枚举类型已经成为实现Singleton的最佳方法
  7. atomikos 异常报错(java.lang.NoSuchMethodException)
  8. C# 使用PrintDocument类打印标签
  9. mybatis中查询时间段内的数据(当只有一个时间字段时)
  10. SqlServer常用对象查询