分享

从入门到擅长:五步掌握机器学习应用方法 | 机器之心

 SHP周 2017-08-09


我来教大家入门机器学习应用的5个步骤。

它是非传统的。

传统教授机器学习的方法是自下而上。

Capture.PNG

从理论和数学开始,然后是算法实现,最后你可以开始解决实际的问题。

在通往机器学习专业人员的道路上,传统方法的道路和实践者所需要的道路之间还是存在很大差距的。

本文这个掌握机器学习的方法克服了这个问题并且是从所能得到的最有价值的结果开始的。

这个方法针对商业领域,目标是从机器学习的实践中获得回报。

怎样展现一个结果

结果的形式是一些预测或者模型的集合,它们能可靠地给出预测。

这是一种自上而下结果优先的方法。

10415_670d3369559cd4f24e79046d6372a0e9.png

带着为了达到市场最想要的结果的目标,作为从业者的你,要怎样选择最短路径去得到那个结果?

我们可以将这条路径总结为5个步骤:
   步骤1:调整心态(相信!)
   步骤2:挑选一个过程(怎样得到结果)
   步骤3:挑选一种工具(实施)
   步骤4:在数据集上应用(投入工作)
   步骤5:建立一个组合(展现你的技能)

这就是我所有电子书(Hands-on Machine Learning Training 系列:http:///products/ )背后的逻辑。

我知道它是一种更简单的学习方法,而我需要做的事情仅仅是分享它。因此,我创建了这个网站。

下面是展示这个流程的漫画,为了简单,省略了步骤 1 和步骤 2。

一种学习机器学习更好的方法——从端对端处理机器学习问题开始。
   下面我们来仔细讲解每一步。

步骤0:界标

在开始之前,你应该知道机器学习的分界范围。

我经常只是假设它,但是,除非你了解一些基础,否则你无法进行工作。
   例如:

步骤1:心态

机器学习不只是面向那些教授的。

它不只属于天才和学者。

你必须相信

你可以学习它并用它解决问题。

  • 没什么理由说不能。因为

  • 你不需要写代码。

  • 你不需要精通数学。

  • 你不需要很高的学位。

  • 你不需要大数据。

  • 你不需要超级计算机。

  • 你不需要很多时间。

找个借口不开始机器学习是非常容易的事情。
   但是,唯一阻碍你不开始进而不擅长机器学习的理由,就是你自己。

  • 也许你只是缺少动力。

  • 也许你认为你需要从头开始实现一切。

  • 也许你一直在挑高级问题而不是初学者问题去解决。

  • 也许你没有系统的过程去遵循,以得出一个结果。

  • 也许你没有使用好的工具和库。

jqzx (113).png

抛掉那些限制你开始的想法吧。
   这篇博客或许会帮助你:

是什么阻止你实现你的机器学习目标的:http:///what-is-holding-you-back-from-your-machine-learning-goals/

机器学习的道路上,你会碰到很多会使你减速的问题。
   识别它们,解决它们,然后继续前进。

为什么是机器学习?

一旦你知道你可以做机器学习,你需要知道为什么用它。

  • 也许你对学习更多的机器学习算法感兴趣。

  • 也许你对创建预测感兴趣。

  • 也许你对解决复杂问题感兴趣。

  • 也许你对编写更智能的软件感兴趣。

  • 也许你甚至对成为一个数据科学家感兴趣。

认真的思考一下这个问题,然后认清你用机器学习的原因。

这篇博客或许会帮助你:
   为什么进入机器学习领域?:http:///why-get-into-machine-learning/

一旦你清楚了原因,找到属于你的群体。
   哪一个机器学习从业群体与你最接近?

  • 也许你是一个普遍感兴趣的商业人士。

  • 也许你是一个交付项目的经理。

  • 也许你是一个学习机器学习的学生。

  • 也许你是一个机器学习研究员。

  • 也许你是一个有棘手问题的研究者。

  • 也许你希望实现算法。

  • 也许你需要一次性的预测。

  • 也许你需要一个可以部署的模型。

  • 也许你是一个数据科学家。

  • 也许你是一个数据分析师。

每一个群体都有不同的兴趣,它们各自从不同的角度解决机器学习领域。
   并不是所有书籍和材料都适合你,找到你的群体,然后找到最适合你的学习材料。

这篇博客或许会帮助你:
   找到你的机器学习群体:http:///machine-learning-tribe/

步骤2:挑选一个过程

在频繁处理问题时,你希望可靠地得到高于平均值的结果吗?
   你需要遵循一个系统性的流程。

  • 一个让你利用和重用最佳方法的过程。

  • 它意味着你不需要依赖记忆或直觉。

  • 它手把手指导你做一个项目。

  • 它意味着你总是知道下一步做什么。

  • 它可以针对你的特定问题类型和工具进行调整。

一个系统性的流程是好的结果和坏的结果之间的过山车与高于平均值并不断提升结果之间的差别。

我推荐的过程模板如下:

  • 步骤1:定义你的问题。

  • 步骤2:准备你的数据。

  • 步骤3:抽查算法。

  • 步骤4:提升结果。

  • 步骤5:展示结果。

下面这幅图总结这个系统性流程。

jqzx (131).png

选择一个系统、可重复的流程,你可以用它不断地产生结果。

想要了解这个流程的更多内容请看这篇博客:
   应用机器学习过程:http:///process-for-working-through-machine-learning-problems/

你不需要一定去用这个流程,但是你需要一个系统性的流程来协助完成预测建模问题。

步骤3:挑选一种工具

挑选可以用来产生机器学习结果的最佳工具。
   将你的过程结合到工具中,并了解如何最有效地使用它。
   这三个工具我最推荐:

  • Weka 机器学习工作台(workbench)(适合初学者)。Weka 提供了一个 GUI 交互界面而且不需要编写代码。我使用它做快速一次性建模问题。

  • Python 生态系统(适合中级者)。特别是 pandas 和 scikit-learn 包,它们在 SciPy 平台上排名处于最前端。

  • R 平台(适合高级者)。R 是为统计计算设计的,虽然R语言很深奥而且有些包的说明文件写的很差,但它提供了大多数方法和最先进的技术。

  • 下面是对应的教程:
       Weka 机器学习迷你课程:http:///applied-machine-learning-weka-mini-course/
       Python 机器学习迷你课程:http:///python-machine-learning-mini-course/
       R 机器学习迷你课程:http:///r-machine-learning-mini-course/

对特殊领域,我也有一些建议:

深度学习的 Keras。它使用 Python 语言,意味着你可以最大化的使用 Python 生态环境从而节省大量时间。它的交互界面非常整洁,同时也支持强大的 Theano 和 Keras 后端。

用于 Gradient Boosting 的 XGBoost。它是该提升技术领域里速度最快的算法。它同时支持 R 和 Python,你可以在项目中利用任意一个平台。

下面是对应的教程:

深度学习迷你课程:http:///applied-deep-learning-in-python-mini-course/
   XGBoost 迷你课程:http:///xgboost-python-mini-course/

这仅仅是我个人的建议,对应每一个话题,我有很多博客和详细的教程。
   学习怎样很好的使用你选择的工具。学习它。成为使用它的专家。

什么编程语言?

用什么编程语言并不重要。
   甚至你使用什么工具也不重要。
   在解决问题的过程中学习到的技能才是最重要的,它会让你从一个平台轻易的转到另一个平台。
   但是,关于机器学习中最受欢迎的编程语言,这里有一份调查结果:

机器学习最受欢迎的编程语言:http:///best-programming-language-for-machine-learning/

步骤4:在数据集上应用

  • 当你拥有过程和工具,你需要应用它。

  • 你需要大量地应用。

  • 在标准机器学习数据集上应用。

  • 使用真实的数据集,就是数据是从实际问题中产生的(而不是编造的)。

  • 使用小的数据集,可以装进内存或者Excel表格。

  • 使用易于理解的数据,你就知道可以期待什么样的结果。

在不同的数据集上应用。在让你感到棘手的问题上应用,这会推动你发掘技能去得到一个结果。寻找数据问题的不同特点,例如:

  • 不同种类的有监督学习,如分类和回归。

  • 不同大小的数据集,样本数量从十到百再到上千上百万。

  • 不同的属性个数,从少于十到十再到上百上千。

  • 不同的属性格式,实数、整数、类别变量、序列变量和混合变量。

  • 不同领域的数据,迫使你快速理解和描述一个新问题的特征。

使用 UCI 机器学习知识库
   这些是最常用、最好理解和最容易上手的数据集。

这篇博客中有更多内容:
   使用来自 UCI 机器学习库的小内存数据集实践机器学习:http:///practice-machine-learning-with-small-in-memory-datasets-from-the-uci-machine-learning-repository/

利用机器学习竞赛,比如 Kaggle
   这些数据集通常更大,也需要更多的准备来建模。
   对于你可以练习的最受欢迎的数据集的列表,可以参阅博客:
   真实世界的机器学习问题概览:http:///tour-of-real-world-machine-learning-problems/

练习你自己设计的问题
   收集有关机器学习问题的数据。
   你会发现你设计的问题和得出的结果更有价值。
   有关更多信息,请参阅博客:
   做对你有价值的机器学习问题:http:///work-on-machine-learning-problems-that-matter-to-you/

步骤5:建立一个组合

你将构建一个已完成项目的集合。

好好利用它们。

当你处理数据集并获得更好的结果时,总结你的发现并以半正式的形式输出。

  • 也许上传你的代码并在 readme 文档中总结。

  • 也许在博客中阐述你的结果。

  • 也许你做一个幻灯片。

  • 也许你在 YouTube 上创建一段视频。

这些完成的项目中每一个都代表着你的组合的成长。

就像一个画家,你可以构建已完成工作的组合,来展示你通过提供机器学习结果而日益增长的技能。

想了解这个方法的更多内容,请参阅这篇博客:

建立一个机器学习组合:http:///build-a-machine-learning-portfolio/

你可以自己使用这个组合,利用之前完成的代码和知识来实现更有抱负的项目。
   一旦你的组合成熟,你甚至可以更有价值地利用它或选择一个关注机器学习的工作。

了解更多

应用机器学习获利:http:///ladder-approach-to-becoming-a-machine-learning-consultant/

建议和技巧

下面是一些实用的建议和技巧,在使用过程中,你可以考虑运用它们。

  • 从一个简单的过程(例如上面的过程)和一个简单的工具(例如 Weka)开始,一旦你有了信心,你就可以进入更深领域。

  • 从最简单和最常用的数据集开始(例如 Iris 鸢尾花和 Pima 糖尿病数据集)。

  • 每次应用这个流程时,寻找提升它效果的方法。

  • 如果你发现了新的方法,找出将它们整合到你的流程中的最佳方法。

  • 研究算法,但前提是为了帮助你用这个过程达到更好结果。

  • 向专家学习,寻找你可以借鉴并运用到你过程中的方法。

  • 就如你在做预测模型问题一样,学习你的工具,并最大化地利用它。

  • 解决越来越难的问题,撇开那些简单的因为你并不会从中学到很多东西。

  • 专注于清晰呈现结果,你做得越好,对你的组合影响越大。

  • 参与社区论坛和 Q&A 问答网站,提问和回答问题。

总结

这就是应用机器学习的开始和进阶的 5 个步骤。

虽然看起来简单,但是实践起来确实需要刻苦的精神,你的努力也会得到回报。
   很多我的学生通过这个流程学习,并得到了机器学习工程师和数据科学家的工作职位。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多