4 个自学机器学习项目

进入机器学习领域有很多途径,大多数都始于理论学习。

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

这些技能对于任何专业的程序员来说都很重要,并且可以用于立即开始机器学习领域的工作。

Self Study

自学
照片作者:gfairchild,部分权利保留

要有效地进行机器学习,你必须学习理论知识,但你可以利用你的兴趣和求知欲来激励你从实际示例过渡到对算法的数学理解。

在本文中,你将了解程序员可以遵循的四种机器学习入门策略。这是技术人员的道路,务实且经验丰富,需要你进行研究并完成实验,以建立自己的直觉。

这四种策略是

  1. 学习一个机器学习工具
  2. 学习一个机器学习数据集
  3. 学习一个机器学习算法
  4. 实现一个机器学习算法

阅读这些策略,并选择一个你认为最适合你的,然后毫不犹豫地去执行。

1. 学习一个机器学习工具

选择一个你喜欢的工具或库,并精通其使用。

我建议你从一个提供数据准备工具、机器学习算法和结果展示的环境开始。学习这样的环境将使你能够掌握端到端的机器学习过程,这比学习特定的数据准备技术或机器学习算法更有价值。

或者,也许你对特定的技术或一类技术感兴趣。你可以利用这个机会深入研究一个提供这些方法的库或工具,并通过掌握提供这些方法访问权限的库来精通该技术。

Study a Machine Learning Tool

学习一个机器学习工具
照片作者:zzpza,部分权利保留

你可以为这个策略遵循的一些方法是

  • 比较和对比候选工具,从中选择。
  • 总结你所选工具的功能。
  • 阅读并总结该工具的文档。
  • 完成该工具的文本或视频教程,并总结你完成的每个教程的关键学习点。
  • 创建该工具的功能或特性的教程。选择你不太了解的内容,并创建一个获取结果的流程,或者录制一个 5 分钟的屏幕录像,演示如何使用该特性。

你应该考虑的一些环境包括:RWekascikit-learnwafflesorange

2. 学习一个机器学习数据集

选择一个数据集,深入了解它,并找出哪种算法类别或类型最适合它。

我建议你选择一个中等大小、可以放入内存、并且可能已经被深入研究过的数据集。有许多优秀的数据源库可供你浏览和选择。你的目标是理解数据源所代表的底层问题、数据集的结构以及最适合该问题的那类解决方案。

使用机器学习或统计环境来研究数据集。这将使你能够专注于你想回答的数据集问题,而不是被学习特定技术和学习如何在代码中实现它的问题所分散注意力。

Study a Machine Learning Dataset

学习一个机器学习数据集
照片作者:abhidg,部分权利保留

可以帮助你研究实验性机器学习数据集的一些方法是

  • 清晰地描述数据集所代表的问题。
  • 使用描述性统计数据总结数据。
  • 描述你在数据中观察到的结构,并假设数据中的关系。
  • 对数据集进行少量流行机器学习算法的抽样测试,找出哪个通用类别比其他类别表现更好。
  • 调整表现良好的算法,找出在问题上表现良好的算法和算法配置。

一些高质量数据集的存储库你可能想考虑:UCI ML RepositoryKaggledata.gov

3. 学习一个机器学习算法

选择一个算法,深入了解它,并找出在不同数据集上稳定的参数配置。

我建议你从一个复杂度适中的算法开始。选择一个被充分理解、有许多开源实现可供选择且参数较少的算法。你的目标是建立对算法在各种问题和参数配置下表现的直觉。

使用机器学习环境或库。这将使你能够专注于算法作为一个“系统”的行为,而不是纠结于规范的数学描述和参考文献。

Study a Machine Learning Algorithm

学习一个机器学习算法
照片作者:Unhindered by Talent,部分权利保留

