如何进入机器学习领域没有定式。我们的学习方式都有些许不同,学习的目标也因人而异。
但一个共同的目标就是要能尽快上手。假设这也是你的目标。那么这篇文章为你列举了程序猿们在通往机器学习高手道路上常见的五种错误。
1.将机器学习看得高不可攀
机器学习只是是还有一堆技术的集合,你能够用它来解决复杂问题。这是一个飞速发展的领域,因此,机器学习的学术交流一般出如今学术期刊及研究生的课本里,让它看起来高不可攀又难于理解。
要想高效掌握机器学习,我们须要转变观念,从技术转到方法,由精确变为“足够好”,这也相同适用于程序猿感兴趣的其他复杂技术。
2.编写机器学习程序代码
由编码開始入门机器学习会非常困难,由于你须要解决的问题从一个变成两个:了解一项技术以便你实现它以及对于给定问题怎样应用该项技术。一次解决一个问题,并利用机器学习、统计分析环境以及算法库来学习怎样将一项技术应用于某一问题,这样就会easy非常多。
这能让你对于若干算法进行相对高速的抽查和调整,而无需花上大量时间阅读研究论文中含糊的算法描写叙述再将其编码。
实现一个算法能够作为一个单独的项目晚些再完毕,比方作为一个练习或是等到原型系统须要投入执行时。一时仅仅学一事,我建议从有GUI的机器学习框架開始入门,不论你是不是程序猿。
3.手动搞定工作
有用机器学习包含问题定义、数据准备、结果表达等步骤。它们与算法的測试和调整都可以并应该实现自己主动化。
在现代软件开发的编译、測试和部署中,自己主动化操作占有重要地位。对数据准备、算法測试调试、结果的表达编写自己主动脚本能够在准确性和改进速度方面获得巨大的优势。在专业软件开发课程中学习的知识要牢记于心并不断应用。
可能非常多学习机器学习的程序猿看的书、上的课对于这一领域的应用本质关注不多,导致非常多人入门阶段没有使用自己主动化手段。实际上。将自己主动化技术应用到有用机器学习的方方面面会是程序猿的巨大机遇。
4.对常见问题反复求解
你正要实现的算法,或是与你正在求解的问题相似的问题,可能早有千百人攻克了,就利用他们的经验吧。
解决机器学习问题的知识许多,当然它们可能都在书本或学术出版物中。但你能够訪问它们。
做好你的功课。在谷歌谷歌图书谷歌学术上搜索。还能够去机器学习的网络社区。
假设你正要实现一个算法:
必须实现它吗?可不能够在某个库或工具中找到开源的实现复用呢?
你的实现必须从头做起吗?可不能够对现有的开源实现进行代码审查。从中学习或是移植呢?
你必须对标准算法描写叙述编码吗?在其他书论文或是帖子中没有别的算法描写叙述可供代码审查及借鉴呢?
假设你正要求解某个问题:
你必须測试针对这个问题的全部算法吗?这一问题或是同一大类相似问题有没有研究成果显示一些算法或算法类表现良好可供利用?
你必须自己搜集数据吗?有没有公开的数据集或是API你能够直接使用或是作为你问题的替代,以高速弄清哪种方法能够有良好表现?
你必须优化算法的參数吗?在对算法的研究和论文中有没有可用的启示式方法来配置算法呢?
假设你在编程函数库或是特定某一数据结构方面遇到问题。你会选择什么策略,在机器学习领域就用同样的策略吧。參与网络社区并寻求可供利用的资源。能够加速你的学习和项目开发进程。入门阶段能够考虑论坛和问答站点,之后能够与学者和专家联系。
5.忽视数学
起步阶段你并不须要数学理论,可是数学在机器学习中地位重要。
由于它能提供最有效、最清晰的方法描写叙述问题及系统的行为。
忽略算法中的数学方法会导致诸多问题。如对某一方法理解有限或是对算法编码时受到限制。举个样例,非常多机器学习算法的核心优化是增量式的演进。
假设你能明确优化的本质(凸函数),你就能利用这些知识来使用高效的优化算法。
将算法的数学方法内化于心过程缓慢。但你的功力却也随之提升。特别是假设你要从零開始实现高级算法,包含算法的内部优化,多多花时间从数学角度来理解算法吧。
总结
你从本帖学到了程序猿在机器学习的入门阶段easy犯的5个错误。
5个教训是:
1 别把机器学习看得高不可攀
2 别写机器学习的代码
3 别手动搞定一切
4 别对常见问题反复求解
5 别忽视数学
原文链接: machine learning mastery
翻译: 伯乐在线 – toolate