whylogs简介
whylogs是一个开源的数据日志库,旨在为任何类型的数据提供标准化的日志记录方法。它允许用户生成数据集的统计摘要(称为whylogs profiles),这些profiles可以用于:
- 跟踪数据集的变化
- 创建数据约束条件,以验证数据是否符合预期
- 快速可视化数据集的关键统计信息
这些功能为数据科学家、机器学习工程师和数据工程师提供了多种用例:
- 检测模型输入特征的数据漂移
- 检测训练-服务偏差、概念漂移和模型性能下降
- 验证模型输入或数据管道中的数据质量
- 对大型数据集进行探索性数据分析
- 跟踪ML实验的数据分布和数据质量
- 实现跨组织的数据审计和治理
- 标准化跨组织的数据文档实践
whylogs profiles
whylogs profiles是whylogs库的核心。它们捕获数据的关键统计属性,如分布(远超简单的均值、中位数和标准差度量)、缺失值数量以及广泛的可配置自定义指标。通过捕获这些统计摘要,我们能够准确地表示数据并实现前述的所有用例。
whylogs profiles具有三个理想的数据日志记录属性:
-
高效: whylogs profiles高效地描述它们所代表的数据集。这种高保真度的数据集表示使得whylogs profiles成为数据的有效快照。
-
可定制: whylogs profiles收集的统计信息易于配置和定制。这很有用,因为不同的数据类型和用例需要不同的指标,而whylogs用户需要能够轻松为这些指标定义自定义跟踪器。
-
可合并: whylogs profiles最强大的特性之一是它们的可合并性。这意味着whylogs profiles可以组合在一起,形成新的profiles,代表其组成profiles的集合。这使得分布式和流式系统的日志记录成为可能,并允许用户查看任何时间粒度的聚合数据。
使用whylogs
安装whylogs后,在Python和Java环境中都可以轻松生成profiles。以下是在Python中从Pandas数据框生成profile的简单示例:
import whylogs as why
import pandas as pd
# 数据框
df = pd.read_csv("path/to/file.csv")
results = why.log(df)
生成whylogs profiles后,您可以:
- 在本地Python环境中设置数据约束或可视化profiles
- 将profiles发送到WhyLabs平台进行监控和可观察性分析
数据约束
whylogs profiles的一个强大功能是数据约束,它使您能够快速轻松地验证数据是否符合预期。您可以在数据上设置多种类型的约束(例如数值数据始终在特定范围内,文本数据始终采用JSON格式等)。如果数据集不满足约束条件,您可以使单元测试或CI/CD管道失败。
Profile可视化
除了自动获得潜在数据问题的通知外,手动检查数据也很有用。使用profile可视化器,您可以直接在Jupyter notebook环境中生成有关profiles的交互式报告(单个profile或比较多个profiles)。这支持探索性数据分析、数据漂移检测和数据可观察性。
支持的数据类型
whylogs支持结构化和非结构化数据,具体包括:
- 表格数据
- 图像数据
- 文本数据
- 嵌入向量
- 其他数据类型(可根据需求扩展)
集成
whylogs可以无缝地与数据和ML管道中的不同工具交互。目前已经构建了与以下工具的集成:
- AWS S3
- Apache Airflow
- Apache Spark
- MLflow
- GCS
等等。
通过whylogs,用户可以全面监控和分析他们的数据和机器学习模型,确保数据质量,检测异常,并优化模型性能。它为现代数据科学和机器学习工作流程提供了必不可少的工具。