C新智元编译 http://mp.weixin.qq.com/s?__biz=MzA4MTI0Mjc0OA==&mid=2650962347&idx=3&sn=112431704648465878bd32b5b48ceba3&scene=23&srcid=0525hFiiXfTdgWGg27eFBOhl#rd 来源:InfoWorld 译者:朱焕 2016 【新智元导读】机器学习云这么多,各家特色是什么?哪个适合练级,哪里高手齐聚?哪家有不为人知的 Bug?最重要的,哪个最适合解决你的问题?资深程序员实测点评亚马逊、微软、谷歌、IBM 等6大机器学习云平台,分析各自优缺点。开发者、数据科学家、商业用户或者单纯爱好者都能从本文中受益。
微软、Databricks、谷歌、惠普企业和 IBM 都为解决许多机器学习问题提供了工具。本文将简要分析这6种商业机器学习解决方案的特点。 亚马逊试图让机器学习能够为普通人所利用。亚马逊希望的是,分析师只需要理解那些被解决的问题本身,而不需要理解数据科学和机器学习算法。 总的来说,要使用亚马逊机器学习,你首先要把你的数据整理为 CSV 格式、上传到亚马逊的 S3 服务;然后你创造、训练和评估你的机器学习模型;最终,你能用它进行批量或实时的预测。每个步骤都是迭代性的,整个过程亦然。机器学习并不是一件简单静态的事,尽管我们可以把算法选择的部分留给亚马逊来做。 亚马逊机器学习支持3类模型——二元分类、多类别分类和回归——每个类型都有一个对应的算法。在优化方面,亚马逊机器学习使用随机梯度下降(SGD),这种方法能在训练数据中建造多序列通路(multiple sequential passes),更新每个小批量样本的特征权重,从而将损失函数最小化。损失函数是指现实值和预测值之间的差异。梯度下降优化法只在连续、可微的损失函数(例如 logistic 函数和平方损失函数 )的情况下工作良好。 对二元分类,亚马逊机器学习使用了 logistic 回归(logistic 损失函数加上随机梯度下降)。对多类别分类,亚马逊机器学习使用了多元 logistic 回归(多元 logistic 损失函数加上随机梯度下降)。对回归,亚马逊机器学习使用了线性回归(平方损失函数加上随机梯度下降)。
亚马逊机器学习通过目标数据的类型来决定所要解决的机器学习任务的类型。例如,具有数字目标变量的预测问题意味着回归。而对那些具有非数字目标变量的预测问题,如果目标状态是两个,那就对应二元分类模型;如果目标状态是多个,就对应多类别分类模型。
亚马逊机器学习服务中的特征选项保存在清单中。当对数据源的描述性统计被计算好之后,亚马逊就会创造出一个默认的清单。在你将应用于数据的机器学习模型中,你既可使用这个清单,也不用它。一旦你拥有了一个能达到你的评估要求的模型,你就可以用它来建立一个实时网络服务,或批量地产生预测。但请记住,与物理常量不同的是,人的行为随着时间而改变。你需要定期检查你的模型所产生的预测准确度标准,并在需要时重新训练它。 与亚马逊不同,微软试图为有经验的数据科学家提供一整套算法和工具。因此,Azure 机器学习是更广泛的微软 Cortana 分析套装中的一部分。微软 Azure 机器学习也拥有拖拽式的界面,以便于构造模型训练和评估来自模块的数据流。 Azure 机器学习工具包括导入数据集、训练和发布实验性模型、在 Jupyter Notebooks 中处理数据和保存已训练的模型等功能。该机器学习工具中包含数十个样本数据集,五个数据格式转换方式,多个读取和写入数据的方式,数十种数据转换和三个用来选择特征的选项。在 Azure 机器学习服务中,你将为异常检测、分类、聚类和回归找到多种模型;此外还有四种为模型打分的方法、三种评估模型的策略和六种训练模型的过程。你也可以使用两个 OpenCV(开源计算机视觉)模块、统计学方程和文本分析工具。 上面这些已包含很多东西了,如果你理解你的生意、数据和模型,那么理论上它们足够用来以任何模型来处理任何数据了。当既有的 Azure 机器学习工具模块无法实现你想要的东西时,你也可以自己开发 Python 或 R 模块。 你可以用 Jupyter Notebooks 来开发和测试 Python 2 和 Python 3 语言模块。Jupyter Notebooks 已扩展了 Azure 机器学习服务的 Python 客户库,也扩展了 scikit-learn、matplotlib 和 NUmpy,从而能够处理你在 Azure 中存储的那些数据。Azure Jupyter Notebooks 将来也会支持 R 语言,目前,你可以在本地使用 Rstudio 以改变 Azure 的输入输出,或者在微软数据科学 VM 中安装 Rstudio。
当你在 Azure 机器学习服务中创造一个新实验时,你既可以从零开始,也可以从微软的 70 个样本开始,这些样本覆盖了大部分常用模型。此外在 Cortana Gallery 还可以找到其他 Azure 社区的内容。
要使用 Cortana 分析过程(CAP),应从计划和安装的步骤开始。这很重要,除非你已经是一名对商业问题、数据和 Azure 机器学习都十分熟悉的受过训练的数据科学家,并已为项目创造了必要的 CAP 环境。CAP 环境中可以包含一个 Azure 存储账号,一个微软数据科学 VM,一个 HDInsight (Hadoop) 群组和一个使用 Azure 机器学习服务的机器学习工作空间。如果这些选项令你困惑,你可以参考微软的文档。安装好之后,CAP 包含5个后续步骤:消化数据、探索性数据分析和预处理,特征生成,模型生成和对模型的部署与使用。
微软最近发布了一系列的认知服务,这些服务已从牛津项目(Project Oxford)进化成了 Azure 预览服务。这些认知服务已在语音、文本分析、面孔识别、情绪识别和其他类似能力方面进行了预训练。除了你自己训练的模型之外,这些认知服务也可以作为补充。 Databricks 是一个基于 Apache Spark 的商业云服务。而 Apache Spark 是一个开源集群计算框架,它包括一个机器学习库、一个集群管理器、一个类似 Jupyter 的互动式笔记本、仪表盘和工作项目列表。Databricks 公司由 Spark 的发明者建立,因此通过 Databricks 服务你可以毫不费力地玩转那些 Spark 集群。
它的库 MLlib 包含范围广泛的机器学习和统计算法,这些算法都针对基于内存的分布式 Spark 架构方面进行了调整。MLlib中包含总结性统计、相关、取样、假设检验、分类和回归、协同过滤、聚类分析、降维、特征提取和转换函数、优化算法等等。换句话说,对有经验的数据科学家来说,它是一个相当完整的工具包。 上面这个具有 Python 代码的 Databricks 笔记本页面展示了一种对公共自行车租用数据集的分析方法。在笔记本的这个部分,我们正在训练管道,通过使用交叉验证来运行多个梯度上升树回归。来源:infoworld.com
Databricks 被设计为可规模化的、相对易用的数据科学平台,其目标使用者是那些已了解统计学并能做一点编程的人。要有效地使用它,你需要知道一些 SQL,也需要从 Scala、R 或 Python 中了解其中之一。如果你精通你所选择的语言,那就更好了,因为这样你就可以集中精力学习 Spark了。你可以通过在免费的 Databricks 社区版集群上运行 Databricks 笔记本的样本来尝试进行最初的使用。 谷歌最近宣布了多个机器学习相关的产品。其中最有趣的是云学习和云语音 API,这二者目前都限于预览。谷歌的翻译 API 和云视觉 API 已经可供使用,其中谷歌翻译可以识别语言并在 80 多种语言和方言之间进行翻译,而云视觉可以从图像中识别多种特征。从谷歌发布的试用版看,它们表现得不错。 谷歌预测(Google Prediction ) API 能够训练、评估和预测回归和分类问题,但用户无法选择采用什么算法。(它起源于 2013 年。) 我在 TensorFlow 的 Github 存放目录中检查了它的代码。我读了它的一些 C、C++ 和 Python 代码。我也研读了 TensorFlow 网站和白皮书。TensorFlow 让你能够从电脑桌面、服务器或手机上对单个或多个 CPU 或 GPU 部署计算。它拥有内置的各种训练算法和神经网络算法。从挑战难度的极客角度看,如果难度总分 10 分那么它能得9分。它的难度不仅超出了商业分析师的能力,也会令许多数据科学家感到困难。 谷歌翻译 API、云视觉 API 和新的谷歌云语音 API 都是预训练的机器学习模型。根据谷歌的说法,它的云语音 API 使用神经网络技术与支撑 Google app 语音搜索和支撑 Google Keyboard 语音打字的技术是同一种。 Haven OnDemand 目前拥有音频-视频分析、连接器、格式转换、图形分析、惠普实验室沙盒、图像分析、政策、预测、查询概览与操作、搜索、文本分析和非结构化文本索引等 API。我用一个随机集做试验,探索了这些 API 是如何被调用和使用的。
Haven 语音识别只支持6种语言和方言。它对我的高质量美式英语测试文件的识别准确率还行,但并不完美。 Haven OnDemand 连接器(connector)让你能够从外部系统中提取信息并通过 Haven OnDemand API 来更新信息。该连接器已相当成熟,这是因为它是基于惠普的搜索服务 IDOL 的连接器。文本提取 API 使用惠普企业的 KeyView 服务来从你提供的文件中提取元数据和文本内容;由于 KeyView 已相当成熟,该 API 能处理超过 500 种不同的文件格式。 图形分析是一组预览服务,它只按照一个从英文维基百科训练而来的索引而工作。你不能用你自己的数据来训练它。 我使用图像分析 API 试验了条形码识别,结果还不错。我也试验了面孔识别,这时它对我的测试图像的识别没有它对惠普企业自己的样本识别得好。图像识别目前还只限于一组固定的企业标识,用处有限。
我失望地发现,惠普企业的预测性分析只处理二元分类问题:没有多类别分类,也没有回归,更不要提无引导学习了。这严重限制了它的应用范围。不过从好的一面看,它的训练预测 API 能对 CSV 或 JSON 数据进行自动验证、探索、分离和准备,并用于训练决策树、Logistic 回归、朴素贝叶斯,并支持多参数的向量机(SVM)二元分类模型。之后,它会用数据中的评估部分来测试分类器,并将最优的模型发布为服务。 Haven OnDemand 搜索使用 IDOL 引擎来执行对公共和私有文本索引的高级搜索。文本分析 API 则既能进行简单的自动补全、词汇扩展,也能进行语言识别、概念提取和情感分析。 IBM 提供了基于 Watson 的机器学习服务和 IBM SPSS Modeler。IBM 实际上为开发者、数据科学家和商业用户这3类用户准备了不同的机器学习服务。 SPSS Modeler 是一个 Windows 应用,最近也可以在云上使用它了。Modeler 的个人版包括数据导入和导出、数据自动准备、整理和抽取转换装载(ETL)等功能。它拥有 30 多种基本的机器学习算法和自动建模方法,具有 R 语言可扩展性,可使用 Python 脚本。更昂贵的版本则能通过 IBM SPSS 分析服务器来使用大数据,使用 Hadoop/Spark、冠军-挑战者功能、 A/B 测试,文本与实体分析以及社交网络分析。
SPSS Modeler 中的机器学习算法、特征选择方法和对支持格式的选择,都可以拿来和 Azure 机器学习、Databricks Spark 机器学习的相应部分进行比较。甚至它的自动建模(训练并评估多个模型并挑选最优者)部分也可以拿来比较,尽管在 SPSS Modeler 中,用户更容易弄明白如何自动建模。 IBM 的 Bluemix 云容纳了预测性分析网络(Predictive Analytics Web)服务,该服务可以应用 SPSS 模型,向你提供评价性 API,而你可以在你的 apps 里调用它。除了网络服务外,预测性分析也支持批量工作,以对额外数据进行重新训练和重新评估。 Watson 名下除了预测性分析之外,还有 18 种 Bluemix 服务。其中 Alchemy API 向用户提供三种服务(Alchemy 语言、Alchemy 视觉和 Alchemy 数据),它能够让商业公司和研发者建立认知性应用,从而理解文本和图像中的内容和语境。
概念扩展 API 可以分析文本并基于语境学习类似的词语或词组。概念洞察 API 可以把你提供的文件与既有的基于维基百科话题的概念图连接起来。而对话服务则让你能够使用自然语言和用户概要信息,通过对话界面设计应用与用户互动的方式。文档转换服务把单一的 HTML、PDF 或微软 Word 文档转换为标准化 HTML,纯文本或可以用于其他 Watson 服务的 JSON 格式的答案单元集。
语言翻译服务则处理多个知识领域和语言对。在新闻和谈话领域,语言对包括英语、巴西式葡语,法语、现代标准阿拉伯语和西班牙语。在专利领域,语言对包括英语、巴西式葡语、汉语、韩语和西班牙语。翻译服务可以从 62 种语言中识别出某个纯文本的语言。 自然语言分类器服务运用认知计算技术,通过在你的类别和短语集上进行训练,可以返回对句子、问题或短语的最佳匹配类别。个性洞察力服务从交易和社交媒体数据(其中每个个体至少要提供 1000 个单词的数据)中判断个体的心理特质,这些特质被记录在 JSON 格式的性格树之中。关系提取服务则把句子分析为多个部分,并通过语境分析来探测这些(词性和功能)部分之间的关系。
其他 Bluemix 服务有的能提高搜索结果的相关性,有的在6种语言的文本和语音之间进行转换,有的从文本中识别情绪,还有的能分析视觉场景和对象。 Watson 分析服务使用了 IBM 自己的自然语言处理工具,让商业分析师和其他非数据科学家能更容易地用机器学习。 你应该基于你自己和你的团队的技能来衡量上面这些企业提供的机器学习服务。 对数据科学家和那些拥有数据科学家的团队来说,选择面很宽。擅长编程的数据科学家还可以做更多的事:Google、Azure、Databricks 比 Amazon、SPSS Modeler 需要更多的编程技能,不过前3个也因此变得更具灵活性。 在 Bluemix 上运行的 Watson 服务在云应用方面为开发者提供了额外的预训练能力。若干 Azure 服务、3 个谷歌云 API 和若干 Haven OnDemand API 也在文档内容方面提供了预训练能力。 谷歌 TensorFlow 库适用于那些能流利使用 Python,C++ 或 C 的高端机器学习编程者。谷歌的云机器学习平台似乎适用于了解 Python 和云数据管道的高端数据科学家。 尽管亚马逊机器学习和 Watson 分析服务宣称它们的目标用户是商业分析师或“任何商业职位”,我很怀疑他们这一说法能否实现。如果你需要开发机器学习应用,但却缺乏统计数学或编程背景,我认为你应该在你的团队中引入懂这些的人。 亚马逊机器学习 优点:
缺点:
微软 Azure 机器学习 优点:
缺点:
Databricks 及 Spark 1.6 优点:
缺点:
惠普企业 Haven OnDemand 优点:
缺点:
IBM Watson 与预测分析服务 优点:
缺点:
「招聘」 全职记者、编译和活动运营 欢迎实习生 以及人工智能翻译社志愿者 详细信息请进入公众号点击「招聘」 或发邮件至 jobs@aiera.com.cn 新智元招聘信息请点击“阅读原文” |
|