推荐系统

推荐系统系列(五):Deep Crossing理论与实践

血红的双手。 提交于 2019-12-04 02:07:30
背景 特征工程是绕不开的话题,巧妙的特征组合也许能够为模型带来质的提升。但同时,特征工程耗费的资源也是相当可观的,对于后期模型特征的维护、模型线上部署不太友好。2016年,微软提出Deep Crossing模型,旨在解决特征工程中特征组合的难题,降低人力特征组合的时间开销,通过模型自动学习特征的组合方式,也能达到不错的效果,且在各种任务中表现出较好的稳定性。 与之前介绍的FNN、PNN不同的是,Deep Crossing并没有采用显式交叉特征的方式,而是利用残差网络结构挖掘特征间的关系。本文将对DeepCrossing从原理到实现细节进行详细分析。 分析 1. DeepCrossing模型结构 整个模型包含四种结构:Embedding,Stacking,Residual Unit,Scoring Layer。 论文中使用的目标函数为 \(logloss\) : \(logloss=-\frac{1}{N}\sum_{i=1}^{N}(y_ilog(p_i)+(1-y_i)log(1-p_i))\) ,在实际应用中,可以灵活替换为其他目标函数。 下面对各层结构进行分析: 1.1 Embedding & Stacking Embedding的主要目的是将高维稀疏特征转化为低维稠密特征,其公式化定义为: \(X_j^O=max(0,W_jX_j^I+b_j)\) ,其中 \(X_j^I\

基于会话的最优推荐模型SR-GNN

被刻印的时光 ゝ 提交于 2019-12-03 23:46:39
PaddlePaddle于近期开源了基于会话(session-based)的推荐系统模型(SR-GNN)。 相较于之前通过循环神经网络(RNN)来对会话进行序列化建模导致的不能够得到用户的精确表征以及忽略了items中复杂的转换特性,SR-GNN通过将序列化的问题转换为图的问题,对所有的会话序列通过有向图进行建模,然后通过图神经网络(GNN)来学习每个item的隐向量表示,进而通过一个注意力网络(Attention Network)架构模型来捕捉用户的短期兴趣,以达到捕获长期与短期兴趣共存的向量表示。 SR-GNN模型明显优于一些最先进的基于会话的推荐方法。 项目地址: https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/gnn 应用背景 随着互联网上信息量的快速增长,推荐系统能够帮助用户缓解信息过载的问题,进而有效帮助用户在众多Web应用程序中(比如:搜索、电子商务、媒体流网站等)选择自己感兴趣的信息。大多数现有的推荐系统都假设一个前提:用户画像(user profile)和历史活动信息是被不断记录的。 然而实际上,在许多服务中,用户的信息可能是未知的,并且只有处于当前正在进行的会话中的用户历史行为可用。 因此,在一个会话中,能对有限的行为进行建模并相应地生成推荐是非常重要的。但是在这种场景下

基于会话的最优推荐模型:SR-GNN的PaddlePaddle实现

北慕城南 提交于 2019-12-03 23:42:41
来源商业新知网,原标题:基于会话的最优推荐模型:SR-GNN的PaddlePaddle实现 百度深度学习平台PaddlePaddle于近期开源了基于会话(session-based)的推荐系统模型(SR-GNN)。 相较于之前通过循环神经网络(RNN)来对会话进行序列化建模导致的不能够得到用户的精确表征以及忽略了items中复杂的转换特性,SR-GNN通过将序列化的问题转换为图的问题,对所有的会话序列通过有向图进行建模,然后通过图神经网络(GNN)来学习每个item的隐向量表示,进而通过一个注意力网络(Attention Network)架构模型来捕捉用户的短期兴趣,以达到捕获长期与短期兴趣共存的向量表示。 SR-GNN模型明显优于一些最先进的基于会话的推荐方法。 项目地址:https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/gnn 应用背景 随着互联网上信息量的快速增长,推荐系统能够帮助用户缓解信息过载的问题,进而有效帮助用户在众多Web应用程序中(比如:搜索、电子商务、媒体流网站等)选择自己感兴趣的信息。大多数现有的推荐系统都假设一个前提:用户画像(user profile)和历史活动信息是被不断记录的。 然而实际上,在许多服务中,用户的信息可能是未知的,并且只有处于当前正在进行的会话中的用户历史行为可用。

开源 | 基于会话的最优推荐模型:SR-GNN的PaddlePaddle实现

…衆ロ難τιáo~ 提交于 2019-12-03 23:42:30
https://www.toutiao.com/a6690696657228530187/ 2019-05-14 10:00:09 本文转载自百度 PaddlePaddle 百度深度学习平台PaddlePaddle于近期开源了基于会话(session-based)的推荐系统模型(SR-GNN)。 相较于之前通过循环神经网络(RNN)来对会话进行序列化建模导致的不能够得到用户的精确表征以及忽略了items中复杂的转换特性,SR-GNN通过将序列化的问题转换为图的问题,对所有的会话序列通过有向图进行建模,然后通过图神经网络(GNN)来学习每个item的隐向量表示,进而通过一个注意力网络(Attention Network)架构模型来捕捉用户的短期兴趣,以达到捕获长期与短期兴趣共存的向量表示。 SR-GNN模型明显优于一些最先进的基于会话的推荐方法。 项目地址:https://github.com/PaddlePaddle/models/tree/develop/PaddleRec/gnn 应用背景 随着互联网上信息量的快速增长,推荐系统能够帮助用户缓解信息过载的问题,进而有效帮助用户在众多Web应用程序中(比如:搜索、电子商务、媒体流网站等)选择自己感兴趣的信息。大多数现有的推荐系统都假设一个前提:用户画像(user profile)和历史活动信息是被不断记录的。 然而实际上

Linux下Mahout安装遇到的问题

ぐ巨炮叔叔 提交于 2019-12-03 16:22:13
1. Mahout 0.5版本有taste-web,以后版本就没有了。 2. 使用JDK1.7编译Mahout(0.5—0.7)会出现bug,编译不过去。 问题貌似是关于接口的方法没实现的,但是这只是与JDK自带的那个接口重名而已。(太久了,忘了什么错了。。。) 解决这个问题需要下载补丁(https://issues.apache.org/jira/browse/MAHOUT-782),在linux下执行patch 源文件 补丁文件即可。 来源: oschina 链接: https://my.oschina.net/u/268089/blog/138817

利用机器学习中的推荐思想为组合优化问题推荐最佳智能优化算法

本小妞迷上赌 提交于 2019-12-03 14:06:28
文章:基于多分类支持向量机的优化算法智能推荐系统与实证分析 摘要:算法智能推荐是超启发式算法研究领域一个重要分支其,目标是从众多在线算法中自动选择出最适于当前问题的算法,从而大大提升解决问题的效率。基于此提出并验证了一种优化算法智能推荐系统,理论依据是无免费午餐定理和Rice算法选择框架,并假设问题特征与算法性能表现之间存在潜在关联关系,从而可以把算法推荐问题转换为一个多分类问题。为了验证假设的成立,以多模式资源约束项目调度问题为测试样本数据集,以粒子群、模拟退火、禁忌搜索和人工蜂群等元启发式优化算法为推荐对象,以支持向量机多分类策略实现算法的分类推荐。交叉验证结果表明推荐准确率均在90%以上,各项评价指标表现优秀。 思考:那么,是否可以像决策树到随机森林算法那样,在迭代过程中既进行进行不同算法的组合,每一代中,各个个体可以从多种更新公式中任意选择一种,而不限于一种,或者不同的阶段,采用不同的算法框架等等,从不同维度对不同算法进行组合。 来源: https://www.cnblogs.com/liuxiang2020/p/11798297.html

TOP 10开源的推荐系统简介

北城以北 提交于 2019-12-03 14:02:02
最近这两年推荐系统特别火,本文搜集整理了一些比较好的开源推荐系统,即有轻量级的适用于做研究的SVDFeature、LibMF、LibFM等,也有重量级的适用于工业系统的Mahout、Oryx、EasyRecd等,供大家参考。PS:这里的top 10仅代表个人观点。 #1.SVDFeature 主页: http://svdfeature.apexlab.org/wiki/Main_Page 语言:C++ 一个feature-based协同过滤和排序工具,由上海交大Apex实验室开发,代码质量较高。在KDD Cup 2012中获得第一名,KDD Cup 2011中获得第三名,相关论文发表在2012的JMLR中,这足以说明它的高大上。 SVDFeature包含一个很灵活的Matrix Factorization推荐框架,能方便的实现SVD、SVD++等方法, 是单模型推荐算法中精度最高的一种。SVDFeature代码精炼,可以用相对较少的内存实现较大规模的单机版矩阵分解运算。另外含有Logistic regression的model,可以很方便的用来进行ensemble。 #2.LibMF 主页: http://www.csie.ntu.edu.tw/~cjlin/libmf/ 语言:C++ 作者 Chih-Jen Lin 来自大名鼎鼎的台湾国立大学,他们在机器学习领域享有盛名

开源的推荐系统

只谈情不闲聊 提交于 2019-12-03 14:01:36
我收集和整理的目前互联网上所能找到的知名开源推荐系统(open source project for recommendation system),并附上了个人的一些简单点评(未必全面准确), 这方面的中文资料很少见,希望对国内的朋友了解掌握推荐系统有帮助 陈运文 SVDFeature 由上海交大的同学开发的,C++语言,代码质量很高 。去年我们参加KDD竞赛时用过,非常好用,而且出自咱们国人之手,所以置顶推荐! 项目地址: http://svdfeature.apexlab.org/wiki/Main_Page SVDFeature包含一个很灵活的Matrix Factorization推荐框架,能方便的实现SVD、SVD++等方法, 是单模型推荐算法中精度最高的一种。SVDFeature代码精炼,可以用相对较少的内存实现较大规模的单机版矩阵分解运算。 另外含有Logistic regression的model,可以很方便的用来进行ensemble运算 Crab 项目地址: http://geektell.com/story/crab-recommender-systems-in-python/ 系统的Tutorial可以看这里: http://muricoca.github.io/crab/ Crab是基于Python开发的开源推荐软件,其中实现有item和user的协同过滤

基于Spark ALS算法的个性化推荐

僤鯓⒐⒋嵵緔 提交于 2019-12-03 11:59:37
今天来使用spark中的ALS算法做一个小推荐。需要数据的话可以点击查看初识sparklyr—电影数据分析,在文末点击阅读原文即可获取。 其实在R中还有一个包可以做推荐,那就是recommenderlab。如果数据量不大的时候可以使用recommenderlab包,之前也用该包做过电影评分预测模型。如果数据量较大还是推荐使用spark来进行计算。 在spark中包含了许多机器学习算法,其中就有一个推荐算法,即ALS。 ALS算法也就是协同过滤算法,它是基于矩阵分解的协同过滤,何为矩阵分解?就是把一个评分矩阵A分解为两个矩阵B,C。B*C=A。为什么要进行分解?那是因为矩阵A是一个稀疏矩阵,分解之后的B,C矩阵相对能稠密一点。使用该算法可以很方便的做一个推荐系统,核心代码只有三行。 一.读取数据 数据可以在初识sparklyr—电影数据分析文末点击阅读原文即可获取。 moviedata<-read.table("u.data",header = FALSE,sep = "\t") 这四列数据分别表示:用户id,电影id,评分,时间戳 head(moviedata)# V1 V2 V3 V4 1 196 242 3 881250949 2 186 302 3 891717742 3 22 377 1 878887116 4 244 51 2 880606923 5 166 346 1

为什么那么多程序员推荐 Linux,是不是在 Linux 下开发效率高?--【千锋】

Deadly 提交于 2019-12-03 04:19:10
为什么那么多程序员推荐 Linux ,是不是在 Linux 下开发效率高? -- 【千锋】 为什么那么多程序员推荐Linux , 首先就是他的开源,任何人都是可以查看他的源代码的,这使得他特别的安全,而 windows 则不开源 。 其次, linux 内核 优化的好,没有哪个 linux 需要右键的刷新键( 红旗 linux 是为了国人的使用习惯加的),而 windows 则不同,微软的系统非常的复杂,而且运先行效率相对 linux 要低很多。 虽然 linux 在桌面市场没有优势(只占 1% 多一点的占有率),但他在服务器行业的地位那是无敌的( 20% 多)。 linux 占用系统资源特别少,早期的 linux , 64M 内存就能跑的很流畅,这也是他的优势。 在 Linux 下开发效率高,答案是否,选择的 Linux 与否,其实与开发效率关系并不是太大,有的时候,换系统带不来跟更高的效率,反而增加学习成本,所以选择自己熟悉的,开发效率才会高点。 来源: https://www.cnblogs.com/andy888168/p/11776691.html