草庐IT

机器学习初学者最常见的5个误区

深蓝学院 2023-04-18 原文

作者|ZOMI酱

来源|知乎


避开机器学习初学者最常见的5个错误

在这篇文章中,我们将看到学习Machine Learning时最常出现的 5 大错误。我相信每个人都可以入门的时候就很好地使用机器学习算法。希望这篇文章能够帮助大家避开或解决大家学习和实践中的一些错误。尽量避免跳坑。

1、 不要从理论开始入手

传统的机器学习教学是这样的:

努力掌握数学背景知识

努力学习机器学习理论

努力从头开始实现算法

自我感觉不错(一些神奇事情发生)

最后开始使用机器学习(我们的终极目标)

这种方法非常慢,而且很困难。这是为想要拓展该领域前沿的学者设计的,并不适合只是想要得到结果的实践者。

Trap

如果你在想以下问题,你就掉入了这个坑了:

我需要先完成线性代数的课程;

我需要回去先拿个博士学位;

我必须先读完教科书。

Way out

数学或深奥的算法理论学习能够怎样帮助你实现目标?你多半会停下来。会失败。不会离你的目标更进一步。解决的方法是鼓捣模型。

如果机器学习对市场的有价值的贡献是准确的预测,那么你就学习对问题进行建模并得出准确的预测吧。就从现在开始!

然后努力掌握它,做到非常擅长。

如果你需要,就阅读、窃取、收割别人的理论,但你只需要你的目标所需要的——只要它能帮助你实现更好的价值。

2、不要学习所有的机器学习算法

机器学习是一个非常大的研究领域。它是指计算机学习过程的自动化,与人工智能有很大的交叠。从深奥的学习理论到机器人技术——这个领域的范围非常广。你不可能将它们整个拿下。

Trap

如果你在想下面这些,你就落套了:

我需要学习一个新网站上提到的每一种新技术;

首先我需要学习计算机视觉、自然语言处理、语音等等;

我需要了解每项技术的每个方面。

Way out

选择一个小方向并且保持专注,然后进一步收窄。机器学习中最有价值的领域是预测建模——创建数据的模型以做出预测。

接下来,专注于一种与你最相关或你最感兴趣的预测建模,然后保持专注。也许你是根据技术选择的(比如深度学习),也许你是根据问题类型选择的(比如推荐系统);也许你不确定,只是随便选了一个。不管怎样,努力掌握它或至少做到精通。

接下来才开始进入下一个领域。

3、不要在算法上花费太多时间

机器学习实际上就是算法,而算法实在太多。每一个算法都是一个复杂的系统而且拥有自己的小研究领域和生态系统。可以选择将自己迷失在算法之中,这么做的人被称为学者。

Trap

如果你在说这些,你就已经在陷阱里了:

在我使用它之前我需要知道它的工作原理;

我首先需要深入理解超参数;

在进行微调时,我需要解释其因果关系。

Way out

算法并非结果,它们只是实现结果的方法。事实上,机器学习算法是一种商品。

多实践!不断地换不同的算法,在问题上实验各种各样的算法。对其中一些进行调节,但不要把自己困在这一步。

使用一个系统过程(systematic process)。设计调试实验并将它们的执行和分析自动化。

机器学习的关键是好好利用算法,而应用算法不只是研究算法本身。

我们的目标应该是为每一个项目得出一个结果——一组预测或一个能给出预测的模型。

4、不要从头开始实现所有东西

从头开始实现算法能够教会你很多东西。但有时候需要实现一项技术,因为没有合适的或可用的实现。但是,通常来说,你不一定要也不应该这么自己实现算法。

这样做就跳坑里去了,大部分时候事实是这样的:自己实现的结果很糟糕。

有各种漏洞

速度很慢

吃内存

无法很好地解决边缘情况

甚至可能是错的

Trap

如果你在做下面这些事,你已经掉入陷阱了:

你在编写载入 CSV 文件的代码(搞什么鬼!?用panda!);

你在编写线性回归这种标准算法的代码;

在编写用于交叉验证或超参数调整的代码;

Way out

别折腾了!

使用一个已被成千上万的开发者所使用过的能够处理所有边缘情况的库,众所周知它是正确的;

使用一个经过了高度优化的库,它能充分利用你的硬件的每一个计算周期和你的内存的每一个字节;

为你的项目使用一个图形用户界面,从而完全避开代码;

每次都自己实现你想要使用的算法是非常缓慢的入门机器学习的方式。如果你是为了学习而实现它们,那么就要对自己诚实:你的实现还不够好,你不能通过这样应用机器学习来带来价值。

5、不要总改变使用的工具

