使用 Superwise Compare Distribution 策略(Jensen‑Shannon 散度用于分类列)检测表格机器学习模型中的特征漂移。处理所有...
超智能的 Drift 检测技能是一项面向实际任务的技能,主要用于当用户想要为模型设置漂移检测时, 引导它们通过;下面的步骤按顺序排列;
使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
当用户希望为其模型配置漂移检测时,请按以下顺序引导其完成各步骤。必须完整执行当前步骤后,再进入下一步。
开始前,请用户提前提供以下内容:
SUPERWISE_CLIENT_ID 和 SUPERWISE_SECRET_TOKEN(可在其 Superwise 账户的「设置 → API 密钥」中找到)row_id 列)my_churn_model);该名称将用于在 Superwise 中命名数据集{"records": [{...}, ...]},其中每个 record 包含与训练 CSV 完全一致的列名。examples/dc-bikeshare-drift/app.py 中的 dc-bikeshare 示例作为模板。指导用户适配其自身的 predict.py,然后本地运行 python app.py。本地测试时,请设置 INFERENCE_ENDPOINT_URL=http://localhost:5001/predict。pip install -r requirements.txt
在技能根目录下创建一个 .env 文件,内容如下,并填入用户提供的对应值:
SUPERWISE_CLIENT_ID=<来自用户> SUPERWISE_SECRET_TOKEN=<来自用户> MODEL_NAME=<模型名称> INFERENCE_ENDPOINT_URL=<来自用户对第 4 项问题的回答> SUPERWISE_AUTO_TRIGGER=true SUPERWISE_TRAINING_DATASET_ID= SUPERWISE_TRAINING_DATASET_NAME= SUPERWISE_TRAINING_CUBE_NAME= SUPERWISE_INFERENCE_DATASET_ID= SUPERWISE_INFERENCE_DATASET_NAME= SUPERWISE_INFERENCE_CUBE_NAME= SUPERWISE_DRIFT_POLICY_ID= # 针对各列的独立策略配置 — 每行对应 setup_drift_policy.py 输出的一列: # SUPERWISE_DRIFT_POLICY_ID_<列名>=<策略 ID> SCHEDULE_HOUR_UTC=6 SCHEDULE_MINUTE_UTC=0 PORT=5000
数据集 ID 和策略 ID 字段将在步骤 2 和步骤 3 执行完成后填入。
python setup_dataset.py
--training-csv path/to/training.csv
--model-name their_model_name
该命令将在 Superwise 中创建一个训练数据集和一个推理数据集,逐行上传训练 CSV 文件,并打印出数据集 ID 和 Cube 名称。
请将打印出的值复制到 .env 文件中:
SUPERWISE_TRAINING_DATASET_ID=<打印值> SUPERWISE_TRAINING_DATASET_NAME=<打印值> SUPERWISE_TRAINING_CUBE_NAME=<打印值> SUPERWISE_INFERENCE_DATASET_ID=<打印值> SUPERWISE_INFERENCE_DATASET_NAME=<打印值> SUPERWISE_INFERENCE_CUBE_NAME=<打印值>
注意:训练 CSV 的列名只能包含字母、数字和下划线,且必须以字母开头。若发现任何列名违反此规则,请提醒用户修正。
python setup_drift_policy.py
--training-csv path/to/training.csv
--policy-name their_model_drift
该命令将为训练 CSV 中每一个分类型(字符串/布尔型)列,创建一条 Jensen-Shannon 散度(JSD)策略,用于比对训练数据集与推理数据集。数值型列会被跳过并输出警告 —— 这是当前 Superwise 平台的已知限制(暂不支持对数值型列使用 Wasserstein 距离进行漂移检测)。
请将主策略 ID(即首行打印出的策略 ID)复制到 .env 中:
SUPERWISE_DRIFT_POLICY_ID=<主策略 ID> SUPERWISE_DRIFT_POLICY_ID_=<策略 ID> SUPERWISE_DRIFT_POLICY_ID_ =<策略 ID> # ... 每条由 setup_drift_policy.py 打印出的额外列策略均需单独添加一行
请复制所有打印出的策略行(不仅限于第一行)—— _check_drift() 函数会自动识别并触发所有以 SUPERWISE_DRIFT_POLICY_ID* 开头的环境变量所对应的策略检查。
若用户仅希望监控特定若干列,可在命令中添加参数:--columns col1 col2 col3。
python -c "
import os; os.chdir('.')
from dotenv import load_dotenv; load_dotenv()
from skill import run
result = run()
print(result)
"
该操作将执行以下流程:
INFERENCE_ENDPOINT_URL 获取推理记录注意:一次完整检测耗时约 5–10 分钟(含推理请求、数据写入及全量列策略轮询)。为避免 exec 超时,请在后台或 PTY 会话中运行:
nohup python -c "..." &> drift_check.log &
使用 skill.py 中定义的元数据,在 OpenClaw 中注册该技能:
/drift_check0 6 * * *(每日 UTC 时间 06:00 执行 —— 可根据用户的推理频率调整)如需生产环境部署,请指导用户使用随附的 render.yaml 将 scheduler.py 部署至 Render 平台,并将全部 .env 中的变量配置为 Render 的环境变量。
本技能复用 OpenClaw 已建立的 Telegram 连接,无需单独配置 Bot。技能中 skill.py 内的 _send_telegram() 函数将直接读取用户 OpenClaw 环境下的 TELEGRAM_BOT_TOKEN 和 TELEGRAM_CHAT_ID。若用户尚未在 OpenClaw 中配置 Telegram,请指引其查阅 OpenClaw 官方 Telegram 配置文档。
漂移告警格式如下:
examples/dc-bikeshare-drift/ 是一个完整的可运行示例,用户可在接入自身模型前,先运行该示例验证整套技能流程是否正常工作:
cd examples/dc-bikeshare-drift pip install -r requirements.txt python collect_training_data.py # 获取真实站点数据,生成模拟历史数据 python train.py # 训练 RandomForest 分类器 python app.py # 启动本地 Flask 推理服务(端口 5001)
随后,在技能根目录下执行漂移检测,并指定:
INFERENCE_ENDPOINT_URL=http://localhost:5001/predict
该示例仅使用分类型特征(站点规模、是否配备电助力自行车、小时、日期类型、季节)来预测单车可用性 —— 所有特征均适用于 JSD 漂移检测。
当用户对其模型进行重训练时,请执行:
python setup_dataset.py
--training-csv path/to/new_training.csv
--model-name their_model_name
--retrain
该命令将创建一个带版本号的新训练数据集,同时保留原有推理数据历史。请更新 .env 中的训练数据集 ID 和 Cube 名称,然后重新运行 setup_drift_policy.py,以生成指向新基线数据集的漂移策略。
pending:请确认推理记录已在触发策略前成功写入推理数据集。若推理数据集为空,策略无法启动评估。unhealthy:若推理记录仅为单一时段快照(如全部记录均属同一小时/同一天/同一季节),该现象属预期行为。建议积累更长时间跨度的推理记录,以构建更具代表性的分布。nohup python -c "from skill import run; run()" &> drift_check.log &,随后通过 tail -f drift_check.log 实时跟踪执行进度。相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章