Evidently AI - 監測模型準確度與資料偏移

Install

For Python and Colab

pip install evidently

For Jupyterlab

$ jupyter nbextension install --sys-prefix --symlink --overwrite --py evidently
$ jupyter nbextension enable evidently --py --sys-prefix

Quick Example

下面用四個小部分來快速演示一下這個套件能做到什麼樣的效果

Import Dataset and Packages

import pandas as pd

from sklearn import datasets

from evidently.test_suite import TestSuite
from evidently.test_preset import DataStabilityTestPreset

from evidently.report import Report
from evidently.metric_preset import DataDriftPreset

iris_data = datasets.load_iris(as_frame='auto')
iris_frame = iris_data.frame

Run Test and Get Report

這裡快速比較data中前60筆和後60筆的分佈有沒有差很多,預設的column名稱會需要id, datetime, target, prediction,如果要改成不同的column名稱就得在column_mapping的地方帶入相對應的dictionary

data_drift_report = Report(metrics=[
    DataDriftPreset(),
])

data_drift_report.run(current_data=iris_frame.iloc[:60], reference_data=iris_frame.iloc[60:], column_mapping=None)
data_drift_report

Report的話在Jupyterlab會以互動的形式呈現,裡面可以選擇各種不同的preset來觀察資料或是模型

Save Reports to Other Format

可以把檔案存成HTML以方便不是用Jupyterlab或是colab開發的用戶做觀看,如果未來要用其他隻程式讀取的話也可以存成JSON檔

data_drift_report.save_html('report.html')
data_drift_report.save_json('report.json')

Features

目前提供的report preset大致分為底下幾種

Data Quality

data_stability= TestSuite(tests=[
    DataStabilityTestPreset(),
])
data_stability.run(current_data=iris_frame.iloc[:60], reference_data=iris_frame.iloc[60:], column_mapping=None)
data_stability

Data & Target Drift

如果資料在不同代之間的差異過大表示模型的準確度很可能會不夠可靠

Regression Model Quality

可以透過report來確認regression模型的準確度並查出不準的原因

reg_performance_report = Report(metrics=[
    RegressionPreset(),
])
reg_performance_report.run(reference_data=ref, current_data=bcur)
reg_performance_report

有給reference_data的話報告會產生十幾種的圖表,底下介紹一些我個人在實際ML Project中比較常會用到的

Real and Prediction Plot

這種圖有分成by datetime的與沒有by datetime,沒有by datetime的圖就是scatter plot

如果沒有by datetime就會產生by index的,通常by index的圖會比較看不出關係

還有一種是可以透過個別feature去檢查預測的結果

Residual Plot

這種圖只有by datetime的

也有percentage版

Error Distribution

Summary

最大的好處在於使用非常少的code就能夠去觀察資料以及衡量資料、模型的穩定性,算是一個在ML專案前期以及上線後都會需要的套件

目前資料的檢測還不包含outlier的detection,算是一個小小美中不足的地方,如果未來補齊了就能快速觀察每套到手上的資料

Reference

What is Evidently? - Evidently Documentation

Evidently AI - Open-Source Machine Learning Monitoring