希望我在开始第一个机器学习项目之前就了解的那些事儿

摘要: 一份机器学习过来人的经验清单分享,主要是包含一些关于构建机器学习工作流以及Apache Spark应该注意的一些事项,希望这个清单能够帮助那些正在学习机器学习的相关人员少走一些弯路,节约一些时间。

图片描述

当我们学习任何一个新的内容或遇到新的事情时,随着时间的推移,可能回过头来会发现,当时要是怎样结果又会怎样。身边很多人包括我自己在读完大学后,发现如果高中再努力一些或重新把大学时间利用好,人生的路途是不是能更顺利些……曾经听一位老师说过“青春就像这样,不管你怎样过都会过得一团糟”。事实上,大多数学生没有利用好时间是由于没有明确的方向。同理,对于新入职的员工而言,有一个师父在平时的工作中以他过来人的经验引导一下,新员工的发展也会更顺利些。那么对于学习机器学习而言,这里有一份过来人的经验分享清单,希望这个清单能够帮助那些正在学习机器学习的相关人员少走一些弯路,节约一些时间。

这份清单主要是包含一些关于构建机器学习工作流以及Apache Spark相关的具体内容。

预测是困难的

对于任何未知的事情,很难对其做出一个准确的时间预测,但我们会朝着目标前进。然而随着时间的推移,在努力的过程中逐渐会出现错误,这是由于我们无法预测采用哪种方法就能够得出好的结果,能够做的只有确保项目组可以快速地迭代更新。

项目有很大的未知数,请确保团队能够进行快速迭代更新

在开始之前验证数据是否完整

当开始使用机器学习管道时,我们已经收集了大约3年时间的原始数据。但没有对原始数据做任何处理,只是将其存储以防万一。原始数据采用CSV文件形式,此时没有注意到这些数据存在问题,另外编写这些文件的代码会随着时间的推移而导致一些错误。因此在构建机器学习管道的同时,还需要修复造成错误的数据问题,最终在Apache Spark中编写相关的代码来清理历史数据。在进行到中间时刻才发现问题,而不是在最初,这无疑增加了项目的难度。

在开展工作之前,请确保数据正确

对数据进行一次预处理,对构建模型进行一百万次训练

在最初训练机器学习模型时,我们尝试加载所有的数据。而采用的数据大小是TB级别,如果每次训练都加载所有数据会导致训练速度很慢。因此,每次训练时不需要加载所有的数据,可以对其做一些预处理,创建一个新的小数据集。此外,并没有删掉原始数据集,将其作为备份以防后续过程中出现新的错误。

不要将ETL和模型训练混淆。如果你正在训练1000个模型且不想执行1000次预处理,可以只做一次预处理并保存,然后将其用于所有的模型训练需求。

为不同的团队成员提供轻易的访问途径

在上文说过,我们将原始数据存储在AWS S3中备份。当开始使用机器学习开展工作时,发现为每个人提供轻松地访问途径显得至关重要。只给予读取权限是不够的,科研人员不会通过笔记本下载TB级的数据,且不会随身携带笔记本电脑来处理TB级的数据,这只会浪费每个人的时间。我们发现使用支持像Apache Spark这样环境的Notebook可以达到这个目的,比如Jupyter、zeepelin等,读者可以根据自己的平台选择合适的Notebook。

为小组人员提供访问TB级数据的途径,此外必须提供合适的工具使其能够从中很好的理解这些数据,比如Jupyter、zeppelin等这些基于spark集群的Notebook。

对于大数据而言,监控是必须的

当处理大数据时,传统的软件工程方法是不起作用的。一般的程序可能花费几分钟就可以运行完毕,但大数据可能需要几小时到几天的时间。与传统软件编程相比,如何在大数据情况下减少批量处理作业的完成时间这一问题更为复杂。使用云计算可以水平降低机器要求以及缩短运行时间。但是,我们应该增加机器的数量还是完全改变机器的类型?分布式环境中的瓶颈在哪里?等等这些问题都是减少执行时间时需要解决的问题。

