首页 » 网站推广 » 聚类算法php技巧_Uber 开源 AI 可视化调试对象 Manifold2 个工作流让计算机能提升百倍

聚类算法php技巧_Uber 开源 AI 可视化调试对象 Manifold2 个工作流让计算机能提升百倍

访客 2024-12-12 0

扫一扫用手机浏览

文章目录 [+]

官方表示,大多数开拓者常日会将 20% 的精力放在构建初始的事情模型上,而将 80% 的精力用来提高模型性能,即机器学习模型开拓 20/80 分配法则,这也表示出调试机器学习模型的困难。
因此,为了让开发者能够更好的利用 Manifold 带来的高效率,日前 Uber 宣告,他们将 Manifold 作为开源项目发布。

Manifold 开拓背景

传统上,数据科学家在开拓模型时,他们利用汇总分数,例如:对数丢失、曲线下面积(AUC)和均匀绝对偏差(MAE)来评估每个候选模型。
只管这些指标供应了有关模型实行情形的直不雅观数据,但它们并未传达有关模型实行不佳的缘故原由以及如何改进模型性能的大量信息。
因而,模型构建者方向于依赖反复试验和偏差来决定如何改进模型。

聚类算法php技巧_Uber 开源 AI 可视化调试对象 Manifold2 个工作流让计算机能提升百倍

对数丢失:

聚类算法php技巧_Uber 开源 AI 可视化调试对象 Manifold2 个工作流让计算机能提升百倍
(图片来自网络侵删)

http://wiki.fast.ai/index.php/Log_Loss

曲线下面积:

https://stats.stackexchange.com/questions/132777/what-does-auc-stand-for-and-what-is-it

均匀绝对偏差:

https://en.wikipedia.org/wiki/Mean_absolute_error

为了让模型迭代过程更加可操作,并能够供应更多的信息,Manifold 应运而生,它是一个用于机器学习性能诊断和模型调试的可视化工具。
Manifold 是一个独立的 Web 工具和 Python 包,它有 3 个紧张上风:

模型无关性;

模型性能评估的可视化剖析,超越了模型性能汇总统计,以此来提高准确性;

将可视化剖析系统和标准模型演习打算分开的能力,帮助更快和更灵巧进行模型开拓;

来源:Uber

Manifold 利用可视化剖析技能让机器学习开拓者能够超越总体指标检测模型无法精准预测的数据子集;它还通过揭示性能表现较好和较差数据子集之间的特色分布差异,来解释模型性能表现不佳的潜在缘故原由。

此外,它还可以显示对付每一个数据子集,一些候选模型将有若何的预测准确性差异,从而为一些高等处理(如模型集成)供应数据根据。

可视化设计

随着机器学习越来越成为干系业务不可分割的部分,供应使模型更透明且易于理解工具就显得更加主要,这一工具可以使得开拓者能自傲自若地利用机器学习天生的预测。
但考虑到机器学习模型实质上是不透明的繁芜性,则须要通过新兴的机器学习可视化来办理这个问题。

以前的机器学习可视化方法常日包括:直接可视化内部构造或模型参数和受底层算法约束的设计,但这可能导致无法扩展到可以处理更大范围内的通用用例。

来源:Uber

为了应对这个寻衅,Manifold 在设计之初则考虑到了机器学习模型做事,并从分类和回归模型开始入手;这也使得该工具可以通过揭示数据子集之间的特色分布差异为机器学习模型开拓黑盒供应更高的透明度。

同时,借助 Manifold 的设计,开拓者也颠覆了传统机器学习模型的可视化,无需检讨模型,而是直接通过以下办法检讨各个数据点:

识别影响模型性能的数据段,以及这些数据如何影响模型的性能;

评估这些数据段的聚合特色,以便识别某些模型行为背后的缘故原由。

事情流设计

Manifold 界面包括两个部分,分别是性能比较视图和特色属性视图。
个中,性能比较视图,由带有小提琴编码的多路图组成,用于比较模型和数据段之间的性能;

