|为了下个项目的质量!每个数据科学家都应该学会这两种工具
全文共3860字 , 预计学习时长10分钟
本文插图
图源:unsplash
使用机器学习模型越久 , 就越能意识到 , 正确了解模型当下的运行目的及效果有多重要 。 在实践中 , 即便是在最佳情况下 , 跟踪模型的运行情况(尤其是在测试各种模型参数组合时)都十分繁琐 。 大多数情况下 , 我都会构建自己的工具来调试和分析机器学习模型 。
最近 , 在为MAFAT的多普勒脉冲雷达分类挑战设计各种模型的时候 , 我发觉自己手动构建模型调试工具就是在浪费时间 , 而搭建集成(组合大多数分类策略的机器学习模型 , 搭对了就会带来极大效用)时尤为繁琐 。
创建集成的问题就是 , 各种模型及分类都需要让策略奏效 。 这就意味着要训练更多的模型、进行更多的分析、了解更多关于整体精度及模型性能的参数 。 同样 , 这就要求我花更多的时间创建自己的调试工具和策略 。
为了更好地利用时间和资源 , 我决定使用一系列可用的在线工具来调试和分析机器学习模型 。 测试了几个工具后 , 我成功缩减了清单:开发或改进机器学习模型时 , 每个数据科学家都应考虑这两个超赞的工具 。
本文插图
Weights & Biases
本文插图
Weights &Biases图表跟踪验证集内各种具有不同参数的模型的性能 。 Y轴表示精度 , X轴表示训练回合数 。
Weights & Biases(W&B)是一家总部位于旧金山的公司 , 提供一系列能无缝融入现有或新项目的深度学习及机器学习工具 。 它主要是跟踪项目中模型变化的实时性能 , 简直太管用了 。
我在做项目时 , 常常就追踪问题手足无措:何时进行了哪些更改?这些更改对项目的各种评估指标是否产生了正面或负面影响?而W&B能用以多种方式存储并可视化这些评估指标 , 其中最有效的就是图表和表格:
本文插图
用W&B工具跟踪和可视化各种指标以进行并排比较的示例
本文插图
模型数据存储在可导出表格中 , 以便在W&B网站上进行排序和评估 。
如你所见 , 折线图表示在训练期间使用不同指标跟踪各种模型的性能 。 这样便能进行无缝并排比较 , 以检查过拟合或检查验证集上表现最佳的模型等 。
W&B如何与项目关联?
在W&B网站上创建账户后 , 必须在本地环境下安装并登录到个人页面 。
!pip install --upgrade wandb !wandb login
深度学习或者机器学习工具不同 , 情况也可能不同 。 我用Keras , 但其它项目的文档会更清晰 , 也易于执行:
#Import the package import wandb from wandb.keras import WandbCallback#Initialize the W&B object wandb.init(project=''tester'')#Link the model with W&B’stracking metrics model.fit(X_train, y_train, validationData=http://news.hoteastday.com/a/(X_test, y_test) epochs=config.epochs, callbacks=[WandbCallback()])model.save(os.path.join(wandb.run.dir,''model.h5''))
训练模型时 , W&B帐户会实时跟踪和更新进度 , 在账户内能轻松分析和评估模型的性能 。 在这里 , 你可以选择创建报告 , 提供更专业、更易理解的结果视图 , 可以在其中覆盖文本和其他视觉效果 。
W&B十分有助于跟踪模型的性能 , 在更改参数并尝试各种技术时更是如此 。 实际上 , 这个说法绝不夸张 。 它确实能帮上大忙:OpenAI和Toyota Research这样的大公司定期使用它 , 称赞它是灵活且有效用的项目工具 。
本文插图
Uber的Manifold
本文插图
图源:unsplash
我正在项目中创建集成 。 一个集成是不同算法的集合 , 每个算法就同一数据进行训练并提供预测 。 集成的优势在于 , 它提供了一系列不同的策略来寻找解决方案 , 并利用多数票使所有模型的分类民主化 。 这很有用 , 因为尽管单个模型可以很好地预测部分数据 , 但它可能会在其他部分不知所措 。
在机器学习中 , “集成就是数字力量” 。 为了让集成表现良好 , 组成集成的各个模型必须能进行多样化预测 。 多样化预测 , 即不能所有模型都对某数据进行一模一样的预测;它们应该能对不同数据进行准确预测 。 然而这也带来了问题:你怎么知道集成进行的是多样化预测呢?看看交通科技巨头Uber的Manifold吧 。
Uber的Manifold是个开源长期项目 , 旨在为机器学习提供调试的可视化工具(模型是什么样子的都无所谓) 。 通俗地讲 , Manifold让你能看见哪个模型在数据子集中表现不佳、哪些特性导致了表现不佳 。
集成能帮大忙 。 它创建了一个Widget输出 , 在Notebook就能交互以进行快速分析 。 注意 , 该工具目前仅在经典的Jupyter Notebook电脑上可用 。 它在Jupyter Lab或Google的Colab上不能运行 。
Manifold使用k均值聚类——一种邻近分组技术 , 将预测数据分为性能相似的片段 。 想象一下 , 这是将数据分成相似的子类 , 然后沿着每个分段绘制模型 , 其中模型越靠左 , 则在该分段上表现越好 。 随机生成的示例中可以看到这一点:
本文插图
上述例子中有三个模型 , 输入数据被分成四段 。 把对数损失(log-loss)作为性能指标 , 可以看到model_1在segment_0上的表现不佳 , 而model_2在segment_2上的表现不佳 。 线的形状表示性能分布 , 线的高度表示对数损失下的相对数据点计数 。 例如 , 在segment_1的model_1上 , 对数损失为1.5 , 点的均值低 , 但十分密集 。
Manifold还提供了功能归因视图:
本文插图
功能归因视图强调每个片段的功能分布 。 在上面的示例中 , 数据组0包含聚类2和3 , 将其与包含聚类0和1的数据组1进行比较 。 x轴是特征值 , 而y轴是原因的强度 。 Feature_0高亮显示这些差异 , 而Feature_1高亮显示特征值的直方图 。
那么 , 如何把Manifold融入项目?
Manifold还处在早期研发阶段 , 还得继续调bug 。 但是 , 这不该妨碍你在项目中使用它 。 就个人情况来说 , 我需要弄几个安装包才能在Jupyter Notebook上运行它 。
!jupyter nbextension install --py --sys-prefix widgetsnbextension !jupyter nbextension enable --py --sys-prefix widgetsnbextension !pip install mlvis !jupyter nbextension install --py --symlink --sys-prefix mlvis !jupyter nbextension enable --py --sys-prefix mlvis
仅仅安装nbextention包是不够的 , 我还必须启用这些软件包 。 可以在这里导入一些demo工具:
from mlvis import Manifold import sys, json, math from random import uniform
要使用Manifold框架 , 数据需要分成三组特定格式 。 第一组是所有必须在字典列表中的x值:
#Example of x-values x = [ {'feature_0': 21, 'feature_1': 'B'}, {'feature_0': 36, 'feature_1': 'A'} ]
第二组是不同的模型预测 , 它必须是列表的列表 , 每个列表都是不同模型的预测:
#Example of model predictions yPred = [ [{'false': 0.1, 'true': 0.9}, {'false':0.8, 'true': 0.2}], [{'false': 0.3, 'true': 0.7}, {'false':0.9, 'true': 0.1}], [{'false': 0.6, 'true': 0.4}, {'false':0.4, 'true': 0.6}] ]
【|为了下个项目的质量!每个数据科学家都应该学会这两种工具】最后一组是ground truth值或实际正确的y值 , 它们在列表值中:
#Example of ground truth yTrue = [ 'true','false' ]
数据一旦采用这种格式 , 值就可以输入到Manifold对象中 , 操作进行Widget , 有些类似于上面的例子:
Manifold(props={'data': { 'x': x, 'yPred': yPred, 'yTrue': yTrue }})
然后使用Manifold就能直观地评估不同模型对相同数据的表现了 。 这对于构建集成非常有帮助 , 因为它使我能够了解哪些模型在哪里执行 , 哪些数据集群是模型最难分类的 。 Manifold同样帮我评估了集成中每个模型的预测多样性 , 使我能构建一个更强大、能分类一系列不同输入数据的设备 。
本文插图
图源:unsplash
对我来说 , 上述两种工具真的是越来越有用了 。 它们可以帮我应对这一挑战并切实改善设备的性能 , 希望读者也能用这些工具来创建更好的模型 。
本文插图
留言点赞关注
我们一起分享AI学习与发展的干货
如转载 , 请后台留言 , 遵守转载规范
推荐阅读
- 七种蔬菜自带“有害物质”,食用前要焯水,为了健康别图省事
- 白云飞|青春榜样|参与大国重器项目!硕博生白云飞和他的万米海试
- 肾病综合征|肾病综合征患者复诊注意事项,关注这3点,自己也能看懂尿常规
- 尼泊尔|授人以鱼,更授人以渔——中国援尼农业项目养鱼记
- 高血脂|聚焦2021CROI大会,发布多项关于日常服药引发血脂问题的研究
- 肾病|为什么肾病一发现就是晚期?
- 灵感便当合集
- 蜗牛|蜗牛养殖方式比较和注意事项,北方宜室内、南方宜室外
- 四川|解码四川科技丨打破国外垄断!这项技术每年救治上万名甲状腺癌患者
- 恒星|一项新研究表明参宿四不会很快爆炸
