作者:韩信子@ShowMeAI

机器学习实战系列https://www.showmeai.tech/tutorials/41

本文地址https://www.showmeai.tech/article-detail/395

声明:版权所有,转载请联系平台与作者并注明出处

收藏ShowMeAI查看更多精彩内容

完整的机器学习应用过程,除了数据处理、建模优化及模型部署,也需要进行后续的效果验证跟踪和ML模型监控——它能保证模型和场景是保持匹配且有优异效果的。

模型上线后,可能会存在效果下降等问题,面临数据漂移等问题。详见ShowMeAI的文章 机器学习数据漂移问题与解决方案

ShowMeAI在这篇文章中,将给大家展示如何使用开源工具库 whylogs 构建详尽的 AI 日志平台并监控 ML 模型。

日志系统&模型监控

环境配置

要构建日志系统并进行模型监控,会使用到开源数据日志库whylogs,它可以用于捕获数据的关键统计属性。安装方式很简单,执行下列 pip 命令即可

pip install "whylogs[whylabs]"

接下来,导入所用的工具库whylogspandasos。我们也创建一份 Dataframe 数据集进行分析。

import whylogs as why
import pandas as pd
import os
# create dataframe with dataset
dataset = pd.read_csv("https://whylabs-public.s3.us-west-2.amazonaws.com/datasets/tour/current.csv")

使用 whylogs 创建的数据配置文件可以单独用于数据验证和数据漂移可视化,简单的示例如下:

import whylogs as why
import pandas as pd #dataframe
df = pd.read_csv("path/to/file.csv")
results = why.log(df)

这里也讲解一下云端环境,即把配置文件写入 WhyLabs Observatory 以执行 ML 监控。

为了向 WhyLabs 写入配置文件,我们将 创建一个帐户(免费)并获取组织 ID、Key和项目 ID,以将它们设置为项目中的环境变量。

# Set WhyLabs access keys
os.environ["WHYLABS_DEFAULT_ORG_ID"] = 'YOURORGID'
os.environ["WHYLABS_API_KEY"] = 'YOURACCESSTOKEN'
os.environ["WHYLABS_DEFAULT_DATASET_ID"] = 'PROJECTID'

新建项目并获取 ID

Create Project > Set up model > Create Project,整个操作过程如下图所示:

获取组织 ID 和访问 Key

菜单 > 设置 > 访问令牌 > 创建访问令牌,如下图所示:

经过这个配置,接下来就可以将数据配置文件写入 WhyLabs。

将配置文件写入 WhyLabs 以进行 ML 监控

设置访问密钥后,可以轻松创建数据集的配置文件并将其写入 WhyLabs。这使我们只需几行代码即可监控输入数据和模型预测!

# initial WhyLabs writer, Create whylogs profile, write profile to WhyLabs
writer = WhyLabsWriter()
profile= why.log(dataset)
writer.write(file=profile.view())

我们可以在 pipeline 管道的任何阶段创建配置文件,也就是说可以对每个步骤的数据进行监控。一旦完成将配置文件写入 WhyLabs,就可以检查、比较和监控数据质量和数据漂移。

上述步骤过后,只需单击一下(或创建自定义监视器)即可启用预配置的监视器,检测数据配置文件中的异常情况。设置常见的监控任务是非常容易的,也可以很清晰快捷地检测数据漂移、数据质量问题和模型性能。

配置监视器后,可以在检查输入功能时对其进行预览。

当检测到异常时,可以通过电子邮件、Slack 或 PagerDuty 发送通知。在设置 > 通知和摘要设置中设置通知首选项。

上述这些简单的步骤,我们已经完成了从 ML 管道中的任何步骤提取数据、构建日志和监控分析,并在发生异常时得到通知。

监控模型性能指标

前面看到了如何监控模型输入和输出数据,我们还可以通过在预测结果来监控性能指标,例如准确度、精确度等。

要记录用于监控的性能指标,可以使用why.log_classification_metricswhy.log_regression_metrics并传入包含模型输出结果的 Dataframe。

results = why.log_classification_metrics(
df,
target_column = "ground_truth",
prediction_column = "cls_output",
score_column="prob_output"
) profile = results.profile()
results.writer("whylabs").write()

注意:确保您的项目在设置中配置为分类或回归模型。

在下面的示例笔记本中查看用于性能监控的数据示例。

大家想获得更多关于监控的示例 notebook 笔记本,可以查看官方 GitHub 关于 分类回归的代码。

参考资料

推荐阅读