Manifold 性能比较视图的可视编码由 x 轴和 y 轴以及颜色组成,x 轴表示用户选定的性能指标,而 y 轴表示数据段,颜色表示模型。
曲线高度显示了在每个数据段上每个模型的性能分布 来源:Uber

而特色属性视图,由两套特色分布直方图构成,用于比较两个选天命据段的特色。

特色属性视图的可视编码包含 x 轴(特色值范围)和 y 轴(数据点的个数)以及颜色(数据段组)。
根据两个数据段组的分布差异对特色进行排序 来源:Uber

Manifold 通过以下三个步骤帮助用户创造模型须要改进的区域:

比较 首先,给定一个具有一个或多个机器学习模型输出的数据集,Manifold 比较并突出显示模型或数据子集之间的性能差异。

切片 该步骤许可用户根据模型性能选择感兴趣的数据子集以便进行进一步的检讨。

属性 然后,Manifold 突出显示所选数据子集之间的特色分布差异,帮助用户找到性能结果背后的缘故原由。

该可视化原型显示了数据空间中的模型性能,根据其性能(x 轴)和个中一个特色的值(y 轴)定位每个数据点 来源:Uber

开拓者希望通过可视化原型显示了数据空间中的模型性能,根据其性能(x 轴)和个中一个特色的值(y 轴)定位每个数据点,但该方法存在 3 个紧张寻衅:

由于有太多的点,无法清楚地识别模式;须要通过抽离或减少点来揭示模式;

难以确定哪些特色对付 y 轴最有代价,以便识别出干系模式;

随着模型数量的增加,不同模型之间的比较变得更难;

为了提前办理这些问题,开拓者实现了一些聚合 / 简化操作;即:不单独表示每个数据点,而是把它们组成子集。
在开拓中,无需利用 y 轴来编码特定特色的值,而是利用了表示不同数据子集的分类轴。
该方法演化成了终极的性能图表,并具有两个显著的优点:

基本相似的数据点不会重复涌如今图表上,只突出显示最紧张的高层差异;

由于减少了图表中各种形状的数量,以是可以在同一图表中绘制不同的模型,以更好地加以比较;

而在工具的「性能比较」视图中显示模式的关键,在于把测试数据集分成子集。
在 Manifold 中,子集是基于一个或多个性能列的聚类算法自动天生的,于每个模型,具有相似性能的数据被分到同一个组中(由于该算法确保模型 X 的性能对付子集 Y 中不同的数据点是同等的)。
下图则解释了这个过程:

所有的数据点网络自每个模型,根据实际情形评估后给出性能度量 来源:Uber

左侧:性能指标作为在 Manifold 中运行的聚类算法的输入。
右侧:用户可以调度集群参数来探索数据集中的模式 来源:Uber

Manifold 的架构

由于天生 Manifold 可视化涉及一些密集的数值打算(聚类、KL 发散),打算性能不敷会拖慢用户界面的渲染,影响到全体用户体验。
因此,Manifold 利用了 Python 并利用其 DataFrame 处理和机器学习库(如 Pandas 和 Scikit-Learn)实现所有重量级的打算。

Pandas:

https://pandas.pydata.org/

Scikit-Learn:

https://scikit-learn.org/stable/

但由于依赖 Python 后端会降落了 Manifold 的灵巧性,难以实现组件化,这也成了在将 Manifold 和企业机器学习生态系统集成时的一个缺陷。
因此,除了 Python 打算外,Manifold 用 GPU 加速器添加了第 2 个用户事情流,该 GPU 加速器是用更加灵巧的 JavaScript 编写而得。
下图展示了两个事情流如何与 Manifold 集成的过程:

Manifold 由 3 个不同的部分组成:数据源、后端和前端 来源:Uber

用户可通过 2 种办法利用 Manifold,即:通过 Python 包或 npm 包(通过网页)。
由于代码可重用性和模块化对两个事情流的共存至关主要,因此,Python 和 JavaScript 代码库也被组织成了 3 个不同的功能模块:

