程序员到机器学习工程师的飞跃

经常听到这样的话:


“我是一名软件开发工程师,阅读过一些关于机器学习方面的书籍和博客文章,也学习过一些在线的关于机器学习的公开课。但是,我仍然不知道怎么应用到工程实践中……”


  在这一篇文章中,我分享一下对这个话题的深入思考:

  1. 你会发现传统的学习机器学习的方法,对你并不起作用;

  2. 你会发现如何更好的理解所有的模型;

  3. 你会发现我的简单而高效的方法,对你在工程中应用机器学习很奏效。

 

  • 热爱机器学习的软件工程师

       你是一名软件开发工程师,现在,机器学习、大数据很热门、快速增长,你想进入这个领域。

       你阅读过一些关于机器学习方面的博客,现在,你想做的更深入一点,但是,大部分书籍和论文,要么是侧重理论研究,要么是侧重算法、数学公式推导。

        你可能参加过一些在线公开课,比如CourseraEdx,但是,除了完成课后练习,获得毕业证书,对你的工程实践来说,也帮助不大。

        你可能参加过一些竞赛,比如,Kaggle,使用过一些小型的数据集。最大的问题是,你不能把书籍、论文中学到的理论知识和实际工程问题连接起来。那么你应该怎么做才能突破这个障碍?

   

   

  • 机器学习工程师

       当你思考未来,你掌握了目前最热门的机器学习,你的工作将会发生什么样的变化?如果,在你的日常生活中,可以熟练应用机器学习的技能,你的生活将会发生什么改变?


  • 传统的方法是完全错误的

       试想一下,这种“自下而上”教授机器学习的方法,是严格而且系统化的。听起来表面上是正确的,它怎么可能是错误的呢?

  • 自下而上的方法

        假如你原来对机器学习很感兴趣,但是,学完那些晦涩难懂的理论,枯燥无谓的数学推导,你对机器学习的兴趣大打折扣,而面对实际的问题,你又不知道如何入手?对开发更智能化的系统畏惧。

 

  • 最佳的解决方法

 与计算机科学一样,它不能只是自上而下转换模型和教授相同的材料。

 究其原因,就像计算机科学一样,它们从来不讨论涵盖软件开发和交付的实际问题。机器学习课程和书籍,仅仅停留在算法讨论层面。

 
   你需要一种
自上而下的学习机器学习的方法。这种方法是,专注于你实际想要的结果,借助合适的机器学习工具解决你的实际问题。

  • 可以重复实验的系统性流程

         一旦你了解一些工具,简单的调用里面的算法,然后,你就认为完成了任务。这可能是一种很危险的想法。

   你怎么知道你做了什么,你怎么知道结果好么?你怎么知道结果是建立在可靠的数据集上的呢?

   当你解决实际机器学习问题时,你需要系统化。这是一个项目,就像软件项目一样,一个规范化的流程,可以实现高质量的、结果可重复性的项目。

   考虑这样一个流程,比如:

  • 能引导你从端到端,从分析实际问题,到解决实际问题、到模型的部署。像软件开发一样,从PM提出产品需求到RD开发再到QA测试上线一样,它是一个标准化、规范化的流程。

  • 一个循序渐进的过程,这样你永远知道下一步该做什么,不知道下一步做什么,对项目而言是很危险的。

  • 一个可以保证好的结果的流程,这对于一个项目而言是很重要的,它的结果是需要可信、可解释的。

  • 与具体使用的工具、使用的编程语言、使用的算法没有关系,新工具会诞生、新算法会出现。

 

  下面列举一些常用的流程,有些已经过时,但是,根据你的需要,选择合适的处理流程。比如:

我最近新学单片机,发现现在所接触到的电路图,和读书时物理上学的电路图好像都不太一样。物理上的电路图总是用两条线表示电源,流向明显。而现在接触到的电路图,电源全是VCC,负极是GND,流向就不大明白了,不知道从哪条线流出。在网上查,全是关于物理学上的电路图讲解。请问带VCC和GND的电路图是什么电路图?在什么书上能学到这种基础?

  • Knowledge Discovery in Databases (KDD) 

  • CRISP-DM

  • OSEMN

  • others…

  •   选择最适合你流程的工具

      机器学习工具和库,比较多,更新比较快,选择一个最合适你工作流程的工具,首先,调研工具和库的优缺点,根据你目前要解决的问题,选择合适的工具。

通常,你去咨询你的朋友,他们建议你选择最新的工具。但是,我喜欢用不同的工具,解决不同的实际问题。

比如,在这些场景下,我建议选择这些工具:

  • 初学者&紧急任务

     我建议选择,Weka这样的工具,对于初学者来说,比较容易上手,而且是图形化操作,方便快捷,集成许多算法。对于,特殊、紧急的任务需求也是不错的选择。

  • 小数据量、高精度任务

          我建议选择,像R的工具包,它是统计学家最喜欢的工具包,里面集成好多,最新的学术的算法。Python的机器学习库,scikit-learn也是目前和热门的机器学习库,它的社区比较活跃,也有完整的可以参考学习的文档,它可移植性也强,可以部署到实际生产环境中。

  • 大数据时代的智能系统

        我建议选择,像mahout,Spark这样的工具,它是分布式处理,对于海量数据处理是一个不错的选择,它的缺陷是,算法迭代速度慢,机器学习库还不是很完善。

 

实际上,在工作中,这些工具都有需要:

   

  • 针对实际问题,开发小项目

      你应该通过解决一些实际的问题,反复的练习,熟悉工具包,更好的使用自上而下的方法,提高你在解决问题中应用机器学习的技能。

      首先,你应该选择一些实际生产环境好的数据集,如果,没有,选择一些公开的数据集也不错,比如:UCI Machine Learning RepositoryKDD比赛提供的数据集。

      然后,你申请GitHub帐号,分享自己的项目,对提高自己也是不错的选择。在你的博客中,指明你的github链接。

       

对程序员来说,这是一个很好的方法:

     你不需要写太多的代码,因为有Weka这样的工具包;你不需要懂太多的数学理论知识,已经有实现好的库;你不需要很高的学历,因为这不是做科研工作;你不需要很大的数据集,excle的数据就可以;你不要很高性能的计算机,有一台笔记本就可以;你不需要大量的时间,你每天抽出半个小时就OK

      我经常给人们提上面这些建议,但是,实际中,还是犯这些错误,希望你能避免:

  • Not Taking Action

  • Picking Problems that are TooBig

  • Implementing Algorithms fromScratch

  • Not Sticking to a Process

  • Not Using Resources:

  • 下一步你应该干什么?

  • Select a process.

  •  Select a tool or platform.

  • Select your first dataset .

  • Report back in the comment below andexecute!

 

下面一幅图结束本文:


  希望通过这篇文章,解答大家对机器学习的畏惧和疑惑。

转自:数据挖掘

单片机

每天更新
单片机
各种知识,电子制作DIY,及
电子行业
最新资讯,关注我们,棒棒哒!

2使平板保持水平:开始——传感器电压增加——单片机控制电机左转,根据传感器输出电压幅值大小确定定时器定时时间,从而确定频率,从而控制步进电机的转速。

生成海报
点赞 0

Abin

我还没有学会写个人说明!

相关推荐

重新认识女性工程师在创新中的地位

三八女王节 You are the Queen 重新认识女性工程师在创新中的地位 在工程师这个职位上,男女工程师比例失调是不争的事实。繁重的工作、传统观念等的困扰,都导致不少女性选择放弃工程师这个职位。调查显示,在华女性工程师工作年限超过20年以上的,仅占女性工