Amazon 机器学习回顾-机器学习初体验

本文是翻译,版权归原作者所有



我拥有丹麦最好的技术大学的软件工程学士学位,我还拥有商业硕士学位。

我把自己看成是相当技术型的人才。我的工作是确保公司的开发人员写出优秀的代码,以及我们选用合适架构方面的决策。我们做着优秀的工作,客户貌似喜欢我们(是的,他们坚持买我们的东西!)。

不过我是一名商人。在商言商,我对机器学习和人工智能(由于某种原因,我认为它是一样的——好吧,换句说法,过去认为是一样的)感到非常激动。我相信这就是未来,我完全想开发下一代应用了“机器学习”的产品,以此来统治世界。

但是我在机器学习、人工智能、深度学习或我看过的、任何其它奇特的术语方面,没有相关经验。

当 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 让我冷静一下,他对我说,有一些细节需要考虑:

他对我说,机器学习是艰苦卓绝的工作,你不得不和你的数据泡在一起,然后才能期望更好的结果。

很明显,这意味着机器学习很难。

在和 Mario 谈了 30 分钟后,他在 Skype 给我写道:

最后一件事(我保证),我运行梯度增强决策树模型,只是想看看发生了什么,平均绝对百分误差下降到了 25%。这是好的信号,一个更加复杂的模型,经过调教参数,可以给出更好的误差。

现在,我们正在靠近最好的情况!再做些额外的工作,谁知道会不会降低到 15-20%?

不管怎样,我对这个结果感到非常可悲。这么说吧,我们付出了大量努力,将误差幅度降到了 15%。这对于预测未来不是非常好。

不过,我犯了一个大错误:我不理解什么是机器学习。

Amazon Machine Learning 是让人厌烦的数学,而不是意欲统治世界的邪恶 AI。

Amazon Machine Learning 相当简单。

它仅仅要做的是大量的数学,它是线性回归。它是简单的、大量矩阵计算,然后从模型中找到可选值。

机器学习不理解你的数据。机器学习是统计学和计算机科学的简单组合。

回头看看,我太幼稚了。

当然,我该怎样期望比 25% 更好的误差呢?使用常规思维,这是可以理解的,它不可能去预测。

或许如果它真的理解数字后面的背景,它有大脑,有更多的数据。然后它可能会更好。

但是 Amazon Machine Learning 属于简单的数学。

Amazon Machine Learning 不是面向你们普通开发人员的

是这样的。我应该多看一些,我可能已经阅读了文章和视频,甚至阅读了 Mario 发给我的文章(咳咳)。

但是从用户角度看,它远没有准备好。

它不是你们这些普通开发人员能够坐下来使用的工具。

它需要你理解一些非常基础的机器学习。看到像 Mario 从来没有用过此工具的这种人能够很快理解它,是非常有意思的。

但是我,从来没有接触过它,是没有机会理解它的。

我确信它是一个伟大的工具。在合适的帮助下,我确信它是非常有用的。但是它无法解决世界饥饿或预测我的口袋里明天会有多少钱;然而,它是一次有趣的体验。


译文:Amazon 机器学习回顾-机器学习初体验 》| 腊八粥