前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >停止从头开始编写机器学习算法

停止从头开始编写机器学习算法

作者头像
anthlu
发布2018-02-08 10:57:38
6930
发布2018-02-08 10:57:38
举报
文章被收录于专栏:AI

你不必实现算法 ... 如果你是一个初学者且刚开始。

停下来。

你现在正在实现一个机器学习算法吗?

为什么?

从头开始实现算法是我看到初学者犯的最大的错误之一。

在这篇文章中,你会发现:

  • 初学者陷入的算法实现陷阱。
  • 世界级的工程机器学习算法实现起来非常的困难。
  • 为什么你应该使用现成的实现。

让我们开始吧。

不要实现机器学习算法  照片来自kirandulo,保留一些权利。
不要实现机器学习算法 照片来自kirandulo,保留一些权利。

陷入实现陷阱

以下是我收到的一封电子邮件的摘录:

...我真的很挣扎 为什么我必须从头开始实现算法?

很多开发者似乎都陷入了这个挑战。

他们被告知或暗示:

算法必须 在使用之前实现。

或者那个:

你只能通过 实现算法来学习机器学习。

以下是我偶然发现的一些类似问题:

  • 为什么当有许多高级API如 tensorflow可用时还需要手动实现机器学习算法,?Quora
  • 是否有价值自己实施机器学习算法,还是应该使用库?Quora
  • 实现机器学习算法有用吗?Quora
  • 我应该使用哪种编程语言来实现机器学习算法?Quora
  • 为什么你和其他人有时候会从头开始实现机器学习算法?GitHub

你可能做错了

您不必从头开始实现机器学习算法。

这是传统上用于教授机器学习的自下而上方法的一部分。

  1. 学习数学。
  2. 学习理论。
  3. 从零开始实现算法。
  4. ??? (魔术发生在这里)。
  5. 应用机器学习。

将机器学习算法应用于一个问题并得到一个结果要比从零开始实现它要容易得多。

超级容易!

学习如何使用算法而不是实现算法不仅更容易,而且更有价值的技巧。一个你可以开始使用非常迅速地产生真正的影响的技巧。

应用机器学习可以挑选出许多低洼的成果。

实现机器学习算法嘛 ...真的很难!

您用来解决业务问题的算法需要快速正确

快速算法

更复杂的非线性方法比线性方法需要更多的数据。

这意味着他们需要做很多工作,这可能需要很长时间。

算法需要快速处理所有这些数据。特别是在规模上。

这可能需要以最适合于底层库中的特定矩阵操作的方式重新解释在该方法下面的线性代数。

它可能需要专门的缓存知识来充分利用硬件。

在获得“hello world”实施后,这些并不是特别的技巧。这些是包含算法实施项目的工程挑战。

正确的算法

机器学习算法会给你一个结果,即使它们的实现是残缺的。

你得到一个数字。输出。预测。

有时预测是正确的,有时不是。

机器学习算法使用随机性。他们是随机算法

这不仅仅是单元测试的问题,而是对技术有深入的了解,并设计案例来证明实现如预期的一样,并处理边缘案例。

使用现成的实现

你可能是一个优秀的工程师。

但是,与现成的实现相比,算法的“hello world”实现可能无法实现。

你的实现可能是基于教科书的描述,这意味着它将是幼稚和缓慢的。你可能有也可能没有专门的设计测试来确保你的实现的正确性。

开源库中的现成实现是为了速度和/或健壮性而构建的。

你怎么能不使用标准的机器学习库?

它们可能是为了尽可能快地适应狭窄的问题类型而设计的。它们也可能用于一般用途,确保它们在广泛的问题上正确运行,超出您的考虑范围。

库并非都是相同的

并非所有从互联网下载的算法实现都是相同的。

来自GitHub的代码片段可能是研究生的“hello world”实现,也可能是整个研究团队在大型组织中贡献的高度优化的实现。

您需要评估您使用的代码的来源。有些来源比其他来源更好或更可靠。

一般用途的库通常是以更快的速度增强的。

黑客工程师的快速实施通常会遭受糟糕的文档记录,并且在涉及到他们的期望时会变得非常迂腐。

考虑到这一点,当你选择你的实施。

建议

当被问及时,我通常会推荐三种平台之一:

  1. Weka。一个不需要任何代码的图形用户界面。如果你想专注于机器学习,并学习如何解决问题,这是一个很好的选择。
  2. Python。包括pandas和scikit-learn的生态系统。非常适合将解决方案拼接到开发中的机器学习问题,这个方案已经足够强大,也可以部署到操作中。
  3. R 。更先进的平台,虽然有一个深奥的语言,有时还有一些错误的软件包,可以使用学术界直接编写的最先进的方法。伟大的一次性项目和研发。

这些只是我的建议,还有更多的机器学习平台可供选择。

有时你必须实现

您刚进入机器学习时,不必自己实现机器学习算法。

但是你可以。

这样做可能有很好的理由。

比如这里有三大原因:

  • 你想要实现来学习算法是如何工作的。
  • 没有你需要的算法的可用的实现。
  • 你所需要的算法没有合适的(足够快等)实现。

第一个是我最喜欢的。这可能会让你感到困惑。

您可以实现机器学习算法,以了解它们如何工作。我推荐它。这对开发人员来说是非常有效的。

但是。

您不必实施机器学习算法开始。在实施机器学习算法之前,学习如何使用机器学习算法,您将更快地建立机器学习的信心和技能。

实施和任何需要完成实施的研究将会提高你的理解。下一次使用该算法时,可以帮助您获得更好的结果。

概要

在这篇文章中,您发现初学者陷入了从头开始实施机器学习算法的陷阱。

他们被告知这是唯一的方法。

您发现设计机器学习算法的快速和健壮的实现是一个艰难的挑战。

您了解到,在实施机器学习算法之前学习如何使用机器学习算法更容易,也更可取。您还了解到,实现算法是学习更多关于它们如何工作并从中获得更多的好方法,但只有在您知道如何使用它们之后。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 你不必实现算法 ... 如果你是一个初学者且刚开始。
  • 陷入实现陷阱
  • 你可能做错了
  • 实现机器学习算法嘛 ...真的很难!
    • 快速算法
      • 正确的算法
      • 使用现成的实现
        • 库并非都是相同的
          • 建议
          • 有时你必须实现
          • 概要
          相关产品与服务
          腾讯云 TI 平台
          腾讯云 TI 平台(TencentCloud TI Platform)是基于腾讯先进 AI 能力和多年技术经验,面向开发者、政企提供的全栈式人工智能开发服务平台,致力于打通包含从数据获取、数据处理、算法构建、模型训练、模型评估、模型部署、到 AI 应用开发的产业 + AI 落地全流程链路,帮助用户快速创建和部署 AI 应用,管理全周期 AI 解决方案,从而助力政企单位加速数字化转型并促进 AI 行业生态共建。腾讯云 TI 平台系列产品支持公有云访问、私有化部署以及专属云部署。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档