# 黑盒机器学习的诱惑陷阱

> 原文： [https://machinelearningmastery.com/the-seductive-trap-of-black-box-machine-learning/](https://machinelearningmastery.com/the-seductive-trap-of-black-box-machine-learning/)

只要我参与数据挖掘和机器学习竞赛，我就考虑过自动参与。也许它表明我想要解决构建工具的问题比我想要解决手头的问题更多。

在处理数据集时，我通常花费不成比例的时间来考虑算法调优和运行调优实验。我倾向于进行赛后分析并对后来的时间分配感到后悔，几乎总是认为可以将更多的时间用于特征工程，探索不同的模型和假设，以及混合。

## 来自地狱的自动机器学习器

我曾多次勾勒出“完美”系统，其中模型运行，调整和结果混合是自动化的，人类的努力专注于定义问题的不同观点。

我甚至用几种不同语言为竞赛建立了几次不完美的系统变体。第一个版本是在十多年前的Java中。最近的版本是在R中使用make文件和bash脚本大约6个月前。

[![machine learning pipeline](img/8e7964ae28b4b9ec47b735d3dbcdbe8d.jpg)](https://3qeqpr26caki16dnhd19sv6by6v-wpengine.netdna-ssl.com/wp-content/uploads/2014/04/machine-learning-pipeline.jpg)

机器学习管道
照片由[西雅图市档案馆](https://www.flickr.com/photos/seattlemunicipalarchives/12504672623/sizes/l)，保留一些权利。

### 系统设计

每次它看起来像一个管道，我通过克服上一次迭代的致命错误使其更好。管道设计的要点如下：

1.  **原始数据**：原始数据源（数据库访问）或文件
2.  **数据视图**：关于定义为查询或平面文件的问题的视图
3.  **数据分区**：将数据视图拆分为交叉验证折叠，测试/训练折叠以及评估模型和为竞争做出预测所需的任何其他折叠。
4.  **分析报告**：使用描述性统计和图表汇总数据视图。
5.  **模型**：机器学习算法和配置与输入数据一起用于即时构建模型。
6.  **模型输出**：所有数据视图的所有数据分区上的模型的原始结果。
7.  **Blends** ：集成算法和配置，旨在为所有数据视图上的所有数据分区创建模型输出的混合。
8.  **记分牌**：本地记分牌，描述所有已完成的运行及其可以分类和汇总的分数。
9.  **预测**：可上报的预测，用于上传到竞赛排行榜等

该系统专注于分类和回归问题，因为我看到的大多数问题都可以简化为这种形式的问题。

使用此模型，运营商将大部分时间用于定义新数据视图以插入“数据视图”部分。这些是用于定义算法问题的人为定义或智能自动化方式。可以创建自动视图，例如来自特征选择算法的特征和诸如属性的标准化，标准化，平方等的变换。

它是数据或配置驱动的。例如，“运行”是与数据视图组合的算法配置。如果该组合的结果不存在，则会在下次运行时创建它们。与报告，混合，预测等相同。这提供了自然的检查指向，并且在任何时候系统的“状态”由已经定义的配置创建的工作产品定义。我最近使用磁盘上的文件对其进行了建模，但它可以很容易地在数据库中建模。

### 系统优势

如上所述，管道设计旨在让计算机专注于自动化程序，使操作员能够专注于提出有关手头问题的新观点。该方法的一些好处包括：

*   算法一直存在，能够修复，调整和重新运行非常重要。
*   竞争中的限制因素通常是对问题的新观点，而不是CPU时间或算法调整，持续集成系统可以整天重新运行主脚本寻找新的结果进行整合，使用新的配置，新的混合推广。
*   该设计允许以新数据视图和新模型配置文件的形式放弃添加想法。

其他报告可以插入“分析报告”部分，其结果旨在激发“数据视图”部分的更多想法。

其他模型以算法和算法配置的形式添加到“模型”部分。很快就可以为算法建立标准算法和标准配置文件的语料库。网格搜索和算法参数的随机搜索可以添加新的配置，也可以作为搜索过程的结果。

它是可插拔的，您可以看到如何继续添加到框架中，将经验教训汇总到各个项目中。我的愿景是将框架作为公共开源，并在各个层面快速累积算法和报告，利用多个机器学习库并在需要时分发计算基础设施。

## 徒劳无功

所述系统是一个诱人的陷阱。它放弃了设计数据问题解决方案的责任。根据领域知识和专业知识智能地选择属性和算法。它将问题视为搜索问题并释放CPU猎犬。

我认为构建这个系统的生产级版本是徒劳的。我认为这是因为它旨在解决一个人为的问题：机器学习竞赛。

我大多相信这一点，比如99.99％。我一直在探讨这个想法，以防万一我错了。这篇文章是我推动这一信念的界限的一个例子。

如果我描述的这样的系统存在，我会使用它还是我还想构建我自己的系统版本？你会怎么做？

## 机器学习即服务（MLaaS）

我认为这种系统的风格确实存在，或者我可以欺骗自己认为它存在是为了争论。我认为这个愿景的商业友好版本已经存在，它是商品化的机器学习或机器学习即服务（MLaaS）。

我上面描述的系统专注于一个问题：给定数据集，可以生成哪些最佳预测？ [谷歌预测API](https://developers.google.com/prediction/) 可能是这种类型的系统的一个例子（如果我关闭一只眼睛并与另一只眼睛斜视）。我不在乎我如何获得最好的结果（或者足够好的结果），只是给他们我，该死的。

[![BigML Interactive Decision Tree](img/9201339dae39c27755ad066f401d4656.jpg)](https://3qeqpr26caki16dnhd19sv6by6v-wpengine.netdna-ssl.com/wp-content/uploads/2014/03/bigml-decision-tree.png)

BigML交互式决策树

我将其与所谓的“商业友好型”MLaaS区分开来。我想到 [BigML](http://machinelearningmastery.com/bigml-review-discover-the-clever-features-in-this-machine-learning-as-a-service-platform/ "BigML Review: Discover the Clever Features in This Machine Learning as a Service Platform") 就是这类服务的一个例子。他们是我想象的这样的服务，如果它打扮得很好，可以卖给企业。差异化的一个关键点是以牺牲预测准确率为代价进行模型内省的能力。

你不仅想要“有史以来最好的预测，该死的”，你想知道如何。这些数字需要围绕它们进行叙述。企业需要这些信息，因此他们可以内化并将其转移到其他问题，并在概念漂移后将来转移到同样的问题。知识是秘诀，而不是创造知识的模型。

我认为这也说明了为什么相关企业的机器学习竞赛结果有限的原因。最好的竞争结果可以为方法和流程注入新的想法，但实际的预测，甚至实际的模型都是丢失的。

## 黑盒机器学习

可能存在黑盒机器学习的地方，这就是模型无关紧要的问题。想到的一个例子是赌博（如赛马或股票市场）。这些模型并不重要，因为它很快变得陈旧。因此，只有下一批预测和建立模型的过程才是最重要的。

[![black box machine learning](img/53faa3791ec3bca045b48328a466b215.jpg)](https://3qeqpr26caki16dnhd19sv6by6v-wpengine.netdna-ssl.com/wp-content/uploads/2014/04/black-box-machine-learning.jpg)

黑盒机学习
摄影：[混乱之屋](https://www.flickr.com/photos/home_of_chaos/6332465890/sizes/l)，保留一些权利

我认为黑盒机器学习就像我做自动编程一样。自动编程可以为您提供一个解决定义明确的问题的程序，但您不知道该程序是多么丑陋，您可能不想知道。对于程序员来说，这个想法是令人厌恶的，因为一个神奇的黑匣子机器学习系统对于机器学习从业者（数据科学家？）是一种令人厌恶的想法。细节，方法，对大多数问题都很重要。

**UPDATE** ：继续讨论 [reddit](http://www.reddit.com/r/MachineLearning/comments/2483rz/the_seductive_trap_of_blackbox_machine_learning/) 和 [datatau](http://www.datatau.com/item?id=2687) 。