推荐系统

浅谈矩阵分解在推荐系统中的应用

纵饮孤独 提交于 2020-01-22 21:43:59
  为了方便介绍,假设推荐系统中有用户集合有6个用户,即U={u1,u2,u3,u4,u5,u6},项目(物品)集合有7个项目,即V={v1,v2,v3,v4,v5,v6,v7},用户对项目的评分结合为R,用户对项目的评分范围是[0, 5]。R具体表示如下: 推荐系统的目标就是预测出符号“?”对应位置的分值。推荐系统基于这样一个假设:用户对项目的打分越高,表明用户越喜欢。因此,预测出用户对未评分项目的评分后,根据分值大小排序,把分值高的项目推荐给用户。怎么预测这些评分呢,方法大体上可以分为基于内容的推荐、协同过滤推荐和混合推荐三类,协同过滤算法进一步划分又可分为基于基于内存的推荐(memory-based)和基于模型的推荐(model-based),本文介绍的矩阵分解算法属于基于模型的推荐。 矩阵分解算法的数学理论基础是矩阵的行列变换。在《线性代数》中,我们知道矩阵A进行行变换相当于A左乘一个矩阵,矩阵A进行列变换等价于矩阵A右乘一个矩阵,因此矩阵A可以表示为A=PEQ=PQ(E是标准阵)。 矩阵分解目标就是把用户-项目评分矩阵R分解成用户因子矩阵和项目因子矩阵乘的形式,即R=UV,这里R是n×m, n =6, m =7,U是n×k,V是k×m。直观地表示如下: 高维的用户-项目评分矩阵分解成为两个低维的用户因子矩阵和项目因子矩阵,因此矩阵分解和PCA不同,不是为了降维

推荐系统评价指标:AUC和GAUC

白昼怎懂夜的黑 提交于 2020-01-21 23:59:03
AUC是推荐系统中最常用的模型评价指标。基础概念要常看常新,最近复习了一遍AUC的概念,在此做个笔记。本文力求简洁系统地理解AUC的概念和计算方法,AUC在推荐/广告领域的局限性以及解决这一问题的另一个指标:Group AUC(GAUC) 1. 分类任务与混淆矩阵 认识auc的第一步,是看懂混淆矩阵: 预测\真实 1 0 1 TP FP 0 FN TN True/False代表预测的正确/错误; Positive/Negative代表预测值为1/0. TP是真1;FP是假1;FN是假0; TN是真0。 真阳率: T P R = T P T P + F N TPR = \frac{TP}{TP+FN} T P R = T P + F N T P ​ ,正样本被预测为1的概率; 假阳率: F P R = F P F P + T N FPR = \frac{FP}{FP+TN} F P R = F P + T N F P ​ ,负样本被预测为1的概率; 2. ROC曲线与AUC 以x轴为FPR, y轴为TPR,做出图称为ROC曲线 AUC的定义:Area Under ROC Curve,即ROC曲线下的面积 AUC的意义:随机抽取一对正负样本,AUC是 把正样本预测为1的概率大于把负样本预测为1的概率的概率 。这句话有点拗口,用公式写就是: A U C = P ( P 正 > P 负 )

Deep Reinforcement Learning for List-wise Recommendations

若如初见. 提交于 2020-01-19 19:03:15
论文题目:多个item一起进行推荐的深度强化学习方法 摘要: 推荐系统通过给用户推荐个性化商品,在缓解信息超载或服务这些问题方面起着至关重要的作用。绝大多数传统推荐系统将推荐算法视为静态过程,并且根据固定策略提出建议。在本文中,我们提出一种新颖的推荐系统,该系统具有在与用户互动期间不断改进其策略的能力。我们将用户和推荐系统之间的顺序交互建模为马尔可夫决策过程(MDP),并且用强化学习(RL),在通过推荐一些尝试的item并从用户的反馈中获得对这些item的补充策略。特别是,我们介绍一个在线的用户代理交互环境模拟器,可以在离线预先训练和评估模型参数,然后再上线。此外,我们验证了用户交互期间的用户和智能体之间的关系,并开发出一种新颖的方法将其纳入LIRD框架以获取一段推荐列表的建议。实验结果是基于一个真实的数据,并且显示了我们提出来的框架的有效性。 关键词: 推荐列表的推荐系统,深度强化学习,Actor-Crtic在线环境模拟器。 1:介绍 京东的推荐系统是智能的电子商务应用程序。他们通过建议用户帮助他们完成信息搜索任务,并推荐给他们最适合其需求和偏好的Item(产品,服务或信息)。 推荐系统越来越多近年来很流行,并且已被广泛用于电影,音乐,书籍,兴趣点和社交等领域事件[5,21,22,32–36]。 大多数现有的推荐系统都将推荐过程看做一种如果有固定模型

推荐系统-05-Spark电影推荐、评估与部署

