前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >干货|程序员到机器学习工程师飞跃的实战经验

干货|程序员到机器学习工程师飞跃的实战经验

作者头像
fishexpert
发布2018-12-18 16:53:16
4020
发布2018-12-18 16:53:16
举报

经常听到这样的话:

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

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

  1. 你会发现传统的学习机器学习的方法,对你并不起作用;
  2. 你会发现如何更好的理解所有的模型;
  3. 你会发现我的简单而高效的方法,对你在工程中应用机器学习很奏效。
  • 热爱机器学习的软件工程师

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

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

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

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

  • 机器学习工程师

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

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

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

  • 自下而上的方法

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

  • 最佳的解决方法

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

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

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

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

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

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

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

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

  • 能引导你从端到端,从分析实际问题,到解决实际问题、到模型的部署。像软件开发一样,从PM提出产品需求到RD开发再到QA测试上线一样,它是一个标准化、规范化的流程。
  • 一个循序渐进的过程,这样你永远知道下一步该做什么,不知道下一步做什么,对项目而言是很危险的。
  • 一个可以保证好的结果的流程,这对于一个项目而言是很重要的,它的结果是需要可信、可解释的。
  • 与具体使用的工具、使用的编程语言、使用的算法没有关系,新工具会诞生、新算法会出现。

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

  • Knowledge Discovery in Databases (KDD)
  • CRISP-DM
  • OSEMN
  • others…
  • 选择最适合你流程的工具

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

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

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

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

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

  • 大数据时代的智能系统

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

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

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

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

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

然后,你申请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!

下面一幅图结束本文:

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 深度学习与数据挖掘实战 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
TI-ONE 训练平台
TI-ONE 训练平台(以下简称TI-ONE)是为 AI 工程师打造的一站式机器学习平台,为用户提供从数据接入、模型训练、模型管理到模型服务的全流程开发支持。TI-ONE 支持多种训练方式和算法框架,满足不同 AI 应用场景的需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档