上次ITEYE大规模的信息被盗之后所有的文章都被清除了,很久都没有写相关的文章来记录自己的学习轨迹,最近开始学大数据+机器学习相关的内容,主要是需要一个推荐系统,主要分为离线任务(根据用户行为对主题关键字的权重进行计算训练相关的LDA模型和词袋,可以通过spark MLLib的ALS协同过滤算法训练相关的模型然后更新每个用户的主题关键字权重模型)这部分主要是一个离线的定时任务,还有在线的任务根据用户的点击流实时生成推荐列表,离线的部分找到了一个开源的代码
https://github.com/wingerli/RecSystem
其中关于LDA训练(余弦相似算法TF-IDF)和词袋的训练以及更新用户的感兴趣的主题关键字,这部分的权重都是根据用户行为产生(阅读,转发,评论,收藏)协同过滤的算法ALS和movie lens
http://www.cnblogs.com/zlslch/p/6786159.html 的相似打分都是根据用户行为打分,然后根据打分记录对相关的新闻生成推荐的模型和记录.当然这部分的计算都是离线的,并不能根据点击流实时计算出用户的推荐列表,基于流式计算的实时推荐架构目前比较主流的是lambada架构,主要特性和原理找了一片文章:https://blog.csdn.net/brucesea/article/details/45937875
于是就找到了关于推荐的实时计算架构:Oryx2:http://oryx.io/
关于oryx2的介绍目前还比较少,官方文档也有限目前找到一篇比较好的介绍:http://pangz.me/2015/12/21/Oryx2-Overview/,以及关于源码学习的例子:
https://blog.csdn.net/CodingCatX/article/details/51202212
说说自己的看法,首先关于数据层data layer这部分是基于spark steaming+kafka,之前对于用户推送阅读率的指标计算有用到这部分的内容,实时计算指标有一个难点,就是对于实时的用户点击流进行相关计算的时候,应该都是增量计算,二spark streaming对于增量计算只提供了滑动窗口和updateBystate的递归方式,而指标数据可能来源于不同的数据集,通过这种方式没有办法满足,所以只能将用户的指标存储在redis内,然后进行计算,在数据量不大的情况下可以满足实时相应效率,但是这里面就诞生了一个新的问题,就是关于redis缓存的管理,对于不活跃用户的缓存进行清除,这样可以节省缓存的开支,目前主流的是LRU算法,通过队列链表队列对缓存进行排序,然后清除尾部的数据清除,具体的代码实现网上有很多,实现起来并不困难.
关于离线的任务管理,目前所有的离线任务主要是根据用户行为数据以及文章内容训练LDA模型和词袋这部分的内容也可以满足需求,而关于ALS的算法这部分就有点困难了,能看到一个比较熟悉的公式,这个来源于吴恩达的机器学习logistic regression,第一个关于波士顿房价预测的例子也是基于这个,当然在movie lens内关于最优的模型选取是根据方根误差率的方式获取,选取方根误差率最低的那个模型为最佳模型,这个和logistic regression中的lose function梯度下降求导的方式到底有什么关联还没有答案,还需要继续学习.
关于lambada架构,很好的解决了离线数据存储和增量数据的计算,对于ML的模型进行增量数据的训练也是一个挑战,我们可以把模型存储到HDFS中,当点击流进入时重新计算模型数据的权重和指标,然后再更新用户相关的模型,在此时就可以发现oryx2.
的好处就是很好的把实时增量的数据和ML的模型训练结合起来对于增量数据进行训练
综上所述,oryx2是目前提供了离线批处理以及实时在线增量计算的一套解决方案,这套基于lambada架构的框架很好的满足了实时推荐+离线训练+存储+数据传输的问题.
接下来就从example开始对于每一层的代码实现进行研究来确定实现的方案.
增加一些参考资料:
基于SVD的推荐算法:https://blog.csdn.net/qq_27717921/article/details/78257450
https://www.cnblogs.com/pinard/p/6351319.html
分享到:
相关推荐
**Oryx2:构建实时大规模机器学习应用的框架** Oryx2 是一个开源项目,专注于构建实时、大规模的机器学习应用程序。它基于Apache Spark、Lambda架构和Kafka等技术,提供了一种高效且可扩展的方式来处理大量数据并...
**oryx Editor流程设计器文档详解** oryx Editor是一款开源的业务流程建模工具,它提供了图形化的界面,让用户能够方便地设计和编辑BPMN(Business Process Modeling Notation)流程图。oryx Editor的核心功能是...
**oryx 业务流程编辑器学习 PDF** oryx是一个基于Web的业务流程建模工具,其核心是oryx.js,一个强大的JavaScript库,专门用于创建和编辑业务流程模型。这个编辑器采用SVG(Scalable Vector Graphics)技术,提供...
标题“oryx-jbpm-designer.zip”指出的是一个压缩包,其中包含了Oryx项目实现的JbPM流程设计器工具。Oryx是一个开源项目,专注于提供基于Web的BPMN 2.0(业务流程模型与 notation)图形编辑器。这个设计器使用户能够...
Oryx 加上 Ext 修改范例,实现在oryx上添加tab窗体
2. **模型训练(Model Training)**:Oryx利用Spark的MLlib库,支持多种推荐算法,如协同过滤、矩阵分解等。开发者可以根据业务需求选择合适的模型进行训练。 3. **模型更新(Model Serving)**:Oryx通过实时流...
**2. CDH安装** - **PATH B方式**:选择通过配置本地YUM源安装CDH,这样可以更快地下载和安装组件,同时避免网络连接问题。 - **Oracle JDK 1.8**:CDH需要JDK支持,因此需要先在所有主机上安装Java 1.8。 - **...
java6.0源码oryx 编辑器扩展 羚羊项目: Google Code Archive 上的 oryx 编辑器: 此项目中使用的基础是(最新提交:/ 2012 年 10 月 7 日) 相关项目: andreaswolf/oryx-editor(镜像 2010 年 6 月 29 日,更改)...
戈里克斯 羚羊属是一组分离过程: rtmplb rtmp oryx的前端,代理后端SRS工作者。 具有API代理的httpx-static HTTP / HTTPS静态服务器。 温琳2016.07.09
"Oryx"可能是指一个与流程图创建相关的软件或项目,而提供的压缩文件"oryx (1).zip"可能包含了这个工具的资源、示例或者相关文档。在这个场景下,我们将探讨流程图的基本概念、用途以及如何使用工具如Oryx来绘制流程...
Oryx 2是基于和构建的lambda架构的实现,但是专门用于实时大规模机器学习。 它是用于构建应用程序的框架,但还包括用于协作式过滤,分类,回归和聚类的打包的端到端应用程序。 前往获取完整文档。 只是想部署一个...
语言:English (United States) 牙科成像桥。 该扩展程序使您可以直接从Oryx Dental软件打开患者的图像。 将Oryx Dental Software应用程序与第三方成像应用程序集成。
2. **模块化设计**:Oryx 将应用拆分为多个模块,每个模块专注于特定的功能,便于代码维护和扩展。 3. **数据访问支持**:集成 Spring Data,提供了对常见数据库的支持,如 MySQL、Oracle,同时也支持 NoSQL 数据库...
大羚羊(有长角) Oryx是一种基于Spring Boot封装的前分离Java Web平台快速开发脚手架,所采用的技术栈包括Spring Boot,Spring,Spring MVC,MyBatis,Vue等,遵守,帮助养成良好的编码习惯。整体采用RBAC(基于...
标题 "Oryx MP3 Player-开源" 指向的是一个开源的MP3播放器项目,这通常意味着它的源代码是公开的,允许用户查看、学习甚至修改以适应自己的需求。开源软件鼓励社区协作,开发者可以贡献代码,修复错误,或者添加新...
标题"Fond-of-Oryx"可能是指一个与大羚羊(Oryx)相关的项目或软件,这通常意味着它可能是以这种动物为灵感命名的。然而,由于描述中提到“更多的说明即将推出...”,我们目前对这个项目的具体内容了解有限。不过,...
2. **.NET跨平台支持** oryx是基于.NET框架开发的,这意味着它可以运行在各种操作系统上,包括Windows、Linux和macOS。这得益于.NET Core和.NET Standard的跨平台兼容性,使得oryx可以成为任何支持.NET的项目的理想...
2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; ...
Oryx 开源项目提供了简单、实时的大规模机器学习基础设施。 它实现了商业应用中常用的几类算法:协同过滤/推荐、分类/回归和聚类。 它可以使用 . 它还通过 HTTP API 实时提供对这些模型的查询,并且可以近似地更新...
标题中的“oryx”指的是一个特定的项目或应用程序,它被设计为一个演示工具,用于展示在克苏鲁(可能是某种框架或者库)上创建的本地化版本。这个项目名为“羚羊”,它是一个轻量级的用户界面(UI)应用,其主要功能...