数据转换器,一种将来自其他内部做事(如 Michelangelo)的数据格式转换为 Manifold 内部数据表示格式的功能;

打算引擎,一种卖力运行聚类和其他数据密集打算的功能;

前端组件,Manifold 可视化剖析系统(其 Python 包利用了 JavaScript 前端组件的内置版本)的用户界面。

与 Python 比较,处理数据密集打算对 JavaScript 打算引擎来说是个寻衅。
为了让开发者看到故意义的模式,须要大约打算 1 万个数据记录(「行」)。
除了其他操作,KL 发散的聚类和打算须要在前端进行,这可能会造成速率瓶颈。
根据测试结果,开拓者在更新性能比较视图中的簇数量时,利用纯 JavaScript 实现的打算可能须要 10 多秒韶光。

因此,我们把 TensorFlow.js 作为线性代数实用库来实现我们的 k 均值聚类和 KL 发散打算。
由于这种类型的打算可以被矢量化,从而可以利用 WebGL 加速,以是更新同样数量的簇的任务可以在不到 1 秒的韶光里完成,超过原来性能的 100 倍。

通过组件化并将其包含在 npm 包中,Manifold 具有更好的灵巧性,既可以用作独立做事,也可以集成到其他机器学习系统(如 Michelangelo)中。

由于大多数用于机器学习的可视化工具须要额外的打算处理,超过了模型演习后端具备的打算处理能力,以是在把它们与其它机器学习系统集成在一起可能很繁芜且不可扩展。
Manifold 针对这种情形提出理解决方案,通过在可视化剖析系统等分开处理演习模型所需的打算,可以进行更快的迭代,并得到了更简洁直不雅观的数据接口。

Manifold 特性与更新

在 Manifold 的第一个开源版本中,Uber 添加了各种特性,使模型调试比内部迭代更随意马虎。
版本 1 的特性包括:

通用二进制分类和回归模型调试的模型无关性支持。
开拓者将能够剖析并比较各种算法类型的模型,使他们能够辨别不同数据切片的性能差异。

对表格特色输入的可视化支持,包括数字、种别和地理空间特色类型。
利用每个数据切片的特色值分布信息,用户可以更好地理解某些性能问题的潜在缘故原由,例如,模型的预测丢失与其数据点的地理位置和分布之间是否存在干系性。

Manifold 新的升级包括对地理空间特色的可视化支持 来源:Uber

与 Jupyter Notebook 集成。
Manifold 接管作为 Pandas DataFrame 工具的数据输入,并在 Jupyter 中呈现该数据的可视化效果。
由于 Jupyter Notebook 是数据科学家和机器学习工程师利用最广泛的数据科学平台之一,因此这种集成让用户得以能够在不中断正常事情流的情形下剖析他们的模型。

Manifold 的 Jupyter Notebook 集成接管作为 Pandas DataFrame 工具的数据输入,并在 Jupyter Notebook UI 中呈现可视化效果 来源:Uber

基于每个实例预测丢失和其他特色值的交互式数据切片和性能比较。
用户将能够根据预测丢失、基准原形(Ground Truth)或其他感兴趣的特色对数据进行切片和查询。
这个特性将利用户能够通过通用的数据切片逻辑快速验证或谢绝其假设。

目前,Manifold 的开源版本供应了 npm 软件包版本,而对付 Jupyter Notebook 的绑定,则供应了一个 Python 包版本。
要开始利用 Manifold,请按照 GitHub Repo 中的文档进行操作并在本地安装,或者查看 Uber 的演示网站。

原文地址:

https://eng.uber.com/manifold-open-source/

Manifold 详细先容:

https://eng.uber.com/manifold/

Manifold 论文地址:

https://arxiv.org/pdf/1808.00196.pdf

雷锋网 AI 开拓者 雷锋网

标签:

相关文章