机器学习菜鸟最常犯的5个错误,以及如何避免
大数据文摘作品 转载具体要求见文末
选文|Aileen 翻译|姜范波 校对|周冲
我常帮助菜鸟们学习机器学习。
但是我看到,他们在思维模式上和行动上,经常犯同样的错误。
本文我要指出他们经常栽跟头的5个地方。
我发自肺腑地相信,对于应用机器学习,任何人都可以学,并且学得很好。
希望你能够意识到自己已经毫无悬念地掉进了以下的某个坑里,然后果断采取行动,回到正路上。
让我们开始吧。
◆ ◆ ◆
不要从理论开始
传统的方法教机器学习是自下而上的——
step1:努力学习数学。
step2:努力学习机器学习理论。
step3:努力从头开始实现算法。
stepX???(等等等等,自行脑补。。。)
终于,开始使用机器学习(你的目标在此!)
这条路漫长,艰难。
然而,这是为想要摘金夺银的学术界大神们设计的。
你,只想要一个结果的吃瓜群众,凑什么热闹!
陷阱
如果你有以下想法或者说法,你已不幸落井——
- 我得先完成这门线性代数的课才行。
- 我得回学校先读个博士学位。
- 我得先啃完这本教科书。
出路
耗费4年在数学或者深奥的算法上,能将你带到目标么?
更大的可能是然并卵。你停步不前。或者知难而退。反正离你的目标不会越来越近。
出路是——立正,稍息,向后转!
如果机器学习的价值在于准确的预测,那么要学的就是如何将问题模式化并做出准确的预测。就从这开始。
然后把这件事儿弄好,好得不要不要的!
在你需要的时候,去阅读、截取、武装理论知识,但仅限于为你的目标服务,仅限于这样做会使你传递出更大价值。
◆ ◆ ◆
不要去学所有的机器学习
机器学习浩瀚无边啊。
它是计算机的自动学习过程,与人工智能多有交集。
从机器人的深奥学习理论算起,这个领域真的很大。
大得你无法一一收入囊中。
陷阱
如果你有下面的想法,你已不幸落井——
我得学会某个网页上提到的所有新技术。
我得学会计算机视觉,自然语言处理,语音处理,等。
首先。我得学会所有的所有。
出路
找个小旮旯,集中于此。
进一步缩小范围。
机器学习最有价值的部分是预测性建模。从数据创建模型进行预测。
从这里开始。
接下来,集中在某种与你最相关,或者你最感兴趣的模型。
然后死缠烂打。
也许你选择了某种技术,比如深度学习。也许你选择了某种问题,比如推荐系统。
也许你还没拿定主意,那么就选一个先。学好它。或者基本精通。
然后,转战到另一个领域。
◆ ◆ ◆
不要在算法上虚度光阴
机器学习确实关乎算法。
好多好多好多算法。
每个算法都是一个复杂的系统
是一个学习的小宇宙,有它自己的生态系统。
在算法的世界里你会迷路。所有人都会。
那些人叫做学术界。
陷阱
如果你有下面的说法,那么你已不幸落井——
- 我得弄明白它怎么工作的,在我使用它之前。
- 我得深入理解超参数先。
- 我调参的时候得解释清楚因果关系。
出路
算法不是结果。它们是得到结果的方法。
实际上,机器学习算法只是一堆商品。换掉它们。试用几十个。拿一些出来调调参数。接着换。一个更好的结果会让你对算法更有感觉,但是要知道什么时候止步。系统化这个过程。设计调参实验,让它们自动执行和分析。
机器学习无外乎算法的正确应用。但是应用机器学习不只是在算法里虚度光阴。集中火力在每个项目要得到的结果,即一系列的预测,或者一个可以得到这些预测的模型。
◆ ◆ ◆
不要从头开始实现一切
从头开始实现算法,你可以学到很多。
有时候你甚至需要去实现一项技术
因为没有合适的,
或者找不到现成的实现方案。
但是,一般来说,你不必如此,你也不该如此。
你的实现可能糟透了。抱歉——
它可能有小错误。
它可能很慢。
它可能太占内存。
它可能处理不好边界情形。
它甚至可能压根儿就错了。
陷阱
如果有以下情形,不幸你已落井——
你在写代码导入CSV文件(到底怎么回事!)
你在写代码做一个标准的算法,比如线性回归
你在写代码做交叉验证或者超参数调节。
出路
停下来!
使用一个通用的,已知是正确的,成千上万的程序猿都在用的库来处理边界情形。
使用一个高度优化的库,哪怕最后一个循环,最后一个字节都已经挤干净,最小限度占用内存。
使用图形化的用户界面,避免不必要的编程。
每次你想要用的时候都实现所有一切,对机器学习菜鸟而言,是一个非常慢的方法。
如果你想学习实现,那么,诚实一点,把它和学习利用应用机器学习来传递价值区分开来。
◆ ◆ ◆
不要总是换工具
有很多非常伟大的机器学习工具。
实际上,伟大的工具,连同数据和高性能硬件,
是机器学习得以复兴的原因。
但是,当你遇到接踵而至的新工具时
你就掉进流连忘返的坑里了。
陷阱
如果你有如下情形,不幸你已落井——
使用你听说过的新工具。
发现你每周或每月都在学习新的工具或者语言。
学一个库,见新思迁,半途而废。
出路
学习和使用新工具。
但是要有策略。
把新工具整合到解决问题的系统过程里。
如果你选好一个主打平台并坚守不移,你会高效得多。至少坚持到你能擅长或者精通一个。
推荐3个平台:
· Weka Workbench
· Python Ecosystem
· R platform
你的领域内还会有其它的平台和专业工具,坚持到底是爱好者与专业人士的区别。
◆ ◆ ◆
总结
本文你见识了我所见识到的机器学习菜鸟常犯的5大错误。重要的事再说一遍,它们是:
1. 不要从理论开始
2. 不要去学机器学习的所有东西
3. 不要在算法里虚度光阴
4. 不要从头实现一切
5. 不要总是换工具。
你踩坑了么?需要我帮你拉出来么?欢迎留言。我很乐意伸出援手。
- 比特儿(Bter.com) 比特币交易平台被盗事件全解析
- BitTorrent Bleep:无法被监控的聊天软件
- QQ蠕虫的行为检测方法
- 趋势OfficeScan系列产品漏洞分析
- [置顶] 浅谈我为什么选择用Retrofit作为我的网络请求框架
- 基于HTML5的Canvas指纹跟踪技术
- 有关 Android 应用桌面角标 (BadgeNumber) 实现的探讨
- XSS的原理分析与解剖
- Hold安全公司公布俄罗斯大型泄密事件细节
- 走近科学:如何搞定各种各样的终端机
- android 打造不同的Seekbar
- 最简单最常用的LinearLayout线性布局
- 漏洞科普:你对弱口令重视吗?
- 自定义View简单使用
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 安装ubuntu时黑屏的解决办法(3种)
- linux输入yum后提示: -bash: /usr/bin/yum: No such file or directory的解决方法
- 分布式锁,三种实现方式,性能对比分析!
- Linux 中锁定和解锁用户帐户的三种方法
- centos8 安装 nginx的详细教程(图文)
- Ubuntu系统日志配置 /var/log/messages的方法
- 在Ubuntu 14 上安装 Nginx-RTMP 流媒体服务器的教程
- centos8自定义目录安装nginx(教程详解)
- VMware下Centos7桥接方式网络配置步骤详解
- Linux CentOS 6.5 卸载、tar安装MySQL的教程
- Linux CentOS 6.5 ifconfig查询不到ip的解决方法
- 打卡群2刷题总结1009——二叉树的中序遍历
- 解决Ubuntu 18.04安装VMwareTools错误问题
- 对linux下syslogd以及syslog.conf文件的解读说明
- Linux下安装tomcat并部署网站(推荐)