在学习你选择的机器学习算法时,你可以使用的一些方法是

  • 总结系统的参数及其对算法的预期影响。
  • 选择一系列适合该算法的数据集,这些数据集可能会引发不同的行为。
  • 选择你认为会引发系统不同行为的算法参数配置,并列出你可能预期的系统行为。
  • 考虑算法在迭代更新过程或其他时间间隔中运行时可以监测的算法行为。
  • 设计小型实验,使用一个或多个数据集、算法配置和行为度量组合来回答一个特定问题,并报告结果。

你的研究可以根据你的喜好简单或复杂。在较高层面上,你可以探索所谓的启发式方法或应用算法的经验法则,并实证证明它们是否有价值,如果有,在什么情况下它们会与成功的结果相关。

你开始时可以考虑的一些算法包括:最小二乘线性回归、逻辑回归、k近邻分类、感知器

4. 实现一个机器学习算法

选择一个算法,并将其实现或将现有实现移植到你选择的语言。

选择一个复杂度适中的算法来实现。我建议你对你想实现的算法进行一些详细的研究,或者选择一个你喜欢的实现并将其移植到你选择的目标编程语言。

从头手动实现算法是学习将算法描述转化为功能系统的许多微小决策的好方法。通过多次重复这个过程,你将能快速获得阅读研究论文和书籍中算法数学描述的直觉。

Implement a Machine Leaning Algorithm

实现一个机器学习算法
照片作者:Nic’s events,部分权利保留

五种可以帮助你从头实现机器学习算法的方法是

  • 从移植开始。将一个开源算法实现从一种语言移植到另一种语言将教会你算法是如何实现的,并使其成为你自己的。这是最快的入门方式,强烈推荐。
  • 选择一个算法描述作为工作基础,并收集其他算法描述来帮助你区分主要的参考材料。
  • 不要害怕联系算法作者、论文作者甚至算法实现作者,向他们提问以帮助你区分你对算法描述的理解。
  • 大量阅读你目标算法的实现。学习不同的程序员如何解读算法描述并将其转化为代码。
  • 不要纠结于高级方法。许多机器学习算法在其核心使用了高级优化方法。除非这是你项目的重点,否则不要尝试重新实现这些方法。使用提供优化算法的库,或者使用一个易于实现(如梯度下降)或你可以在库中获得的简单优化算法。

小型项目方法论

这四种策略构成了一种我称之为“小型项目”的方法论。它是一种你可以用来快速建立在机器学习等技术领域实践技能的方法。基本思想是设计并执行小型项目,这些项目针对你想回答的特定问题。

小型项目在几个维度上都很小,以确保它们能够完成,并且你能够提取学习效益并继续下一个项目。以下是你应考虑对项目施加的限制

  • 时间短:一个项目从构思到结果展示不应超过 5-15 小时。这将使你能够在工作之余,在一个周末内完成一个小项目。
  • 范围小:一个项目应该解决你感兴趣的最狭窄版本的问题,并且仍然有意义。例如,与其解决“编写一个程序来告诉我一条推文是否会被转发”这个普遍问题,不如仅针对特定推特账号在特定时间段解决这个问题。
  • 资源少:一个项目应该能够在你的台式机或笔记本电脑上完成,只需要互联网连接。你不应该需要奇异的软件、Web 基础设施或第三方数据或服务。收集你需要的文件数据,将其加载到内存中,并使用开源工具来解决你的狭窄问题。

其他项目技巧

这些策略的原则是采取行动并利用你的程序员技能。以下是三个帮助你调整心态以采取行动的技巧

  • 写下你学到的东西。我建议你为你采取的每一步都建立一个切实可行的工作产品。这可以是你日记中的笔记、一条推文、一篇博客文章或一个开源项目。每个工作产品都充当一个锚点和里程碑。
  • 除非目的是写代码,否则不要写代码。这个技巧并不明显,但它可能是在加速你对机器学习理解方面最重要的。
  • 目标是你学习一些东西,而不是创造一个独特的资源。没有人会阅读你的研究、教程或关于算法的笔记,暂时忽略这一点。它们是你的视角和你的工作产品,用来证明你现在知道一些东西。

总结

