晓查 发自 凹非寺 量子位 报道 | 公众号 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
作者系网易新闻·网易号“各有态度”签约作者