对于Apache Spark而言,很难弄清楚需要的机器类型。Amazon EMR带有Ganglia,这让我们一眼就可以监视集群内存/CPU。但有时候也不得不去检查底层的EC2实例监测,因为Ganglia并不完美,将二者结合起来使用是很不错的方法。此外,与训练机器学习模型的作业相比,ETL作业具有不同的执行配置文件。ETL占用了大量的网络和内存,机器学习需要更多的计算,可以为这两种类型的作业选择不同的实例类型。

需要从CPU/内存/网络/IO监控方面优化成本,此外发现不同的工作(ETL、机器学习)有不同的机器要求。

在一开始就需要对机器学习预测进行基准测试

对机器学习模型的预测有没有延迟要求?如果有的话,在选择任何具体框架之前,请确定该框架的训练模型是否可以满足你的延迟要求。对于基础模型而言,很容易就能掌握其中包含的数学基本理论,并理所当然的认为它会运行得很快。但事实证明,还有一些其它因素可能会导致预测的速度不如理论上预期的那样快。建立一个简单的模型并进行基准测试。如果在建立管道后才发现问题,这可能会浪费大量的时间。当发现Spark不能满足延迟要求时,可以使用mleap库提升预测延迟。

如果有延迟需求,请从要使用的框架中制作出一个简单模型,精度、准确率或其它指标都无关紧要,只需要以预测延迟为基准点。

无论AWS如何显示,S3都不是一个文件系统

使用AWS的GUI或CLI很容易忘记S3不是一个文件系统,S3是一个对象存储库,存储的对象是json、图片等内容。这个区别很重要,因为在S3中重命名内容并不像在真正的文件系统中那样快。如果在一个文件系统中移动一个对象,它可能会很快地移动,但这在S3中是无法实现的。为什么这个显得很重要呢?因为当通过Apache将数据写入S3时,Apache Spark会产生临时文件,然后将其移动到新的秘钥中。基于以上原因,Apache Spark有一个设置,可以告诉它不写入临时文件,而是写入最终输出。我们使用了这种设置,在写入AWS s3上节约了大量的时间。

Apache Spark主要是基于Scala

如果使用的是Apache Spark,你应该知道它主要是基于Scala的。Java和Python等应用接口也可以工作,但是网上的例子大多是基于Scala的。而我们使用的是Java,这是由于之前的技术栈使用的是Java。在刚开始时,对于机器学习和Scala等方面都没有任何专业知识,我们简单地认为机器学习对于项目而言至关重要,而Scala不是。因此,无法让团队像处理机器学习问题那样处理Scala曲线。将Scala翻译成Java并不难,但将Spark Scala翻译为Spark Java很困难,因为这些应用接口在Java中难以使用。

如果你不了解Scala并且还想使用 Spark Mllib,那么可能需要在选择语言方面考虑妥协。这种解决方案不是理想的工程解决方案,而是一个实用的解决方案。

知识分享对于团队合作而言很重要

如果将机器学习与现有系统集成在一起,那么将不得不与其他开发人员打交道。此外,还需要与业务、操作、营销等人员进行交流。但是这些人员中的大多数人不会对机器学习有很好的理解,因此他们需要这方面的知识,但是他们又不能坐下来学习机器学习相关课程。这个时候就应该做一些机器学习方面的知识分享,只需要解释一些涉及外行常见的术语即可,比如训练集/测试集/验证集、模型等,而不必教他们相关算法等深奥的内容。

对于专业人员来说,很容易忘记机器学习中充满了术语,虽然你可能完全熟悉这些术语,但对于团队中的其他人而言,这些可能会是完全陌生的词语,因为不是所有人都参加过机器学习课程。

对数据库构建版本控制可能是一个好的想法

