机器学习入门阶段程序猿易犯的5个错误

如何进入机器学习领域没有定式。我们的学习方式都有些许不同,学习的目标也因人而异。

但一个共同的目标就是要能尽快上手。假设这也是你的目标。那么这篇文章为你列举了程序猿们在通往机器学习高手道路上常见的五种错误。

1.将机器学习看得高不可攀

机器学习只是是还有一堆技术的集合,你能够用它来解决复杂问题。这是一个飞速发展的领域,因此,机器学习的学术交流一般出如今学术期刊及研究生的课本里,让它看起来高不可攀又难于理解。

要想高效掌握机器学习,我们须要转变观念,从技术转到方法,由精确变为“足够好”,这也相同适用于程序猿感兴趣的其他复杂技术。

2.编写机器学习程序代码

由编码開始入门机器学习会非常困难,由于你须要解决的问题从一个变成两个:了解一项技术以便你实现它以及对于给定问题怎样应用该项技术。一次解决一个问题,并利用机器学习、统计分析环境以及算法库来学习怎样将一项技术应用于某一问题,这样就会easy非常多。

这能让你对于若干算法进行相对高速的抽查和调整,而无需花上大量时间阅读研究论文中含糊的算法描写叙述再将其编码。

实现一个算法能够作为一个单独的项目晚些再完毕,比方作为一个练习或是等到原型系统须要投入执行时。一时仅仅学一事,我建议从有GUI的机器学习框架開始入门,不论你是不是程序猿。

3.手动搞定工作

有用机器学习包含问题定义、数据准备、结果表达等步骤。它们与算法的測试和调整都可以并应该实现自己主动化。

在现代软件开发的编译、測试和部署中,自己主动化操作占有重要地位。对数据准备、算法測试调试、结果的表达编写自己主动脚本能够在准确性和改进速度方面获得巨大的优势。在专业软件开发课程中学习的知识要牢记于心并不断应用。

可能非常多学习机器学习的程序猿看的书、上的课对于这一领域的应用本质关注不多,导致非常多人入门阶段没有使用自己主动化手段。实际上。将自己主动化技术应用到有用机器学习的方方面面会是程序猿的巨大机遇。

4.对常见问题反复求解

你正要实现的算法,或是与你正在求解的问题相似的问题,可能早有千百人攻克了,就利用他们的经验吧。

解决机器学习问题的知识许多,当然它们可能都在书本或学术出版物中。但你能够訪问它们。

做好你的功课。在谷歌谷歌图书谷歌学术上搜索。还能够去机器学习的网络社区。

假设你正要实现一个算法:

必须实现它吗?可不能够在某个库或工具中找到开源的实现复用呢?

你的实现必须从头做起吗?可不能够对现有的开源实现进行代码审查。从中学习或是移植呢?

你必须对标准算法描写叙述编码吗?在其他书论文或是帖子中没有别的算法描写叙述可供代码审查及借鉴呢?

假设你正要求解某个问题:

你必须測试针对这个问题的全部算法吗?这一问题或是同一大类相似问题有没有研究成果显示一些算法或算法类表现良好可供利用?

你必须自己搜集数据吗?有没有公开的数据集或是API你能够直接使用或是作为你问题的替代,以高速弄清哪种方法能够有良好表现?

你必须优化算法的參数吗?在对算法的研究和论文中有没有可用的启示式方法来配置算法呢?

假设你在编程函数库或是特定某一数据结构方面遇到问题。你会选择什么策略,在机器学习领域就用同样的策略吧。參与网络社区并寻求可供利用的资源。能够加速你的学习和项目开发进程。入门阶段能够考虑论坛和问答站点,之后能够与学者和专家联系。

5.忽视数学

起步阶段你并不须要数学理论,可是数学在机器学习中地位重要。

由于它能提供最有效、最清晰的方法描写叙述问题及系统的行为。

忽略算法中的数学方法会导致诸多问题。如对某一方法理解有限或是对算法编码时受到限制。举个样例,非常多机器学习算法的核心优化是增量式的演进。

假设你能明确优化的本质(凸函数),你就能利用这些知识来使用高效的优化算法。

将算法的数学方法内化于心过程缓慢。但你的功力却也随之提升。特别是假设你要从零開始实现高级算法,包含算法的内部优化,多多花时间从数学角度来理解算法吧。

总结

你从本帖学到了程序猿在机器学习的入门阶段easy犯的5个错误。

5个教训是:

1 别把机器学习看得高不可攀

2 别写机器学习的代码

3 别手动搞定一切

4 别对常见问题反复求解

5 别忽视数学

原文链接: machine learning mastery

翻译: 伯乐在线 – toolate

时间: 2024-10-11 05:27:12

机器学习入门阶段程序猿易犯的5个错误的相关文章

(转)C# 程序员易犯的 10 个错误