whylogs工具库的工业实践!机器学习模型流程与效果监控 ⛵的更多相关文章

  1. 25个Java机器学习工具&库--转载

    本列表总结了25个Java机器学习工具&库: 1. Weka集成了数据挖掘工作的机器学习算法.这些算法可以直接应用于一个数据集上或者你可以自己编写代码来调用.Weka包括一系列的工具,如数据预 ...

  2. 【转】.NET(C#):浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp.Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz.NET的使用(附源码) 整理自己的.net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生

    [转].NET(C#):浅谈程序集清单资源和RESX资源   目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...

  3. java25个Java机器学习工具&库

    本列表总结了25个Java机器学习工具&库: 1. Weka集成了数据挖掘工作的机器学习算法.这些算法可以直接应用于一个数据集上或者你可以自己编写代码来调用.Weka包括一系列的工具,如数据预 ...

  4. 机器学习模型解释工具-Lime

    本篇文章转载于LIME:一种解释机器学习模型的方法 该文章介绍了一种模型对单个样本解释分类结果的方法,区别于对整体测试样本的评价指标准确率.召回率等,Lime为具体某个样本的分类结果做出解释,直观地表 ...

  5. scikit-learn系列之如何存储和导入机器学习模型

    scikit-learn系列之如何存储和导入机器学习模型   如何存储和导入机器学习模型 找到一个准确的机器学习模型,你的项目并没有完成.本文中你将学习如何使用scikit-learn来存储和导入机器 ...

  6. Java第三方工具库/包汇总

    一.科学计算或矩阵运算库 科学计算包: JMathLib是一个用于计算复杂数学表达式并能够图形化显示计算结果的Java开源类库.它是Matlab.Octave.FreeMat.Scilab的一个克隆, ...

  7. 斯坦福经典AI课程CS 221官方笔记来了!机器学习模型、贝叶斯网络等重点速查...

    [导读]斯坦福大学的人工智能课程"CS 221"至今仍然是人工智能学习课程的经典之一.为了方便广大不能亲临现场听讲的同学,课程官方推出了课程笔记CheatSheet,涵盖4大类模型 ...

  8. TensorFlow?PyTorch?Paddle?AI工具库生态之争:ONNX将一统天下

    作者:韩信子@ShowMeAI 深度学习实战系列:https://www.showmeai.tech/tutorials/42 本文地址:https://www.showmeai.tech/artic ...

  9. [转]Android开源项目第二篇——工具库篇

    本文为那些不错的Android开源项目第二篇--开发工具库篇,主要介绍常用的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多 ...

  10. Android开源项目第二篇——工具库篇

    本文为那些不错的Android开源项目第二篇——开发工具库篇,**主要介绍常用的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容 ...

随机推荐

  1. Netty 学习(三):通信协议和编解码

    Netty 学习(三):通信协议和编解码 作者: Grey 原文地址: 博客园:Netty 学习(三):通信协议和编解码 CSDN:Netty 学习(三):通信协议和编解码 无论使用 Netty 还是 ...

  2. 输入法词库解析(一)百度自定义方案.def

    详细代码:https://github.com/cxcn/dtool 前言 .def 是百度手机输入法-更多设置-自定义输入方案所使用的格式. 解析 码表偏移量 0x6D # 占用字节数 描述 a 1 ...

  3. 高性能 Java 计算服务的性能调优实战

    作者:vivo 互联网服务器团队- Chen Dongxing.Li Haoxuan.Chen Jinxia 随着业务的日渐复杂,性能优化俨然成为了每一位技术人的必修课.性能优化从何着手?如何从问题表 ...

  4. Java的线程状态

    在我们平时写code的时候,经常会使用到多线程.其中线程所处的状态就是我们需要进程思考的问题. 线程有哪些状态 NEW: 一个线程刚被创建,但是没有被使用就是处于这个状态 RUNNABLE: 一个线程 ...

  5. 创建Grafana Dashboard

    输入表达式,获取数据 但是考虑到多台主机,需要添加变量来选择不同主机,从而出现相应的图表 点击右上角齿轮一样的图标,这个是设置 通过在prometheus界面查询可知,可以设置的变量有两个 考虑到这俩 ...

  6. 适用于纯64位Linux系统无需multilib运行win32软件的Wine

    链接: https://pan.baidu.com/s/1qbDGz8mI-TtZLOFvEQetbg 提取码: uk6u 食用方法:解包到~ export HOQEMU=$HOME/hangover ...

  7. 云原生下基于K8S声明式GitOps持续部署工具ArgoCD实战-上

    @ 目录 概述 定义 工作原理 主要组件 核心概念 环境准备 概述 安装Kubekey 创建K8S 安装K9S OpenLB 安装ArgoCD 安装 ArgoCD CLI 从Git库中创建一个应用程序 ...

  8. HBase1.4.6安装搭建及shell命令使用

    HBase1.4.6安装搭建 目录 HBase1.4.6安装搭建 一.前期准备(Hadoop,zookeeper,jdk) 搭建Hbase 1.上传解压 2.配置环境变量 3.修改hbase-env. ...

  9. SpringMvc(五) - 支付宝沙箱和关键字过滤,md5加密,SSM项目重要知识点

    1.支付宝沙箱 1.1 jar包 alipay-sdk <!-- alipay-sdk --> <dependency> <groupId>com.alipay.s ...

  10. JavaScript基础&实战(2)js中的强制类型转换、运算符、关系运算符、逻辑运算符、条件运算符

    文章目录 1.强制类型转换Number 1.1 代码 1.2 测试结果 2.进制表示 2.1 代码 2.2 测试结果 3.强制类型转换为Boolea 3.1 代码 3.2 测试结果 4.运算符 4.1 ...