目前有很多的很棒的机器学习工具。事实上,很棒的工具加上数据的可用性和更快的硬件使得机器学习的复兴成为了可能。但你可能陷入这样一个坑中:跳入每个你偶然发现的新工具中。

Trap

如果发现自己符合以下三点那你就陷入了该陷阱中:

使用每个你听到过的新工具

发现自己每周或每个月都学习一项新工具或语言

学习一个库时半途而废并转向新的库

Way out

有规律的学习和使用新工具,在解决实际问题时融合不同的工具。选择一个主要的大型平台并坚持使用它,那在解决机器学习问题时会更加高效,至少也要足够精通该平台。

这里我推荐 3 个的平台:Weka; Python; R

总结

不要从理论开始入手

不要学习所有的机器学习

不要在算法上花费太多时间

不要从头开始实现所有东西

不要总改变使用的工具

本文不太赞成自己真真正正地从头到尾学习去自己实现一个算法,例如向后传播BP算法,也不赞成从数学底层地角度去理解为什么梯度下降有效、如何操作才能减少梯度发散的等高深莫测的数学问题。对于一个工程上的问题,我们需要的是解决问题、达到目标,实现价值,这是针对工程应用的。

对于个人的能力的提升,是需要去不断地学习、应用、实践再回归学习的一个epoch循环。如果我们不理解推荐系统的协同过滤算法,跟吃瓜的群众一样:“根据历史的数据去匹配一个跟我相似的用户”这样的说法,那么就太吃瓜了。

ABOUT

关于我们

深蓝学院是专注于人工智能的在线教育平台,已有数万名伙伴在深蓝学院平台学习,很多都来自于国内外知名院校,比如清华、北大等。

有关机器学习初学者最常见的5个误区的更多相关文章

  1. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

  2. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  3. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  4. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  5. git使用常见问题(提交代码,合并冲突) - 2

    文章目录git常用命令(简介,详细参数往下看)Git提交代码步骤gitpullgitstatusgitaddgitcommitgitpushgit代码冲突合并问题方法一:放弃本地代码方法二:合并代码常用命令以及详细参数gitadd将文件添加到仓库:gitdiff比较文件异同gitlog查看历史记录gitreset代码回滚版本库相关操作远程仓库相关操作分支相关操作创建分支查看分支:gitbranch合并分支:gitmerge删除分支:gitbranch-ddev查看分支合并图:gitlog–graph–pretty=oneline–abbrev-commit撤消某次提交git用户名密码相关配置g

  6. ruby - 易于初学者理解的 Ruby 库 - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion我正处于学习Ruby的阶段,我想查看一些小型库的源代码以了解它们是如何构建的。我不知道什么是小型图书馆,但希望SO能推荐一些易于理解的图书馆来学习。因此,如果有人知道一两个非常小的库,这是新手Rubyists学习的好例子,请推荐!我想使用Manveru'sInnatelib,因为它试图保持在2000LOC以下,但我还不熟悉其中经常使用的Ruby速记。也许大约100-5

  7. ruby - 我的 Ruby IRC 机器人没有连接到 IRC 服务器。我究竟做错了什么? - 2

    require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame

  8. ruby - 我正在学习编程并选择了 Ruby。我应该升级到 Ruby 1.9 吗? - 2

    我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or

  9. ruby - 将对象设置为 nil 是否很常见? - 2

    我正在构建一个应用程序,想知道是否将未使用的对象设置为nil是生产级编码中的常见做法。我知道这只是垃圾收集器的提示,并不总是处理对象。 最佳答案 根据这个thread如果您使用完一个成员对象,将其设置为nil将引发被引用对象被垃圾回收。如果它是局部变量,方法exit将做同样的事情。也就是说,如果您要求将成员显式设置为nil,我会质疑您的设计。 关于ruby-将对象设置为nil是否很常见?,我们在StackOverflow上找到一个类似的问题: https://

  10. ruby - 变量赋值后的 if 语句 - 有多常见? - 2

    我最近与一位同事讨论了以下Ruby语法:value=ifa==0"foo"elsifa>42"bar"else"fizz"end我个人并没有看到太多这种逻辑,但我的同事指出,这实际上是一种相当普遍的Rubyism。我试着用谷歌搜索这个主题,但没有找到任何文章、页面或SO问题来讨论它,这让我相信这可能是一种非常实际的技术。然而,另一位同事发现语法令人困惑,而是将上面的逻辑写成这样:ifa==0value="foo"elsifa>42value="bar"elsevalue="fizz"end缺点是value=的重复声明和隐式elsenil的丢失,如果我们想使用它的话。这也感觉它与Ruby

随机推荐