前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >上传三组表格即可分析AI模型,可视化工具Manifold开源,来自Uber华人女工程师

上传三组表格即可分析AI模型,可视化工具Manifold开源,来自Uber华人女工程师

作者头像
量子位
发布2020-02-12 13:53:02
8420
发布2020-02-12 13:53:02
举报
文章被收录于专栏:量子位量子位
晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI

调试机器学习模型是最痛苦的,因为算法本身不透明,就算运行结果不好,有时你也很难知道问题出在哪里。

了解ML模型的性能和行为是一个不容易的过程。性能摘要统计信息(输出的数据,比如AUC、均方误差等等,对指导我们如何改进模型是远远不够的。

AI平台TensorFlow已经有了可视化工具Tensorboard,但是如果你用的不是TensorFlow怎么办?

最近,Uber也推出了一款ML可视化调试工具Manifold(流形),可以帮助开发者发现让模型不能准确预测的数据子集,通过不同子集之间的特征分布差异来解释模型性能不佳的可能原因。

Manifold的作者之一还是个华人女工程师李乐之,她本科毕业于南京大学,之后进入哈佛大学攻读硕士,毕业后进入Uber工作至今。

她在官方博客中表示,Maniflod可以为机器学习工作流程提供可解释性和可调试性。

2种视图,4大特点

Manifold为用户提供两大功能:性能比较视图特征分布视图

性能比较视图生成的结果如下:

X轴是模型的性能指标,一般是对数损失、平方误差或原始预测值。图片会根据实例之间跨模型的性能相似性,将数据集自动分为多个横行。而不同的颜色代表不同的模型。

特征分布视图可以显示按用户定义的数据特征值划分。它可以帮助用户识别可能与不正确的预测输出相关的任何输入特征分布。

其中,X轴是数据的特征值,Y轴是数据的分布密度,每个图左下角的标注是分散度分数,用户衡量数据切片之间分布差异。

Manifold主要有4大特点:

1、支持与模型无关的通用二元分类与回归模型调试。

用户将能够分析和比较各种算法类型的模型,分辨各种数据切片的性能差异。

2、支持表格化特征输入的可视化:包括数字、分类和地理空间等特征类型。

使用每个数据切片的特征值分布信息,用户可以更好地了解某些性能问题的潜在原因,例如,模型的预测损失与其数据点的地理位置和分布之间是否存在任何关联。

3、与Jupyter Notebook集成。

通过这种集成,Manifold将数据输入作为Pandas DataFrame对象接受,并在Jupyter中呈现可视化。

Jupyter Notebook是数据科学家和机器学习工程师使用最常用的平台之一,集成该功能可以让用户在不中断正常工作流程的情况下分析模型。

4、基于每个实例的预测损失和其他特征值的交互数据切片和性能比较。

用户将能够基于预测损失、真实值或其他感兴趣的特征对数据进行切片和查询。该功能使用户能够通过通用数据切片逻辑快速验证或拒绝其假设。

安装

对于JavaScript用户:

代码语言:javascript
复制
npm install @mlvis/manifold styled-components styletron-engine-atomic styletron-react

对于Python用户:

代码语言:javascript
复制
pip install mlvis

然后安装和启用Jupyter Notebook扩展

代码语言:javascript
复制
jupyter nbextension install --py --symlink --sys-prefix mlvis
jupyter nbextension enable --py --sys-prefix mlvis

除了在本地安装外,还有Demo网站可供尝试:

http://manifold.mlvis.io/

使用方法

Uber提供两种方式使用Manifold,一种是直接上传已有的模型数据到Demo网站。

在Demo网站上,我们可以看到三个上传项,它们分别是输入的“特征”、输出的“预测”以及“真实值”,分别对应于x、yPred、yTure,三个部分都以csv文件格式上传。

上传完成,即可看到由这些数据集生成的可视化效果。

另一种方式就是在自己程序中使用Manifold组件,需要先将数据转换成Manifold可以读懂的格式再导入:

代码语言:javascript
复制
import {loadLocalData} from '@mlvis/manifold/actions';

// create the following action and pass to dispatch
loadLocalData({
  fileList,
  dataTransformer,
});
代码语言:javascript
复制
const defaultDataTransformer = fileList => ({
  x:     [...],         // feature data
  yPred: [[...], ...]   // prediction data
  yTrue: [...],         // ground truth data
};

传送门

官方博客: https://eng.uber.com/manifold-open-source/

开源地址: https://github.com/uber/manifold#load-and-convert-data

作者系网易新闻·网易号“各有态度”签约作者

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

本文分享自 量子位 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2种视图,4大特点
  • 安装
  • 使用方法
  • 传送门
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档