Amazon机器学习回顾-机器学习初体验
英文原文:Review of Amazon Machine learning – first experience with machine learning
我拥有丹麦最好的技术大学的软件工程学士学位,我还拥有商业硕士学位。
我把自己看成是相当技术型的人才。我的工作是确保公司的开发人员写出优秀的代码,以及我们选用合适架构方面的决策。我们做着优秀的工作,客户貌似喜欢我们(是的,他们坚持买我们的东西!)。
不过我是一名商人。在商言商,我对机器学习和人工智能(由于某种原因,我认为它是一样的——好吧,换句说法,过去认为是一样的)感到非常激动。我相信这就是未来,我完全想开发下一代应用了“机器学习”的产品,以此来统治世界。
但是我在机器学习、人工智能、深度学习或我看过的、任何其它奇特的术语方面,没有相关经验。
当 Amazon 上线了 Amazon Machine Learning 时,我激动万分。因为我可以变成一名 AI、机器学习黑客,准备 hack 整个世界。
我观看了他们的介绍视频(时长大约 30 分钟),它看起来非常酷。当主持人演示的时候,它貌似相当简单。有了这个念头,我觉得这就是我不得不尝试的东西。
我对 Amazon Machine Learning 的回顾和体验
我的一个客户是丹麦的一家大型网店。我提取了过去 5.5 年的收益数据,大约 2000 行。
这意味着我有了一份文件:
- 创建时间
- 收益
现在我的(幼稚吗?)命题是:让我们导入该工具,等 5 分钟,就得到了一份几乎完美的、对未来的预测。我想,最大有 5-10% 的误差。
我打开这个工具,创建了一份新的数据源,准备震惊全世界。失败了。
Fuck?失败了?
我核查数据源,哦,在我的列里面没有空格。还算合理,重试一下。
失败。
可能是它不喜欢我的时间格式。很明显,丹麦的时间格式不是主流的,才给出了错误。
我打算找到我的 Python 技巧,导入这份数据,再看看。
我最终创建了一份新的数据文件,有一些列,ID、正确的时间、最重要的是:格式良好的收益列。
我创建了一个数据源。成功。
现在我准备好了。我最后打败了这个系统,可以继续了。
我把收益选为目标数据,把时间选为类别。点击,点击,请快快预测。
系统提示 pending(挂起)。
在 10 分钟后,系统提示数据准备好了!(我猜测,10 分钟意味着数据是如此地完美,我可以告诉客户去让整个商业智能团队感到激动、并使用我的机器学习技巧。)
输出了一份文件,有两列,“score(分数)”一列的数字形如“0.631”、“0.521”。
我试着看了下接口,找不到“预测未来值”的按钮。
我继续随便点击,没有反应。在我的 Amazon 存储里,出现了一些奇怪的图片、奇怪的数字和奇怪的文件。
我本可以放弃的……
我可能想得太简单了(你能够看得出来),但是至少我明白了我的局限。
我来到 Upwork(早期的 Odesk),寻求帮助。淘汰了一群差劲的申请人,我找到了我的救星。
来自巴西的 Mario Filho 在其个人主页给出了报价(20 美元/小时):
我对使用宽泛的机器学习算法富有经验,包括监督学习【注1】(分类问题【注2】、回归分析【注3】)和非监督式学习【注4】(聚类【注5】),用数据解决现实世界的问题。
如果你雇佣我,我将采取以下步骤来确保你的数据项目成功:
- 理解你的目标和期望。
- 清理和准备数据。
- 开发符合技术标准的模型。
- 报告测试环境下的性能。
- 部署模型到生产环境。
看起来像是我需要的家伙。或许他从来没有用过 Amazon Machine Learning,但是我肯定“0.631”、“0.521”的结果对于他而言,要比我有意义得多。
(小推荐:如果你需要机器学习方面的帮助,请联系他在 LinkedIn 上的主页:https://www.linkedin.com/in/mariofilho ——非常有帮助、友好、深谙这方面的东东!我认为他不会一直保持当前的报价——但是,即使再高一些,也是值得的。)
我给他发送了我的订单收益,告诉他,如果有结果,我们做一个视频录制【注5】。
两小时后,Mario 准备好了。
天哪:Amazon Machine Learning 太复杂了
我在屏幕录制里看到的第一个东东是他写的长达 49 行的 Python “小”脚本,用于美化数据。我被触动了:不支持对其它类型文件的“upload button”的点击操作?
真相是:不支持。接下来的 30 分钟是令人惊奇的。
Mario 做了多份数据源(很明显,你需要针对你的数据、测试和评估的数据源)。他做了批预测,他做了你需要得到真实数据的所有工作。
我被触动了。
我想,在看完初始化的介绍视频之后,我有了一个机会。
孩子,我错了。我自己搞定是绝对没有可能的。
最后,我们试着上传一个文件做为数据源,我们能够用来产生一个对 2015-5-7(我们直到 2015-5-6 才有收益)的预测。
我们得到了一个数字。
我将其和真实数据比较,发现我们有 14% 的误差幅度。
我正准备告诉 Mario 这是多么棒,但是 Mario 已经写了下面的 Python 小函数(好吧,因为他是巴西的?),然后运行:
def mape (y_true,y_pred): print ‘MAPE’, np.abs ((y_true – y_pred) / y_true) .mean ()
结果表明,我们的误差有 34%。
34%?太……差劲了!
我震惊了!34%?
我不能给客户说,让他们的商业智能团队对 34% 的误差幅度感到激动!
Mario 让我冷静一下,他对我说,有一些细节需要考虑:
- 你不得不清理离群值的数据集(明显的数据点)
- 我们可以从普通的机器学习技巧中获益,比如标准化【注6】
- Aamzon 使用非常简单的线性回归技术。他指出了有帮助的、关于梯度增强决策方面的东东。
- 为数据的具体子集创建模型(比如每个 SKU、或地区的模型)
- 特征工程:创建相关特征,探索它们之间的交互(我仍然根本不知道它的意思……很可能是重要的东东)
他对我说,机器学习是艰苦卓绝的工作,你不得不和你的数据泡在一起,然后才能期望更好的结果。
很明显,这意味着机器学习很难。
在和 Mario 谈了 30 分钟后,他在 Skype 给我写道:
“最后一件事(我保证),我运行梯度增强决策树模型,只是想看看发生了什么,平均绝对百分误差下降到了 25%。这是好的信号,一个更加复杂的模型,经过调教参数,可以给出更好的误差。”
现在,我们正在靠近最好的情况!再做些额外的工作,谁知道会不会降低到 15-20%?
不管怎样,我对这个结果感到非常可悲。这么说吧,我们付出了大量努力,将误差幅度降到了 15%。这对于预测未来不是非常好。
不过,我犯了一个大错误:我不理解什么是机器学习。
Amazon Machine Learning 是让人厌烦的数学,而不是意欲统治世界的邪恶 AI。
Amazon Machine Learning 相当简单。
它仅仅要做的是大量的数学,它是线性回归。它是简单的、大量矩阵计算,然后从模型中找到可选值。
机器学习不理解你的数据。机器学习是统计学和计算机科学的简单组合。
回头看看,我太幼稚了。
当然,我该怎样期望比 25% 更好的误差呢?使用常规思维,这是可以理解的,它不可能去预测。
或许如果它真的理解数字后面的背景,它有大脑,有更多的数据。然后它可能会更好。
但是 Amazon Machine Learning 属于简单的数学。
Amazon Machine Learning 不是面向你们普通开发人员的
是这样的。我应该多看一些,我可能已经阅读了文章和视频,甚至阅读了 Mario 发给我的文章(咳咳)。
但是从用户角度看,它远没有准备好。
它不是你们这些普通开发人员能够坐下来使用的工具。
它需要你理解一些非常基础的机器学习。看到像 Mario 从来没有用过此工具的这种人能够很快理解它,是非常有意思的。
但是我,从来没有接触过它,是没有机会理解它的。
我确信它是一个伟大的工具。在合适的帮助下,我确信它是非常有用的。但是它无法解决世界饥饿或预测我的口袋里明天会有多少钱;然而,它是一次有趣的体验。
- 注1:监督式学习(英语:Supervised learning),是一个机器学习中的方法,可以由训练资料中学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。http://zh.wikipedia.org/wiki/%E7%9B%A3%E7%9D%A3%E5%BC%8F%E5%AD%B8%E7%BF%92
- 注2:分类是指识别出样本所属的类别。识别前是否需要进行训练,可分为有监督分类和无监督分类。http://zh.wikipedia.org/wiki/%E5%88%86%E7%B1%BB%E9%97%AE%E9%A2%98
- 注3:回归分析(英语:Regression Analysis)是一种统计学上分析数据的方法,目的在于了解两个或多个变数间是否相关、相关方向与强度,并建立数学模型以便观察特定变数来预测研究者感兴趣的变数。http://zh.wikipedia.org/wiki/%E8%BF%B4%E6%AD%B8%E5%88%86%E6%9E%90
- 注4:非监督式学习是一种机器学习的方式,并不需要人力来输入标签。它是监督式学习和强化学习等策略之外的一种选择。在监督式学习中,典型的任务是分类和回归分析,且需要使用到人工预先准备好的范例(base)。http://zh.wikipedia.org/wiki/%E9%9D%9E%E7%9B%A3%E7%9D%A3%E5%BC%8F%E5%AD%B8%E7%BF%92
- 注5:屏幕录制(或截屏)是利用数字方式录制电脑屏幕输出,也被称为视频屏幕捕获,常含音频旁白。术语“屏幕录制” (en:Screencast)与相关术语 “屏幕截图”(en:Screenshot)的比较:屏幕截图是电脑屏幕上的图片;而屏幕录制本质上是一个随着时间的变化,用户在电脑屏幕上看到的电影, 音频旁白使其更具吸引力。http://zh.wikipedia.org/wiki/%E8%9E%A2%E5%B9%95%E9%8C%84%E5%BD%B1
- 注6:在统计学以及一些统计学应用领域,标准化有着一系列涵义。举个最简单的例子,率的标准化指的是参照某个标准来调整两组资料的构成使其能够形 成参考,比如两者有着不同的尺寸和规格,如果要比较两个总率时,往往按照某个统一的标准(如统一的内部构成)来进行修正,以消除内部构成不同所造成的对结 果的影响。http://zh.wikipedia.org/wiki/%E6%A0%87%E5%87%86%E5%8C%96_(%E7%BB%9F%E8%AE%A1%E5%AD%A6)
译文: 《Amazon 机器学习回顾-机器学习初体验 》 腊八粥