前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >打造自动化数据科学家:新的分类和预测函数

打造自动化数据科学家:新的分类和预测函数

作者头像
WolframChina
发布2018-05-31 15:01:36
4552
发布2018-05-31 15:01:36
举报
文章被收录于专栏:WOLFRAMWOLFRAM

█ 本文译自高级研究团队首席架构师 Etienne Bernard 于2017年10月10日的博客文章: Building the Automated Data Scientist : The New Classify and Predict

自动化数据科学

想象一下,面包师将数据科学应用程序连接到他的数据库,并问:"我们下周日要卖出多少个羊角面包?" 应用程序将简单地回答:"根据您记录的数据和其他因素,如天气预报,有90%的机会,会卖出62到67个羊角面包。" 面包师可以相应地进行规划。这就是一个自动化数据科学家的例子,它其实是一个系统,你可以对其抛出任意数据并获得分析或预测。

将此变为现实的一个关键因素是学习预测模型的能力,而人类除了数据之外无需给出任何规范。在 Wolfram 语言中,函数 ClassifyPredict 就起着这样的作用。例如,让我们训练一个分类器,从美味齿菌(Hedgehog)中识别羊肚菌(Morel):

现在我们可以将得到的 ClassifierFunction 用于新的例子:

我们可以获得每种可能性的概率:

再举一个例子,我们来训练一个预测函数 PredictorFunction 来预测美国一些城市的月平均气温(https://datarepository.wolframcloud.com/resources/Sample-Data-US-City-Temperature):

同样,我们可以使用得到的函数进行预测:

我们可以获得预测的分布:

正如你所看到的,我们不需要告诉 Classify Predict 变量是什么,要执行什么预处理或使用哪种算法,它们是自动化的函数。

Classify 和 Predict 的全新功能

Classify Predict 是大概三年前我们在 Wolfram 语言第10版引入的,并且欣慰地看到它在各种环境中得以使用(我个人最喜欢的是跟宇航员、飞机和 Raspberry Pi 相关,详见 http://community.wolfram.com/groups/-/m/t/1179035)。在版本11.2中, 我们给两个函数做了完整的改造。最明显的更新是引入了一个信息面板,以便在训练期间得到反馈:

有了这个面板,我们可以监控当前最好的方法及当前的准确性,并且可以了解训练将持续多长时间——这在决定是否值得继续时非常有用! 如果要停止训练,有两种方式:可以通过"停止"按钮或直接中止运算来实现。在这两种情况下,Classify 和 Predict 到此前为止的最佳模式被返回(但是"停止" 中断更柔和:它等到当前训练结束时停止)。

在分类器或预测器上使用 ClassifierInformation PredictorInformation 时,将显示一个类似的面板:

我们尝试显示关于模型的有用信息,例如在测试集上的准确性、运算新示例所需时间及内存大小等。更重要的是,您可以在底部看到一条"学习曲线",显示作为用于训练的示例数的函数的损失值(一个尝试最小化的度量)。通过按左/右箭头,还可以查看其他曲线,例如作为训练样本数量的函数的准确度:

这类曲线有助于弄清楚是否需要更多的数据进行训练(例如当曲线趋于平稳时)。我们希望对这些曲线的轻松访问可以简化建模工作流程(例如,可能减少使用 ClassifierMeasurements PredictorMeasurements 的需要)。

一项重要更新是 TimeGoal 选项的添加,它允许人们指定训练需要多长时间,例如:

TimeGoal 的含义与 TimeConstraint 不同:它不是指定一个最大的时间量,而是一个实际上应该达到的目标。设置更高的时间目标 TimeGoal 可以让自动化系统尝试更多其他的东西,以便找到更好的模型。 我认为这将使得 TimeGoal 成为 Classify Predict 最重要的选项(紧随其后是 Method PerformanceGoal 选项)。

在方法方面,也发生了一些变化。每个方法都有自己的文档页面("LogisticRegression""NearestNeighbors" 等),它提供了通用信息,并允许高手使用各种介绍的选项。我们还添加了 两个新方法:"DecisionTree""GradientBoostedTrees",这是数据科学家的最爱。这是一个简单的预测实例:

主要更新

现在我们来看看版本11.2的主要更新,它不是直接可见的:我们重新实现了Classify Predict 确定最优方法和超参数的方式,对给定的数据集(在某种意义上,这是自动化的核心)。 对于有兴趣的朋友,我在这里简单解释下这个过程如何适用于 Classify

训练分类器需要使用某个方法(如"LogisticRegression""RandomForest"等),并且每个方法需要给出一些超参数(如 "L2Regularization""NeighborsNumber")。自动化过程根据分类器(按配置进行训练)在测试集上的执行效果,以及分类器的内存有多快或多小,选出待用的最佳配置(即最佳方法+超参数)。在没有实际训练和测试的情况下,很难判断给定的配置是否表现良好。我们的程序思想是从多个我们认为可以表现良好的配置(比方说100个)开始,在小数据集上训练这些配置,并使用在这些"实验"中收集的信息,预测配置在完整数据集上的表现。预测并不完美,但它们有助于选出一组有前途的配置,在更大的数据集上训练,从而收集更多信息(您可能会注意到这与 Hyperband 过程有一些相似)。这个操作不断重复,直到只有几个配置(有时甚至只有一个)在完整的数据集被训练。这是执行此操作的某些配置(每条曲线表示一个不同的配置)的损失函数的可视化:

正如你所看到的,许多配置在10和40个例子上进行了训练,其中只有几个在200个例子上训练,只有一个在800个例子上训练。我们发现,在基准中最终的配置通常是最佳的 (在初始配置集中存在的那些)。此外,由于对较小数据集的训练更快,所以整个过程所需的时间并不比在完整数据集上训练一个配置所需的时间长很多, 可以想象,这比在完整数据集上训练所有配置要快得多!

这种自动化策略除了比以前的版本快之外,也是前面所提到的一些新功能所必要的。例如,该过程直接生成模型性能和学习曲线的估计。此外,它还可以显示进度条,并快速生成有效的模型,一旦按下停止按钮即可返回。最后,它可以根据可用时间量调整中间训练的次数,从而使得引入 TimeGoal 选项成为可能。

欢迎您使用新版本的 Classify Predict,并将使用过程中的心得和建议反馈给我们。通向完全自动化的数据科学家之路还很漫长,但我们离目标越来越近了!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-11-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WOLFRAM 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • █ 本文译自高级研究团队首席架构师 Etienne Bernard 于2017年10月10日的博客文章: Building the Automated Data Scientist : The New Classify and Predict
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档