可能需要对数据库构建版本控制方案,并且可以在不重新部署整个软件的情况下切换不同的模型训练代码以使用不同的数据集。我们创建了一些模型,并用一些数据对其进行了尝试,结果发现数据量不够,模型工作得不够好。因此,为数据库建立版本控制方案,以便可以在V1版本上训练模型并继续生成下一个版本。新版本中足够的数据后,就可以切换模型训练代码以使用新数据集。此外,还制作了一个UI界面,以便控制机器学习的参数、指定用于训练的数据量等。基本上可以通过UI可以轻松地配置一些参数,以确保对用于训练的数据进行更改时不需要重新部署相关参数。

作者信息

Aseem Bansal,数据科学、机器学习爱好者

原文链接

干货好文,请关注扫描以下二维码:
图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522197.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ftp上传文件服务器报550错误_java ftp下载文件,Java 实现ftp上传下载文件

最近项目中需要实现将文件先存放到ftp上,需要的时候再从ftp上下载,做的过程中碰到了问题,发现中文文件名的无法上传到ftp上,ftp上的中文文件名的文件下载不下来,几番折腾,终于搞定了,记录一下备…

揭秘!谷歌云确立领先地位的五大变革

戳蓝字“CSDN云计算”关注我们哦!作者 | Maribel Lopez编译作者 | 风车云马经过十多年的发展,云计算已经从即时容量和降低成本发展为支持创新的基础服务。在云计算的平台即服务(PaaS) 市场,可以应用机器学习和具有认知功能的各种开发工具。今…

MaxComputeSql性能调优

摘要: 转载自xiaorui 部分用户(尤其对外输出)使用MaxCompute(原Odps)时,由于对产品的使用层面和执行层面了解程度不同,导致提交的任务执行时间过长、占用了较多集群资源;严重的会导致失败、不仅需要投入支持同学精力协助解决、也影…

华为卡槽打不开怎么办_17500元!华为5G折叠手机刷屏,有人焦虑连夜开会…

本文经授权转载自澎湃新闻( ID:thepapernews )华为发布首款5G折叠屏手机Mate X,售价1.75万元。2月24日西班牙巴塞罗那华为发布了首款5G折叠屏手机—— 华为Mate X机身尺寸为8英寸不对称外翻折叠这款国产黑科技一出现立刻引发围观登上热搜那它究竟有啥特别的&#xf…

MaxCompute访问TableStore(OTS) 数据

摘要: MaxCompute作为阿里云大数据平台的核心计算组件,承担了集团内外大部分的分布式计算需求。 免费开通大数据服务:https://www.aliyun.com/product/odps 前言 MaxCompute作为阿里云大数据平台的核心计算组件,承担了集团内外大部…

编程吸金榜:你排第几?网友神回应了 !

作为全球知名招聘求职网站Indeed,最近发布了2019年度最佳工作榜单,公布了2019年的最佳行业领域及工作岗位薪酬,在全行业的榜单中,跟程序员相关的岗位有9个!对此,大家纷纷留言表示程序员或成最大赢家&#x…

快速开发工作流_02_集成在线流程设计器

接上一篇:快速开发工作流_01_简单流程案例https://gblfy.blog.csdn.net/article/details/102881983 文章目录七、流程设计器 modeler7.1. 导入war7.2. 重写两个配置类7.3. 添加国际化文件7.4. 资源文件配置7.5. 项目源码七、流程设计器 modeler 7.1. 导入war 解压…

electron 打包把node代理服务打包进去_专题:让C++给node做技术加持(三)编译electron本地模块踩坑记

欢迎来到我的专题文章:《让C给node做技术加持》系列。更多内容,持续更新中,欢迎关注。往期目录:专题:让C给node做技术加持(一)环境搭建,项目运行专题:让C给node做技术加持(二)-NodeJs调用C方法上…

云无边界,阿里云混合云数据同步发布

摘要: 针对不同数据库间数据实时同步难的问题,日前,阿里云宣布推出混合云数据同步一站式解决方案,便于广大云产品用户实现实时数据同步的混合云支持,更为方便的是,该功能让本地Oracle也能实现与云上数据库的…

fs react 使用 保存文件_入门TypeScript编写React

