进入机器学习领域有很多途径,大多数都始于理论学习。
如果你是一名程序员,那么 你已经具备了将问题分解为其组成部分的能力,并且能够通过原型设计小项目来学习新技术、库和方法。这些技能对于任何专业的程序员来说都很重要,并且可以用于立即开始机器学习领域的工作。
这些技能对于任何专业的程序员来说都很重要,并且可以用于立即开始机器学习领域的工作。

自学
照片作者:gfairchild,部分权利保留
要有效地进行机器学习,你必须学习理论知识,但你可以利用你的兴趣和求知欲来激励你从实际示例过渡到对算法的数学理解。
在本文中,你将了解程序员可以遵循的四种机器学习入门策略。这是技术人员的道路,务实且经验丰富,需要你进行研究并完成实验,以建立自己的直觉。
这四种策略是
- 学习一个机器学习工具
- 学习一个机器学习数据集
- 学习一个机器学习算法
- 实现一个机器学习算法
阅读这些策略,并选择一个你认为最适合你的,然后毫不犹豫地去执行。
1. 学习一个机器学习工具
选择一个你喜欢的工具或库,并精通其使用。
我建议你从一个提供数据准备工具、机器学习算法和结果展示的环境开始。学习这样的环境将使你能够掌握端到端的机器学习过程,这比学习特定的数据准备技术或机器学习算法更有价值。
或者,也许你对特定的技术或一类技术感兴趣。你可以利用这个机会深入研究一个提供这些方法的库或工具,并通过掌握提供这些方法访问权限的库来精通该技术。

学习一个机器学习工具
照片作者:zzpza,部分权利保留
你可以为这个策略遵循的一些方法是
- 比较和对比候选工具,从中选择。
- 总结你所选工具的功能。
- 阅读并总结该工具的文档。
- 完成该工具的文本或视频教程,并总结你完成的每个教程的关键学习点。
- 创建该工具的功能或特性的教程。选择你不太了解的内容,并创建一个获取结果的流程,或者录制一个 5 分钟的屏幕录像,演示如何使用该特性。
你应该考虑的一些环境包括:R、Weka、scikit-learn、waffles 和 orange。
2. 学习一个机器学习数据集
选择一个数据集,深入了解它,并找出哪种算法类别或类型最适合它。
我建议你选择一个中等大小、可以放入内存、并且可能已经被深入研究过的数据集。有许多优秀的数据源库可供你浏览和选择。你的目标是理解数据源所代表的底层问题、数据集的结构以及最适合该问题的那类解决方案。
使用机器学习或统计环境来研究数据集。这将使你能够专注于你想回答的数据集问题,而不是被学习特定技术和学习如何在代码中实现它的问题所分散注意力。

学习一个机器学习数据集
照片作者:abhidg,部分权利保留
可以帮助你研究实验性机器学习数据集的一些方法是
- 清晰地描述数据集所代表的问题。
- 使用描述性统计数据总结数据。
- 描述你在数据中观察到的结构,并假设数据中的关系。
- 对数据集进行少量流行机器学习算法的抽样测试,找出哪个通用类别比其他类别表现更好。
- 调整表现良好的算法,找出在问题上表现良好的算法和算法配置。
一些高质量数据集的存储库你可能想考虑:UCI ML Repository、Kaggle 和 data.gov。
3. 学习一个机器学习算法
选择一个算法,深入了解它,并找出在不同数据集上稳定的参数配置。
我建议你从一个复杂度适中的算法开始。选择一个被充分理解、有许多开源实现可供选择且参数较少的算法。你的目标是建立对算法在各种问题和参数配置下表现的直觉。
使用机器学习环境或库。这将使你能够专注于算法作为一个“系统”的行为,而不是纠结于规范的数学描述和参考文献。