关于C# C#是针对微软公共语言运行库(CLR)的开发语言之一.针对CLR的开发语言得益于如跨语言集成的性能,异常处理,安全性增强,组件交互的简化模型,调试和分析服务.对于今日的CLR来说,C#是定位到Windows桌面,移动设备或服务器环境中,在处理复杂,专业的开发项目方面使用最广泛的开发语言. C#是面相对象,强类型的语言.C#中严格的类型检查,在编译和运行时,使得典型的编程错误能尽早报告,并且能精准给出错误位置.这能帮助程序员节省很多时间,相比于跟踪那些可以发生在违规操作很长时间之后的令人

当心!程序员在职业生涯中最易犯的7个错误

当心!程序员在职业生涯中最易犯的7个错误 概述:本文的作者是软件开发领域著名的职业规划导师,他的工作是通过对程序员当前职业状况的了解,向他们提出改进职业规划发展的建议.在与程序员们长期的接触之后,他总结了程序员们最易犯的7个错误. 1.没有明确的职业目标 没有目标的人生,就像无根的浮萍,水流到哪里就飘到哪里,一生漂泊. 如果你想要在软件开发领域获得真正的成功,那么就必须知道该何去何从.或许面对遥远的未来,你已经有了一个粗略的目标了.但是除了这点还不够,你应当坚实自己的目标--清楚的定义在实现过程

看似简单!解读C#程序员最易犯的7大错误

编程时犯错是必然的,即使是一个很小的错误也可能会导致昂贵的代价,聪明的人善于从错误中汲取教训,尽量不再重复犯错,在这篇文章中,我将重点介绍C#开发人员最容易犯的7个错误. 格式化字符串 在C#编程中,字符串类型是最容易处理出错的地方,其代价往往也很昂贵,在.NET Framework中,字符串是一个不可变的类型,当一个字符串被修改后,总是创建一个新的副本,不会改变源字符串,大多数开发人员总是喜欢使用下面这样的方法格式化字符串: string updateQueryText = "UPDATE E

Python 程序员经常犯的 10 个错误

关于PythonPython是一种解释性.面向对象并具有动态语义的高级程序语言.它内建了高级的数据结构,结合了动态类型和动态绑定的优点,这使得... 关于Python Python是一种解释性.面向对象并具有动态语义的高级程序语言.它内建了高级的数据结构,结合了动态类型和动态绑定的优点,这使得它在快速应用开发中非常有吸引力,并且可作为脚本或胶水语言来连接现有的组件或服务.Python支持模块和包,从而鼓励了程序的模块化和代码重用. 关于这篇文章 Python简单易学的语法可能会使Python开发

Java程序员常犯的10个错误

本文总结了Java程序员常犯的10个错误. #1. 把Array转化成ArrayList 把Array转化成ArrayList,程序员经常用以下方法: List<String> list = Arrays.asList(arr); Arrays.asList() 实际上返回一个ArrayList,但是这个ArrayList是Arrays的一个内部私有类,而不是java.util.ArrayList类.这个私有类java.util.Arrays.ArrayList有set(), get(), c

数据挖掘中易犯的十大错误

按照Elder博士的总结,这10大易犯错误包括: 0. 缺乏数据(Lack Data)1. 太关注训练(Focus on Training)2. 只依赖一项技术(Rely on One Technique)3. 提错了问题(Ask the Wrong Question)4. 只靠数据来说话(Listen (only) to the Data)5. 使用了未来的信息(Accept Leaks from the Future)6. 抛弃了不该忽略的案例(Discount Pesky Cases)7.

企业进行全球化扩张过程中最易犯的六个错误

注:本文英文版出自HBR,中文版由天地会珠海分舵编译.随着商业逐渐往全球化发展,企业可以通过瞄准正确的国际市场和调整自身的产品及策略以吸引当地的用户来获得竞争优势.同时应该避开下面提到的这几点易犯的错误. 市场营销人员往往处于一个公司进行全球化扩张的最前线.市场团队经常需要负责进行市场调研以决定公司是否应该进行扩张,同时还会负责创建一个获取客户的计划. 本人之前曾经是一个商业顾问,面向的客户就是那些需要进行全球化扩张的企业的市场主管.期间我注意到了一些妨碍一个企业进行市场全球化扩张的拦路虎.下面

必看 :大数据挖掘中易犯的11大错误

0.缺乏数据(LackData) 对于分类问题或预估问题来说,常常缺乏准确标注的案例. 例如: 欺诈侦测(FraudDetection):在上百万的交易中,可能只有屈指可数的欺诈交易,还有很多的欺诈交易没有被正确标注出来,这就需要在建模前花费大量人力来修正. 信用评分(CreditScoring):需要对潜在的高风险客户进行长期跟踪(比如两年),从而积累足够的评分样本. 1.太关注训练(FocusonTraining) IDMer:就象体育训练中越来越注重实战训练,因为单纯的封闭式训练常常会训练

Java程序最容易犯的21种错误

1.Duplicated Code 代码重复几乎是最常见的异味了.他也是Refactoring的主要目标之一.代码重复往往来自于copy-and-paste的编程风格.与他相对应OAOO是一个好系统的重要标志. 2.Long method 它是传统结构化的"遗毒".一个方法应当具有自我独立的意图,不要把几个意图放在一起. 3.Large Class 大类就是你把太多的责任交给了一个类.这里的规则是One Class One Responsibility. 4.Divergent Cha