使用 create-react-app 开启 TypeScriptCreate React App 是一个官方支持的创建 React 单页应用程序的CLI,它提供了一个零配置的现代构建设置。当你使用 Create React App 来创建一个新的 TypeScript React 工程时,你可以运行:$ npx create-r…

快速开发工作流_03_集成在线流程设计器_内置用户免登录

接上一篇:快速开发工作流_02_集成在线流程设计器 https://gblfy.blog.csdn.net/article/details/103676784 文章目录八、内置用户免登录8.1. 定位url-config.js8.2. 替换url8.3. 添加配置类AdminRemoteAccountResource8.4. 启动类排除权限校验8.5. 码云地址八、内置…

强推!阿里数据科学家一次讲透数据中台

戳蓝字“CSDN云计算”关注我们哦!来源 | 技术领导力社区编辑 | Emma阿里大数据和人工智能科学家 行在,阿里公共数据平台负责人 罗金鹏,在云栖大会、Data Tech等大会中分享到:阿里的“双中台ET”数字化转型方法论及成果&#xff0c…

关于增强学习你应该了解的五件事儿

摘要: 本文主要是讲解了机器学习中的增强学习方法的基本原理,常用算法及应用场景,最后给出了学习资源,对于初学者而言可以将其作为入门指南。 强化学习(Reinforcement Learning)是当前最热门的研究课题之一…

SpringBoot聚合项目总结

文章目录一、聚合项目架构二、依赖传递图解2.1. 常见场景2.2. 企业场景三、结构设计原则3.1. 模块层次清晰3.2. 模块之间耦合度低3.3. 功能互不影响3.4. 定位问题效率高3.5. 灵活易扩展四、架构设计优点4.1. 统一规范4.2. 版本统一管理4.2.1. 模块版本统一管理4.2.2. 依赖版本统…

容器精华问答 | 虚拟机和容器的区别是什么?

戳蓝字“CSDN云计算”关注我们哦!云计算的发展日新月异,新技术层出不穷,尤其容器技术自2013年Docker容器问世以来一路高歌猛进红遍大江南北,与虚拟机相比,容器更显优势,有着更轻量、更快捷、占用资源更少&a…

战神笔记本电脑自带access吗_笔记本电脑卡顿不要急着换,这几个方法,让你的电脑流畅爆表...

电脑现在无论是学生还是上班族都成为了不可或缺的一个东西,笔记本电脑更是成为很多人的宠爱,方便携带。但是很多人的电脑都会面临一个问题,就是笔记本电脑使用没多久就开始卡顿,越来越不流畅。 …

一文看清深圳云栖阿里云重磅产品发布

摘要: 成立九年之后,阿里云不再仅仅是提供计算、存储、网络、安全。 事实上,我们每一天都有新功能在发布。 本文就和大家梳理一下,阿里云此次深圳云栖在云计算、大数据、人工智能、物联网方面的技术产品进展。 成立九年之后&#…

工作流实战_23_flowable 任务监听器 事件监听器

项目地址:https://gitee.com/lwj/flowable.git 分支flowable-base 视频讲解地址 https://www.bilibili.com/video/av79328344 监听器 任务监听器 针对userTask节点 事件监听器 针对任意节点 由于实际情况下我们会在节点会动态调用业务系统的接口去改变业务单据的状态…

pcb设计等长线误差_17种元器件PCB封装图鉴,美翻了(附PCB元件库)

元器件封装的构建是PCB设计中的一个重要环节,小小的一个错误很可能导致整个板子都不能工作以及工期的严重延误。常规器件的封装库一般CAD工具都有自带,也可以从器件原厂的设计文档、参考设计源图中获取。封装名称与图形如下No.1晶体管No.2晶振No.3电感No…

云计算风起云涌,超融合恰逢其时!

戳蓝字“CSDN云计算”关注我们哦!“关于超融合市场,确实有一些声音。比如说市场很小,着手做这个业务方向会不会意味着未来堪忧?是不是没有前途?”深信服云BG总经理宋锐打趣说道。“这个问题,要站在客户的角…