学习一个机器学习算法
照片作者:Unhindered by Talent,部分权利保留
在学习你选择的机器学习算法时,你可以使用的一些方法是
- 总结系统的参数及其对算法的预期影响。
- 选择一系列适合该算法的数据集,这些数据集可能会引发不同的行为。
- 选择你认为会引发系统不同行为的算法参数配置,并列出你可能预期的系统行为。
- 考虑算法在迭代更新过程或其他时间间隔中运行时可以监测的算法行为。
- 设计小型实验,使用一个或多个数据集、算法配置和行为度量组合来回答一个特定问题,并报告结果。
你的研究可以根据你的喜好简单或复杂。在较高层面上,你可以探索所谓的启发式方法或应用算法的经验法则,并实证证明它们是否有价值,如果有,在什么情况下它们会与成功的结果相关。
你开始时可以考虑的一些算法包括:最小二乘线性回归、逻辑回归、k近邻分类、感知器
4. 实现一个机器学习算法
选择一个算法,并将其实现或将现有实现移植到你选择的语言。
选择一个复杂度适中的算法来实现。我建议你对你想实现的算法进行一些详细的研究,或者选择一个你喜欢的实现并将其移植到你选择的目标编程语言。
从头手动实现算法是学习将算法描述转化为功能系统的许多微小决策的好方法。通过多次重复这个过程,你将能快速获得阅读研究论文和书籍中算法数学描述的直觉。