一笑奈何 提交于 2020-01-18 12:07:33
一、新建scala项目 二、构造程序 代码如下 package xyz.pl8 import java.io.File import org.apache.log4j.{Level, Logger} import org.apache.spark.{SparkContext, SparkConf} import org.apache.spark.mllib.evaluation.RegressionMetrics import org.apache.spark.mllib.recommendation.{MatrixFactorizationModel, Rating, ALS} import org.apache.spark.rdd.RDD import scala.util.Random object MovieLensALS { //1. Define a rating elicitation function // Seq[Rating] def elicitateRating(movies: Seq[(Int, String)])={ val prompt="Please rate the following movie(1-5(best) or 0 if not seen: )" println(prompt) val ratings= movies.flatMap{x

怎样为产品选择更为合适的推荐算法

房东的猫 提交于 2020-01-18 00:28:36
常见推荐机制/算法 基础推荐机制 机制 应用场景 原理概述 内容推荐 适用于冷启动 基于内容的协同过滤 数据量较大 判断内容相似度,相似度高的内容;播放内容A的用户,也会对内容B感兴趣 基于用户的协同过滤 数据量较大,但数据量越大可信度越低 把数据代入专门计算相似度的公式,获得不同用户(二者)口味的相似度;推测相似度高的用户,喜好的内容也类似,进而可以相互推荐 基于标签的推荐 适用于冷启动 协同过滤的风险 协同过滤技术在个性化推荐初期具有较好的效果,但随着产品结构、内容复杂度和用户人数的不断增加,协同过滤技术的缺点也一点一点的暴露出来了。 稀疏性(sparity) 大多数推荐系统中,每个用户涉及的信息量较为有限;用户数据最多不过评估到了百分分之一,造成评估矩阵数据相当稀疏,增加寻找相似用户集的难度,导致推荐效果大大降低 扩展性(scalability) “最近邻居”算法的计算量虽则用户和项的增加而大大增加,对于百万之巨的数目,通常的算法将遭遇严重的扩展性问题 精确性(accuracy) 寻找相近用户来产生推荐集,在数据量较大的情况下,推荐的可信度也会降低 经典算法 算法 应用机制 原理概述 topN 基础算法 1、直接用List的sort方法进行排序处理 2、使用排序二叉树进行排序,然后取出前N名 3、使用最大堆排序,然后取出前N名 矩阵算法 基础算法

推荐系统的召回

折月煮酒 提交于 2020-01-16 09:37:56
推荐系统是一个很大的话题,涉及到很多模块,这里主要是调研了一下推荐召回环节的主流做法。一般有如下几条线路。 所谓召回,在刚接触推荐系统的时候可能只看字面意思无法理解召回的意思,召回可以理解为向用户粗选一批待推荐的商品,相当于 粗排序 。之后会加一层CTR预估的rank模型,相当于 精排序 推荐系统的主要模块即为: 召回 => 排序(精排) => 过滤模块(对最终展示商品进行过滤,多样性排序等) 基于Content的推荐 方法 :只使用内容信息,而不直接使用用户行为数据。通过分析内容,推荐与用户浏览历史相似的内容。因此,如何计算内容之间的相似性是问题的关键。一般分成“分词”,“词权重分析”,“降维”三个阶段,每个阶段都有很多可以优化的地方,不同的做法会带来不一样的推荐体验。 优点 :(一)不依赖用户行为数据,因此不存在新内容的冷启动问题。(二)基于内容的做法很容易在“降维”阶段引入用户行为,从而可以吸收一部分CF的优点。 缺点 :(一)需要精细优化的地方会很多,没有工匠精神,效果比较难出来。(二)最重要的模块是通过对用户session实时分析用户意图。 应用 : 在电商推荐中,如果基于内容计算商品相似度,内容相似度一般定义为(品牌+品类+价格+标题的内容相似度),大规模两两之间相似度计算非常困难,工程上实现需要LSH等方法 基于CF的推荐 方法 :只使用用户行为数据,而不管内容信息

工业界通用推荐系统架构及NetFlix经典架构解析

最后都变了- 提交于 2020-01-16 05:15:40
2个关键因素决定机器学习模型预测效果好坏 在这个页面里面,它相当于是给大家披露了一种比较标准的,算是行业的解决方案,对于不同的公司,每家公司业务是不一样的,但是每家公司背后的技术框架、基本思想是统一的, OK你可以认为这个是一个每家公司都要去遵守的一个就是统一的一个技术思路在,只不过是每家公司它可能给你看到技术方案的长的不一样,但是它的方案可能也就是呈现形式不一样,但是如果我们一旦要抓住背后的精髓,比如这张图我们就可以觉得每家公司其实技术都是统一的,都是通用的,对吧?“蜡炬教育AI学院” 比如在这里面我们把整个的方案分成三个层次,对吧? 从下往上就分别是这是数据层更偏底层对吧?底层大家都清楚,底层一般都是做什么的?都是做一些存储的,对不对?底层存储底层就是更切更贴近于你的磁盘,对吧?我们要做数据挖掘,首先底层要存数据,他要存什么数据呢? 存业务数据和日志数据,那是业务数据,什么叫业务数据?什么叫日志数据?业务数据就是用户的数据,比如说用户的性别、年龄、兴趣,还有一些什么家庭住址,或者是一些用户是不是有没有开会员,然后他的钱包里面有没有钱,甚至他有没有收藏一些信息等等, 这是用户数据,商品数据相当于是物品的原数据,比如说你在听一首歌或者是看一段视频,这个视频背后就是一个商品,你可以认为把它当成一个商品或者物品,比如说我们拿视频也好,物品数据包含什么?包含视频的自身的标题,演员。

推荐系统之概述

只愿长相守 提交于 2020-01-14 06:34:07
1.什么是推荐系统 1.推荐系统的背景 (1)随着信息技术和互联网的发展,人们逐渐从信息匮乏的时代走入了信息过载的时代。在这个时代,无论是信息消费者还是生产者都遇到了很大的挑战 (2)无明确需求 (3)信息过载 由此引出推荐系统的概念: 从上图中可以看到,左边是没有明确需求的用户,但是商品信息量过大,推荐系统就是在大量商品中找到用户喜欢的商品推荐给用户,推荐系统是连接用户和商品的一个桥梁。 作用,它能解决信息过载问题,使得消费者和生产者达到一个共鸣的状态。 2.推荐系统和搜索引擎 1.相同点: 帮助用户快速发现有用信息的工具 2.不同点: 搜索引擎需要用户主动提供准确的关键词来寻找信息 推荐系统不需要用户提供明确的需求,而是通过分析用户的历史行为给用户的兴趣建模 3.关系: 搜索引擎满足了用户有明确目的时的主动查找需求 推荐系统能够在用户没有明确目的的时候帮助他们发现感兴趣的新内容 3.推荐系统的工作原理 以看电影为例: 1.社会化推荐:向朋友咨询,即让好友给自己推荐物品 2.基于内容的推荐:打开搜索引擎,输入自己喜欢的演员名,然后看看返回结果中还有什么电影是自己没有看过的。 3.基于流行度的推荐:查看排行榜 4.基于协同过滤的推荐:找到和自己历史兴趣相似的一群用户,看看他们最近在看什么电影。 2.推荐系统的设计 1.需求分析和用户调研 目标用户: 新用户->兴趣未知,着重促销

关于推荐系统的综述

£可爱£侵袭症+ 提交于 2020-01-13 20:50:28
推荐系统中的深度匹配模型 辛俊波 DataFunTalk 今天 文章作者:辛俊波 腾讯 高级研究员 编辑整理:Hoh Xil 内容来源:作者授权 文章出品:DataFunTalk 注:转载请联系作者本人。 导读: 推荐系统和搜索应该是机器学习乃至深度学习在工业界落地应用最多也最容易变现的场景。而无论是搜索还是推荐,本质其实都是匹配,搜索的本质是给定 query,匹配 doc;推荐的本质是给定 user,推荐 item。本文主要讲推荐系统里的匹配问题,包括传统匹配模型和深度学习模型。 深度学习之风虽然愈演愈烈,但背后体现的矩阵分解思想、协同过滤思想等其实一直都是贯穿其中,如 svd++ 体现的 userCF 和 itemCF 的思想,FM 模型本质上可以退化成以上大多数模型等。多对这些方法做总结,有助于更深刻理解不同模型之间的关联。 图1 推荐和搜索的本质,都是 match 的过程 PS:本文主要启发来源 SIGIR2018:Deep Learning for Matching in Search and Recommendation,重点阐述搜索和推荐中的深度匹配问题,非常 solid 的综述,针对里面的一些方法,尤其是 feature-based 的深度学习方法增加了近期一些相关 paper。 本文主要分为以下几部分: ❶ 推荐系统概述 ❷ 推荐系统的传统匹配模型 ❸ 基于

推荐系统之大数据应用

纵然是瞬间 提交于 2020-01-12 06:42:13
1.大数据应用案例 首先普及一下数据量单位,然后再来看BAT大数据应用 字节 byte:8个二进制位为一个字节(B),最常用的单位. 1KB (Kilobyte 千字节)=1024B, 1MB (Megabyte 兆字节 简称“兆”)=1024KB, 1GB (Gigabyte 吉字节 又称“千兆”)=1024MB, 1TB (Trillionbyte 万亿字节 太字节)=1024GB,其中1024=2^10 ( 2 的10次方), 1PB(Petabyte 千万亿字节 拍字节)=1024TB, 1EB(Exabyte 百亿亿字节 艾字节)=1024PB, 1ZB (Zettabyte 十万亿亿字节 泽字节)= 1024 EB, 1YB (Jottabyte 一亿亿亿字节 尧字节)= 1024 ZB, 1BB (Brontobyte 一千亿亿亿字节)= 1024 YB. 注:“兆”为百万级数量单位. 1.百度大数据 1.拥有EB级别的超大数据存储和管理 2.收录网页的数量超过一万亿 3.每年更新几十亿 4.每天百亿次的访问请求 2.阿里巴巴大数据 1.每天处理200PB数据量 2.每秒8.59万次交易 3.同时拥有3亿用户在线 4.由智能推荐撮合成功的交易有300+亿 3.腾讯大数据 1.单集群8800台 2.每天20PB扫描量 3.200PB存储容量 4.QQ PC月活8.99亿