以下是这四种策略,每种都配有一句简明的说明,以帮助你选择最适合你的策略。

  1. 学习一个机器学习工具:选择一个你喜欢的工具或库,并精通其使用。
  2. 学习一个机器学习数据集:选择一个数据集,深入了解它,并找出哪种算法类别或类型最适合它。
  3. 学习一个机器学习算法:选择一个算法,深入了解它,并找出在不同数据集上稳定的参数配置。
  4. 实现一个机器学习算法:选择一个算法,并将其实现或将现有实现移植到你选择的语言。

选择一个!

你会选择哪种策略,你的第一步是什么?选择一个并在下面的评论中声明你的意图。

115 条回复关于“4 个机器学习自学项目”

  1. Christal-yhy 2014年1月11日 晚上11:43 #

    我正在尝试学习机器学习,但我不知道如何开始。

  2. halfcrazy 2014年2月21日 上午8:10 #

    太棒了

    • jasonb 2014年2月21日 上午8:24 #

      谢谢,很高兴你喜欢。如果你开始了一个项目,请告诉我。

      • Bright 2014年4月14日 晚上10:29 #

        我喜欢,我选择 3

  3. Ben 2014年5月8日 上午10:45 #

    非常有用的帖子,谢谢 Jason!!!

    • jasonb 2014年5月8日 下午12:03 #

      很高兴听到这个 Ben,谢谢。

  4. Muhammad Masood 2014年5月21日 上午10:36 #

    你好,

    非常有用的和信息丰富的。我通常遵循类似的模式,并且总是先尝试移植,因为它能给我信心。

    谢谢

    • jasonb 2014年5月21日 下午1:47 #

      很棒的建议,谢谢 Muhammad。

  5. Laurent 2014年6月28日 下午4:59 #

    很棒的帖子 Jason。非常有用的技巧。谢谢

  6. anthony 2014年8月17日 晚上10:18 #

    干得好……

    另一个小型项目是优化一段代码——最近遇到了一个场景,样本/训练/实验数据集“运行正常”,但使用完整数据时太慢而无法使用。因此,我专注于优化已知有效并产生预期结果的某个方面的效率。

    祝好

  7. Anshul 2014年8月24日 上午3:01 #

    感谢 Jason 对机器学习这样一个有趣领域如此清晰的描述。我正在权衡这四种方式,但希望我能从 1 过渡到 4 会非常有趣……非常感谢你的见解!

  8. Andreas 2015年2月6日 晚上11:26 #

    感谢您的邮件推荐。我非常喜欢小型项目方法论,我一定会尝试的。

    你的“除非目的是写代码,否则不要写代码”的见解可能会让我克服总是创建可重用代码的执念。希望它能奏效!

    谢谢你的建议。

    • Jason Brownlee 2015年2月7日 上午6:27 #

      谢谢 Andreas,祝你好运!

      • Sunday 2023年3月10日 下午6:02 #

        这篇文字很有帮助,它让我有信心能够实现我的 ML 目标。谢谢你,Jason。

        • James Carmichael 2023年3月11日 上午7:53 #

          非常欢迎,Sunday!我们感谢您的反馈和支持。

  9. Henok(Ethiopia) 2015年4月3日 晚上9:08 #

    很棒的建议!!!!非常感谢!很棒

  10. kavs 2015年6月2日 晚上8:03 #

    很棒的帖子……非常感谢!

  11. haccks 2015年6月10日 上午7:11 #

    我之前很迷茫。感谢这篇启发性的文章。

  12. simran 2015年10月2日 晚上7:17 #

    这是一篇非常好且有用的
    文章……
    能否请您给我发送一个关于模式识别和机器学习的项目,最好是用 Python 语言。
    我需要这个作为我的项目参考……

    这将非常有帮助。

    谢谢并致以问候

  13. Tweetman 2015年10月3日 晚上6:48 #

    很棒的帖子,我正朝着第 2 个项目前进。

  14. Gianfranco 2015年11月7日 晚上10:27 #

    你好,
    非常棒的帖子,谢谢,这正是我所需要的。此外,我刚刚购买了“小型项目方法论”,但我没有收到下载链接。请提供。

    此致
    Gianfranco

    • Jason Brownlee 2015年11月8日 上午9:01 #

      我已私下向您发送了关于此事的邮件。

  15. Aman Tandon 2015年11月12日 下午1:06 #

    你的每一篇写作都很棒。

  16. MASUME 2015年11月20日 晚上8:42 #

    你好,Jason
    你的网站很棒!!我非常受益并喜欢你的帖子。谢谢。

  17. Tebziro 2016年1月5日 上午6:56 #

    超级信息量!非常感谢!!!

  18. Ankit 2016年3月1日 晚上9:51 #

    很有帮助,链接也是很好的学习资源。

  19. karan 2016年3月10日 上午3:26 #

    我是一名初学者。请帮我决定一个项目。

  20. Archana Chauhan 2016年3月11日 上午6:25 #

    嗨,谢谢……我需要编译器数据集用于我的项目“使用机器学习进行编译器优化”。我到处搜索了……都没有找到……如果你知道,请帮助我……这将非常有帮助。

  21. HoaLoThai 2016年3月22日 下午1:20 #

    我想安装一个服务器来提供 H2O 机器学习研究服务。
    期待您的一些帮助。
    谢谢。

    • ij888 2016年10月23日 下午5:25 #

      嗨,你的 H2O 机器学习研究有进展吗?进展如何?

  22. Shreya 2016年5月28日 下午6:31 #

    这将是我的第一个 ML 项目,我将独自完成。我决定专注于 scikit-learn 和 Weka (Java) 这两个工具。我正考虑构建一个垃圾邮件过滤器,因为我是一名初学者。
    你建议 Python 还是 Java?
    我两种语言都很熟悉,谢谢。

    • Pranjal Saxena 2017年1月9日 下午2:02 #

      Python!
      因为它有大量的库可以工作!

  23. anum 2016年6月4日 上午3:52 #

    你能为我推荐一个 Weka 的小型项目吗?

  24. Jim Kitzmiller 2016年6月24日 上午10:53 #

    这非常有帮助,Jason。非常感谢。

    我选择了 Weka。

  25. Usman 2016年7月8日 晚上10:07 #

    嗨,Jason,

    MachingLearningMastery.com 向我们展示了如何成为更好的人。

    通过分享。

    你极大地促进了人类和机器的发展。

    愿你的孩子向你学习。

  26. Abdulkabir Ojulari 2016年7月14日 下午1:08 #

    请,我是一名新手,但乐于学习。我想攻读博士学位,并希望找到与机器学习相关的内容。我不知道是否有人能帮助我确定研究课题。
    我有一个想法;“使用机器学习技术评估产品的市场价值”。我不知道这是否可以作为机器学习领域博士研究的课题。
    我的目标是研究某个产品在一段时间内的表现,并根据材料、客户支持、价格等因素确定该产品的未来需求。

  27. Grace 2016年7月19日 晚上11:46 #

    你好,
    这篇帖子非常有用。我是一名机器学习初学者,一直在寻找一个合适的策略来遵循。现在,通过你这篇精彩的帖子,我感觉大有帮助。非常感谢!:):):):)

  28. Eudie 2016年7月20日 下午4:30 #

    Jason,谢谢你,你太棒了。我将选择“学习一个机器学习算法”,那就是感知器。

  29. Khalid Ibrahim 2016年7月28日 下午4:34 #

    Jasn,你的努力很棒;
    先谢谢了。我已开始学习 weka。

  30. Navid Khoob 2016年8月15日 上午1:57 #

    大家好,以及亲爱的管理员(Jason Brownlee先生)

    我是一名电子学专业硕士生,但我在进行数据融合的机器学习算法。我一直在寻找一些答案,很幸运在您的网页上找到了非常有用的主题。现在,我有一个问题。我正在进行一个研究项目,该项目属于监督学习结构,基本上是一个使用集成学习系统的分类问题,该系统在信念函数框架(Dempster-Shafer理论)中组合基础分类器。我正在寻找一个与我的项目兼容的适用数据库,用于处理具有不完美标签的数据。您能否为我的工作推荐一个适合且新颖且具有挑战性的数据库?

    提前感谢!

  31. Amit 2016年9月18日 上午4:00 #

    Jason,您能帮助我进行数据融合领域的研究吗?我想实现一个机器学习算法,有什么好的参考吗?如果可能,可以发邮件给我吗?

  32. Nill 2016年11月2日 上午4:27 #

    这篇文章非常有帮助。

  33. Mohammad Sami Usmani 2016年11月6日 上午1:25 #

    非常有帮助,谢谢!

  34. vishwvir 2016年12月8日 上午4:42 #

    我想做一个机器学习项目,请指导我一些好点子或者简单的主题。

  35. Sergei S 2017年5月30日 下午10:00 #

    “除非项目目的是写代码,否则不要写代码”——您能详细解释一下吗?我不太明白。

    • Jason Brownlee 2017年6月2日 下午12:35 #

      尽可能多地使用机器学习库和其他库,除非你想学习如何从头开始编写,否则不要自己编写。

  36. Sagar Sarkar 2017年7月10日 上午1:36 #

    学习一个机器学习工具

  37. Abdulmahmoud Umar Adam 2017年7月16日 下午5:38 #

    我选择了第一项:学习一个机器学习工具。

    • Jason Brownlee 2017年7月17日 上午8:45 #

      非常好!

      • Sanit Rajula 2017年9月10日 下午10:17 #

        这篇文章非常有价值和信息量。
        我是一名学生,我选择做一个文本分类器项目,你能给我发一个文本分类器的例子作为我的项目参考吗?
        理解算法并实现它相当困难,所以如果你有一些我可以学习的链接,那将非常有帮助。

        • Jason Brownlee 2017年9月11日 下午12:07 #

          我很快就会在博客上发布文本分类的文章。它们已经排期了。

  38. Shreya 2017年10月12日 下午9:13 #

    我研究了如何制作一个小的朴素贝叶斯代码来拟合一个分类器并进行预测,但在其中我只给了拟合和标签一小部分特征,准确率也是基于此的。我如何使用 UCI ML 数据集来拟合分类器?

    如果您能帮助我,我将非常感激。我是机器学习新手。

    谢谢

  39. Saraa 2017年11月23日 上午3:03 #

    我选择了最后一个。我研究 RNN 并想实现它。

  40. Muruganand 2017年12月12日 上午1:07 #

    现在我对机器学习更有信心了,并且非常热衷于学习机器学习。请继续发布更多这类文章。

  41. Mohammed Ali 2018年1月23日 上午1:02 #

    你能给我发一个适合初学者的简单项目问题吗?

  42. Jagruti 2018年2月3日 上午4:55 #

    我需要为大学最后一个学期做六个月的研究。我想用 Python 在机器学习领域做文本摘要。我跟随了一些教程,对机器学习算法有了一些了解。您能否给我发一些文本摘要的项目?我应该如何进行研究?

  43. Jesús Martínez 2018年2月13日 上午3:32 #

    我认为最吸引人的策略是选择一个看起来有前景/有趣的数据集,然后从那里开始。我也喜欢从头开始实现算法的方法,因为这就像是软件版的拆卸设备,以了解其内部结构和工作原理,然后再将其重新组装起来!

    尽管您拥有多年的经验,但您是否仍然使用本文所述的方法?或者您是否开发了更快/更好的方法来更有效地掌握概念?

    • Jason Brownlee 2018年2月13日 上午8:06 #

      好问题。

      是的,我仍然会从头开始编写代码以理解它们。我仍然将算法应用于数据集,以便学习如何有效地使用它们。

  44. Palak Gupta 2018年2月13日 上午6:21 #

    我非常喜欢您的文章。我是机器学习新手,想了解要使用的工具和数据集。我想创建一个机器学习小程序。我想用 Python 语言进行工作。请指导我并提供一些基本想法。
    谢谢您的分享。

  45. Amit Kotkar 2018年5月7日 下午6:02 #

    您可以在这里找到一份机器学习项目列表:https://deeplink.ml/projects/

  46. shiv 2018年6月14日 上午7:25 #

    Jason,很棒的工作!

  47. Ahmed 2018年7月25日 下午4:58 #

    非常感谢您提供这些策略。
    我认为我将选择第一个:学习一个机器学习工具。
    因为我正在尝试找到一个小型的实际项目,我可以逐步进行,使用一个库来理解机器学习是如何真正工作的。

  48. Jinesh Jain 2018年7月29日 上午4:02 #

    谢谢

  49. gouri 2018年10月24日 下午5:08 #

    非常感谢。读完这篇文章后感觉很有动力。文章的每一部分都如此珍贵!再次感谢。

  50. Jon 2018年11月1日 下午2:25 #

    太棒了!!!Jason……顺便说一句,我非常喜欢你的写作风格!

  51. Maheedar 2018年11月14日 上午4:51 #

    很棒的网站!<3

  52. Rafiu Mope Isiaka 2019年4月8日 上午3:14 #

    感谢 Jason 提供如此重要的信息。我将从第三个选项开始。

  53. Luciana 2019年4月13日 上午6:37 #

    非常感谢您提供所有信息,您不知道您的所有帖子有多么有用,以及我通过您学到了多少。

  54. Naseem Ansari 2019年11月12日 下午11:09 #

    很棒且非常有帮助的文章。它给了我一个前进的道路。我将尝试所有四种策略,并很快更新。

  55. Akash Gupta 2019年11月20日 上午11:38 #

    我很喜欢。我选择第四个。

  56. Shruti pandey 2020年1月8日 上午3:21 #

    非常感谢 Jason。你给了我一个前进的道路,我会一遍又一遍地重复这些步骤,直到我学会所有四个的基础知识。

    顺便说一句,我想写一件事。有一个名叫 Jason Stephenson 的人,他做了一些很棒的引导冥想,帮助我平静了焦虑,而下一个 Jason(你)帮助我平静了与机器学习相关的焦虑。

    非常感谢。

  57. Rajasekhar 2020年9月4日 上午1:24 #

    你真是个很棒的向导,Jason。感谢这些宝贵的信息。

  58. Anil Singh 2020年9月30日 上午7:11 #

    Jason,这对于想进入机器学习领域的人来说,是我读过的最好的文章之一。

    我一直在努力理解我需要学习什么才能开始理解机器学习,但你已经解释得很清楚了。

    我现在清楚多了。

    再次感谢您写了如此精彩的文章。

  59. F. M. Shakirullah 2021年6月3日 上午3:25 #

    亲爱的 Jason,感谢您的精彩文章。您写的每一篇文章对我来说都很有帮助。
    我很有兴趣从第二个选项开始,即学习一个机器学习数据集。
    此致

    • F. M. Shakirullah 2021年6月3日 上午3:30 #

      您写的每一篇文章都对我很有帮助。谢谢 Jason。

    • Jason Brownlee 2021年6月3日 上午5:38 #

      谢谢!

  60. Anandan Subramani 2022年1月19日 下午9:19 #

    很好的建议,
    特别是事先制定一个可衡量的项目计划,包括目标、持续时间、范围等
    以及对预期结果的切实定义。
    谢谢您,Jason

    • James Carmichael 2022年1月20日 上午7:55 #

      Anandan,非常欢迎!继续保持出色的工作!

  61. kavana 2023年5月23日 下午11:10 #

    非常有帮助,谢谢。

    • James Carmichael 2023年5月24日 上午8:35 #

      kavana,非常欢迎!

  62. Matthew Cobbinah 2023年6月17日 上午2:05 #

    非常有相关性。

    • James Carmichael 2023年6月17日 上午10:54 #

      谢谢 Matthew 的反馈和支持!我们很感激!

发表回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。