实现一个机器学习算法
照片作者:Nic’s events,部分权利保留
五种可以帮助你从头实现机器学习算法的方法是
- 从移植开始。将一个开源算法实现从一种语言移植到另一种语言将教会你算法是如何实现的,并使其成为你自己的。这是最快的入门方式,强烈推荐。
- 选择一个算法描述作为工作基础,并收集其他算法描述来帮助你区分主要的参考材料。
- 不要害怕联系算法作者、论文作者甚至算法实现作者,向他们提问以帮助你区分你对算法描述的理解。
- 大量阅读你目标算法的实现。学习不同的程序员如何解读算法描述并将其转化为代码。
- 不要纠结于高级方法。许多机器学习算法在其核心使用了高级优化方法。除非这是你项目的重点,否则不要尝试重新实现这些方法。使用提供优化算法的库,或者使用一个易于实现(如梯度下降)或你可以在库中获得的简单优化算法。
小型项目方法论
这四种策略构成了一种我称之为“小型项目”的方法论。它是一种你可以用来快速建立在机器学习等技术领域实践技能的方法。基本思想是设计并执行小型项目,这些项目针对你想回答的特定问题。
小型项目在几个维度上都很小,以确保它们能够完成,并且你能够提取学习效益并继续下一个项目。以下是你应考虑对项目施加的限制
- 时间短:一个项目从构思到结果展示不应超过 5-15 小时。这将使你能够在工作之余,在一个周末内完成一个小项目。
- 范围小:一个项目应该解决你感兴趣的最狭窄版本的问题,并且仍然有意义。例如,与其解决“编写一个程序来告诉我一条推文是否会被转发”这个普遍问题,不如仅针对特定推特账号在特定时间段解决这个问题。
- 资源少:一个项目应该能够在你的台式机或笔记本电脑上完成,只需要互联网连接。你不应该需要奇异的软件、Web 基础设施或第三方数据或服务。收集你需要的文件数据,将其加载到内存中,并使用开源工具来解决你的狭窄问题。
其他项目技巧
这些策略的原则是采取行动并利用你的程序员技能。以下是三个帮助你调整心态以采取行动的技巧
- 写下你学到的东西。我建议你为你采取的每一步都建立一个切实可行的工作产品。这可以是你日记中的笔记、一条推文、一篇博客文章或一个开源项目。每个工作产品都充当一个锚点和里程碑。
- 除非目的是写代码,否则不要写代码。这个技巧并不明显,但它可能是在加速你对机器学习理解方面最重要的。
- 目标是你学习一些东西,而不是创造一个独特的资源。没有人会阅读你的研究、教程或关于算法的笔记,暂时忽略这一点。它们是你的视角和你的工作产品,用来证明你现在知道一些东西。
总结
以下是这四种策略,每种都配有一句简明的说明,以帮助你选择最适合你的策略。
- 学习一个机器学习工具:选择一个你喜欢的工具或库,并精通其使用。
- 学习一个机器学习数据集:选择一个数据集,深入了解它,并找出哪种算法类别或类型最适合它。
- 学习一个机器学习算法:选择一个算法,深入了解它,并找出在不同数据集上稳定的参数配置。
- 实现一个机器学习算法:选择一个算法,并将其实现或将现有实现移植到你选择的语言。
选择一个!
你会选择哪种策略,你的第一步是什么?选择一个并在下面的评论中声明你的意图。
我正在尝试学习机器学习,但我不知道如何开始。
https://www.linkedin.com/feed/update/urn:li:activity:6455048911974473728/
太棒了
谢谢,很高兴你喜欢。如果你开始了一个项目,请告诉我。
我喜欢,我选择 3
非常有用的帖子,谢谢 Jason!!!
很高兴听到这个 Ben,谢谢。
你好,
非常有用的和信息丰富的。我通常遵循类似的模式,并且总是先尝试移植,因为它能给我信心。
谢谢
很棒的建议,谢谢 Muhammad。
很棒的帖子 Jason。非常有用的技巧。谢谢
干得好……
另一个小型项目是优化一段代码——最近遇到了一个场景,样本/训练/实验数据集“运行正常”,但使用完整数据时太慢而无法使用。因此,我专注于优化已知有效并产生预期结果的某个方面的效率。
祝好
感谢 Jason 对机器学习这样一个有趣领域如此清晰的描述。我正在权衡这四种方式,但希望我能从 1 过渡到 4 会非常有趣……非常感谢你的见解!
感谢您的邮件推荐。我非常喜欢小型项目方法论,我一定会尝试的。
你的“除非目的是写代码,否则不要写代码”的见解可能会让我克服总是创建可重用代码的执念。希望它能奏效!
谢谢你的建议。
谢谢 Andreas,祝你好运!
这篇文字很有帮助,它让我有信心能够实现我的 ML 目标。谢谢你,Jason。
非常欢迎,Sunday!我们感谢您的反馈和支持。
很棒的建议!!!!非常感谢!很棒
很棒的帖子……非常感谢!
我之前很迷茫。感谢这篇启发性的文章。
这是一篇非常好且有用的
文章……
能否请您给我发送一个关于模式识别和机器学习的项目,最好是用 Python 语言。
我需要这个作为我的项目参考……
这将非常有帮助。
谢谢并致以问候
很棒的帖子,我正朝着第 2 个项目前进。
你好,
非常棒的帖子,谢谢,这正是我所需要的。此外,我刚刚购买了“小型项目方法论”,但我没有收到下载链接。请提供。
此致
Gianfranco
我已私下向您发送了关于此事的邮件。
你的每一篇写作都很棒。
你好,Jason
你的网站很棒!!我非常受益并喜欢你的帖子。谢谢。
超级信息量!非常感谢!!!
很有帮助,链接也是很好的学习资源。
我是一名初学者。请帮我决定一个项目。
嗨,谢谢……我需要编译器数据集用于我的项目“使用机器学习进行编译器优化”。我到处搜索了……都没有找到……如果你知道,请帮助我……这将非常有帮助。
我想安装一个服务器来提供 H2O 机器学习研究服务。
期待您的一些帮助。
谢谢。
嗨,你的 H2O 机器学习研究有进展吗?进展如何?
这将是我的第一个 ML 项目,我将独自完成。我决定专注于 scikit-learn 和 Weka (Java) 这两个工具。我正考虑构建一个垃圾邮件过滤器,因为我是一名初学者。
你建议 Python 还是 Java?
我两种语言都很熟悉,谢谢。
Python!
因为它有大量的库可以工作!
你能为我推荐一个 Weka 的小型项目吗?
考虑 Iris 数据集。
https://machinelearning.org.cn/how-to-run-your-first-classifier-in-weka/
这非常有帮助,Jason。非常感谢。
我选择了 Weka。
谢谢 Jim。
嗨,Jason,
MachingLearningMastery.com 向我们展示了如何成为更好的人。
通过分享。
你极大地促进了人类和机器的发展。
愿你的孩子向你学习。
谢谢 Usman。
请,我是一名新手,但乐于学习。我想攻读博士学位,并希望找到与机器学习相关的内容。我不知道是否有人能帮助我确定研究课题。
我有一个想法;“使用机器学习技术评估产品的市场价值”。我不知道这是否可以作为机器学习领域博士研究的课题。
我的目标是研究某个产品在一段时间内的表现,并根据材料、客户支持、价格等因素确定该产品的未来需求。
关于博士课题,最好咨询你的导师。
你好,
这篇帖子非常有用。我是一名机器学习初学者,一直在寻找一个合适的策略来遵循。现在,通过你这篇精彩的帖子,我感觉大有帮助。非常感谢!:):):):)
不客气 Grace。
Jason,谢谢你,你太棒了。我将选择“学习一个机器学习算法”,那就是感知器。
听起来很棒,祝你好运,Eudie。
Jasn,你的努力很棒;
先谢谢了。我已开始学习 weka。
很高兴听到这个,Khalid。
大家好,以及亲爱的管理员(Jason Brownlee先生)
我是一名电子学专业硕士生,但我在进行数据融合的机器学习算法。我一直在寻找一些答案,很幸运在您的网页上找到了非常有用的主题。现在,我有一个问题。我正在进行一个研究项目,该项目属于监督学习结构,基本上是一个使用集成学习系统的分类问题,该系统在信念函数框架(Dempster-Shafer理论)中组合基础分类器。我正在寻找一个与我的项目兼容的适用数据库,用于处理具有不完美标签的数据。您能否为我的工作推荐一个适合且新颖且具有挑战性的数据库?
提前感谢!
Jason,您能帮助我进行数据融合领域的研究吗?我想实现一个机器学习算法,有什么好的参考吗?如果可能,可以发邮件给我吗?
抱歉,Amit,我对数据融合不太了解。
这篇文章非常有帮助。
很高兴你觉得它有用,Nill。
非常有帮助,谢谢!
很高兴听到这个,Mohammad。
我想做一个机器学习项目,请指导我一些好点子或者简单的主题。
“除非项目目的是写代码,否则不要写代码”——您能详细解释一下吗?我不太明白。
尽可能多地使用机器学习库和其他库,除非你想学习如何从头开始编写,否则不要自己编写。
学习一个机器学习工具
不错。
我选择了第一项:学习一个机器学习工具。
非常好!
这篇文章非常有价值和信息量。
我是一名学生,我选择做一个文本分类器项目,你能给我发一个文本分类器的例子作为我的项目参考吗?
理解算法并实现它相当困难,所以如果你有一些我可以学习的链接,那将非常有帮助。
我很快就会在博客上发布文本分类的文章。它们已经排期了。
我研究了如何制作一个小的朴素贝叶斯代码来拟合一个分类器并进行预测,但在其中我只给了拟合和标签一小部分特征,准确率也是基于此的。我如何使用 UCI ML 数据集来拟合分类器?
如果您能帮助我,我将非常感激。我是机器学习新手。
谢谢
我的博客上有很多关于这方面教程的,也许可以从这里开始。
https://machinelearning.org.cn/start-here/#python
我选择了最后一个。我研究 RNN 并想实现它。
太棒了!
现在我对机器学习更有信心了,并且非常热衷于学习机器学习。请继续发布更多这类文章。
谢谢。
你能给我发一个适合初学者的简单项目问题吗?
这里有一些想法
https://machinelearning.org.cn/practice-machine-learning-with-small-in-memory-datasets-from-the-uci-machine-learning-repository/
我需要为大学最后一个学期做六个月的研究。我想用 Python 在机器学习领域做文本摘要。我跟随了一些教程,对机器学习算法有了一些了解。您能否给我发一些文本摘要的项目?我应该如何进行研究?
我在这里有一些关于这个主题的文章。
https://machinelearning.org.cn/?s=text+summarization&submit=Search
谢谢 🙂
我认为最吸引人的策略是选择一个看起来有前景/有趣的数据集,然后从那里开始。我也喜欢从头开始实现算法的方法,因为这就像是软件版的拆卸设备,以了解其内部结构和工作原理,然后再将其重新组装起来!
尽管您拥有多年的经验,但您是否仍然使用本文所述的方法?或者您是否开发了更快/更好的方法来更有效地掌握概念?
好问题。
是的,我仍然会从头开始编写代码以理解它们。我仍然将算法应用于数据集,以便学习如何有效地使用它们。
我非常喜欢您的文章。我是机器学习新手,想了解要使用的工具和数据集。我想创建一个机器学习小程序。我想用 Python 语言进行工作。请指导我并提供一些基本想法。
谢谢您的分享。
您可以从这里开始
https://machinelearning.org.cn/start-here/
您可以在这里找到一份机器学习项目列表:https://deeplink.ml/projects/
感谢分享。
Jason,很棒的工作!
谢谢。
非常感谢您提供这些策略。
我认为我将选择第一个:学习一个机器学习工具。
因为我正在尝试找到一个小型的实际项目,我可以逐步进行,使用一个库来理解机器学习是如何真正工作的。
非常好。
我在这里还有一些关于工具的内容。
https://machinelearning.org.cn/machine-learning-tools/
谢谢
不客气。
非常感谢。读完这篇文章后感觉很有动力。文章的每一部分都如此珍贵!再次感谢。
我很高兴它有帮助!
太棒了!!!Jason……顺便说一句,我非常喜欢你的写作风格!
谢谢 Jon!
很棒的网站!<3
谢谢。
感谢 Jason 提供如此重要的信息。我将从第三个选项开始。
谢谢。
非常感谢您提供所有信息,您不知道您的所有帖子有多么有用,以及我通过您学到了多少。
谢谢,很高兴它们有帮助。
很棒且非常有帮助的文章。它给了我一个前进的道路。我将尝试所有四种策略,并很快更新。
谢谢。
祝你的项目好运!
我很喜欢。我选择第四个。
干得好!
非常感谢 Jason。你给了我一个前进的道路,我会一遍又一遍地重复这些步骤,直到我学会所有四个的基础知识。
顺便说一句,我想写一件事。有一个名叫 Jason Stephenson 的人,他做了一些很棒的引导冥想,帮助我平静了焦虑,而下一个 Jason(你)帮助我平静了与机器学习相关的焦虑。
非常感谢。
不客气。
你真是个很棒的向导,Jason。感谢这些宝贵的信息。
感谢您的美言!
Jason,这对于想进入机器学习领域的人来说,是我读过的最好的文章之一。
我一直在努力理解我需要学习什么才能开始理解机器学习,但你已经解释得很清楚了。
我现在清楚多了。
再次感谢您写了如此精彩的文章。
谢谢,很高兴它有帮助!
亲爱的 Jason,感谢您的精彩文章。您写的每一篇文章对我来说都很有帮助。
我很有兴趣从第二个选项开始,即学习一个机器学习数据集。
此致
您写的每一篇文章都对我很有帮助。谢谢 Jason。
谢谢!
很好的建议,
特别是事先制定一个可衡量的项目计划,包括目标、持续时间、范围等
以及对预期结果的切实定义。
谢谢您,Jason
Anandan,非常欢迎!继续保持出色的工作!
非常有帮助,谢谢。
kavana,非常欢迎!
非常有相关性。
谢谢 Matthew 的反馈和支持!我们很感激!