转载

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 机器学习回顾-机器学习初体验 》 腊八粥

正文到此结束
Loading...