ClassifierDriftMonitor

Classifier Drift Monitor

Liquid Biopsy жидкостная биопсия cfDNA ctDNA CTC exosomes NGS qPCR
Открыть подборку

Описание утилиты: Classifier Drift Monitor

Classifier Drift Monitor — Мониторинг дрейфа ML-классификаторов

ℹ️  Утилита выполняет непрерывный мониторинг стабильности ML-моделей в продакшене согласно требованиям FDA SaMD, EU AI Act и GMLP:
     • PSI (Population Stability Index): Количественная оценка изменения распределения входных признаков и выходных предсказаний относительно базовой линии.
     • KLD (Kullback-Leibler Divergence): Измерение информационного расстояния между текущим и эталонным распределениями.
     • Mean Shift: Детекция систематического сдвига в предсказаниях модели.
     • Градуированные алерты: Разделение на STABLE / WARNING / DRIFT_DETECTED для пропорционального реагирования.

⚠️  ВАЖНО: 
     • Дрейф модели часто происходит незаметно и накапливается постепенно.
     • Отсутствие мониторинга может привести к массовым ошибочным диагнозам до обнаружения проблемы.

Использование:
  ClassifierDriftMonitor.exe                            → демо-режим (вывод в консоль)
  ClassifierDriftMonitor.exe input.csv output.json      → оценка ваших данных

Формат input.csv:
ModelName,ModelVersion,MonitoringWindow,PSI_Feature_Avg,PSI_Prediction,Max_PSI_Threshold,Warning_PSI_Threshold,KLD_Score,Max_KLD_Threshold,Prediction_Mean_Shift,Max_Mean_Shift,SampleSize_Current,Min_SampleSize,Baseline_Accuracy,Current_Proxy_Accuracy

Пример:
  OncoClass,v3.2,W22,0.03,0.05,0.2,0.1,0.02,0.1,0.01,0.05,450,100,0.94,0.93

📍 Область применения (Usage Where):
     • Клинические ML-системы: Непрерывный постмаркетинговый надзор за моделями.
     • Регуляторный комплаенс: Документирование стабильности SaMD для FDA/EMA.
     • MLOps: Автоматический триггер для пайплайна переобучения.
     • Аудит AI: Подтверждение соответствия EU AI Act требованиям к high-risk AI systems.

— ЗАЧЕМ ЭТО НУЖНО?
ML-модели валидируются на исторических данных, но реальная популяция пациентов меняется.
Изменения в оборудовании, протоколах сбора данных или демографии вызывают дрейф.
Без систематического мониторинга деградация модели обнаруживается только после вреда пациентам.
Автоматизированный мониторинг обеспечивает проактивное управление жизненным циклом AI.

⚠️  КРИТИЧЕСКИ ВАЖНО:
• PSI Thresholds: 0.1 = warning, 0.2 = action (стандарт индустрии).
• Sample Size: Метрики дрейфа ненадежны при малых выборках (<100).
• Feature vs Prediction Drift: Дрейф признаков может предшествовать дрейфу предсказаний.
• Ground Truth: При отсутствии разметки используйте proxy-метрики для косвенной оценки.

Ключевые особенности утилиты:
• Мульти-метрическая оценка дрейфа (PSI + KLD + Mean Shift)
• Трехуровневая система алертов
• Поддержка мониторинга без ground truth
• Генерация отчетов для регуляторных органов
• Соответствие GMLP Principle 6 (Continuous Monitoring)

Критические параметры:
• PSI Features: < 0.1 (stable), 0.1-0.2 (warning), > 0.2 (drift)
• PSI Predictions: < 0.2
• KLD Score: < Threshold
• Mean Shift: Within tolerance
• Sample Size: ≥ Minimum

💡 Советы по использованию:
1. Базовая линия: Используйте валидационную выборку как эталон, а не тренировочную.
2. Окно мониторинга: Выбирайте размер окна балансированно (не слишком мало для шума, не слишком велико для задержки).
3. Послойный анализ: Анализируйте дрейф отдельно по подгруппам (возраст, пол, тип образца).
4. Автоматизация: Интегрируйте с CI/CD для автоматического запуска переобучения.
5. Документирование: Ведите журнал всех алертов и принятых действий.

⚠️ Примечание: Данная утилита является инструментом постмаркетингового надзора за ML-моделями. Она не заменяет периодическую полную ревалидацию, но обеспечивает своевременное обнаружение необходимости такой ревалидации.

input.csv

ModelName,ModelVersion,MonitoringWindow,PSI_Feature_Avg,PSI_Prediction,Max_PSI_Threshold,Warning_PSI_Threshold,KLD_Score,Max_KLD_Threshold,Prediction_Mean_Shift,Max_Mean_Shift,SampleSize_Current,Min_SampleSize,Baseline_Accuracy,Current_Proxy_Accuracy
OncoClassify_v3,v3.2.1,2026-W22,0.03,0.05,0.2,0.1,0.02,0.1,0.01,0.05,450,100,0.94,0.93
MCED_TissueOrigin_v2,v2.1.0,2026-W23,0.25,0.35,0.2,0.1,0.18,0.1,-0.12,0.05,380,100,0.89,0.76
VariantPathogenicity_v1,v1.4.2,2026-W23,0.08,0.06,0.2,0.1,0.04,0.1,0.02,0.05,520,100,0.91,0.90

URS & FS — спецификация пользователя и функциональная спецификация

Документ описывает контролируемый интерфейс и поведение утилиты ClassifierDriftMonitor для сценария Classifier Drift Monitor.

Предметные ограничения и критические параметры

Ниже приведены ключевые фрагменты исходного описания. Перед продуктивным применением пределы должны быть сверены с утверждённой спецификацией, регистрационным досье и локальными SOP.
  • • PSI (Population Stability Index): Количественная оценка изменения распределения входных признаков и выходных предсказаний относительно базовой линии.
  • • KLD (Kullback-Leibler Divergence): Измерение информационного расстояния между текущим и эталонным распределениями.
  • ⚠️ ВАЖНО:
  • ⚠️ КРИТИЧЕСКИ ВАЖНО:
  • • Sample Size: Метрики дрейфа ненадежны при малых выборках (<100).
  • Критические параметры:
  • • PSI Features: < 0.1 (stable), 0.1-0.2 (warning), > 0.2 (drift)
  • • PSI Predictions: < 0.2
  • • KLD Score: < Threshold
  • • Sample Size: ≥ Minimum

URS — пользовательские требования

IDТребованиеКритичностьКритерий приемки
URS-001Утилита должна принимать файл input.csv для Classifier Drift Monitor с заголовками, определёнными в контракте данных.HighФайл обрабатывается без ручного изменения заголовков.
URS-002Утилита должна выполнять детерминированную оценку QC/ОКК без машинного обучения и без вероятностного принятия решения о соответствии.HighПри одинаковых входных данных, версии правил и конфигурации результат полностью воспроизводим.
URS-003Утилита должна валидировать обязательные поля, типы данных, диапазоны, единицы измерения и предметную правдоподобность значений.HighОшибки схемы, преобразования и диапазона явно отражаются в результате.
URS-004Утилита должна применять предметные пределы и правила из описания, утверждённой спецификации, регистрационного досье и локальных SOP.HighКаждая проверка имеет результат PASS/WARNING/FAIL и понятное сообщение.
URS-005Утилита должна формировать output.json с машинно-читаемыми результатами, исходными значениями, предупреждениями, отказами и критическими находками.HighJSON пригоден для LIMS/ELN/MES-интеграции и QA/QC review.
URS-006Утилита должна сохранять трассируемость между серией/образцом, входным файлом, применёнными правилами и итоговым статусом.HighВыход содержит идентификаторы, список параметров и audit metadata.
URS-007Документация должна поддерживать подготовку IQ/OQ/PQ, CSV/CSA и обсуждение с инспекторами или внутренним QA.MediumURS, FS, контракт input/output и тестовые сценарии поставляются вместе с утилитой.
URS-008Утилита должна использоваться как decision-support инструмент QC, а не как замена утверждённым спецификациям и выпускному решению Qualified Person/QA.MediumВ документации указан контроль change control и необходимость сверки пределов.

Контракт input.csv

#ПолеТипПримерНазначение
1ModelNamestring / controlled vocabularyOncoClassify_v3Контролируемый входной параметр для детерминированных QC-правил.
2ModelVersionstring / controlled vocabularyv3.2.1Контролируемый входной параметр для детерминированных QC-правил.
3MonitoringWindowstring / controlled vocabulary2026-W22Контролируемый входной параметр для детерминированных QC-правил.
4PSI_Feature_Avgdecimal0.03Контролируемый входной параметр для детерминированных QC-правил.
5PSI_Predictioninteger / decimal0.05Контролируемый входной параметр для детерминированных QC-правил.
6Max_PSI_Thresholddecimal0.2Контролируемый входной параметр для детерминированных QC-правил.
7Warning_PSI_Thresholddecimal0.1Контролируемый входной параметр для детерминированных QC-правил.
8KLD_Scoredecimal0.02Контролируемый входной параметр для детерминированных QC-правил.
9Max_KLD_Thresholddecimal0.1Контролируемый входной параметр для детерминированных QC-правил.
10Prediction_Mean_Shiftdecimal0.01Контролируемый входной параметр для детерминированных QC-правил.
11Max_Mean_Shiftdecimal0.05Контролируемый входной параметр для детерминированных QC-правил.
12SampleSize_Currentstring / controlled vocabulary450Идентификатор образца или лабораторной пробы.
13Min_SampleSizestring / controlled vocabulary100Идентификатор образца или лабораторной пробы.
14Baseline_Accuracydecimal0.94Контролируемый входной параметр для детерминированных QC-правил.
15Current_Proxy_Accuracydecimal0.93Контролируемый входной параметр для детерминированных QC-правил.
ModelName,ModelVersion,MonitoringWindow,PSI_Feature_Avg,PSI_Prediction,Max_PSI_Threshold,Warning_PSI_Threshold,KLD_Score,Max_KLD_Threshold,Prediction_Mean_Shift,Max_Mean_Shift,SampleSize_Current,Min_SampleSize,Baseline_Accuracy,Current_Proxy_Accuracy
OncoClassify_v3,v3.2.1,2026-W22,0.03,0.05,0.2,0.1,0.02,0.1,0.01,0.05,450,100,0.94,0.93
MCED_TissueOrigin_v2,v2.1.0,2026-W23,0.25,0.35,0.2,0.1,0.18,0.1,-0.12,0.05,380,100,0.89,0.76
VariantPathogenicity_v1,v1.4.2,2026-W23,0.08,0.06,0.2,0.1,0.04,0.1,0.02,0.05,520,100,0.91,0.90

Правила валидации входных данных

IDПолеПравилоКритичность
VR-001ModelNameПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.High
VR-002ModelVersionПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.High
VR-003MonitoringWindowПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.High
VR-004PSI_Feature_AvgПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-005PSI_PredictionПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-006Max_PSI_ThresholdПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-007Warning_PSI_ThresholdПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-008KLD_ScoreПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-009Max_KLD_ThresholdПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-010Prediction_Mean_ShiftПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-011Max_Mean_ShiftПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-012SampleSize_CurrentПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-013Min_SampleSizeПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-014Baseline_AccuracyПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-015Current_Proxy_AccuracyПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium

FS — функциональная спецификация

IDФункцияРеализация
FS-001CLI executionПоддержать режимы запуска: demo mode без аргументов и production mode input.csv output.json.
FS-002CSV importПрочитать input.csv в UTF-8/CSV-совместимом формате, проверить наличие заголовка и ожидаемых колонок.
FS-003Schema validationПроверить обязательные поля, количество колонок, неизвестные ключевые поля и пустые обязательные значения.
FS-004Type conversionПреобразовать числовые, флаговые и текстовые значения; некорректный формат фиксировать как ошибку строки.
FS-005Domain rule engineПрименить правила для Classifier Drift Monitor, включая критические пределы из описания и утверждённой спецификации.
FS-006Status aggregationСформировать итоговый статус: FAIL при критическом отказе, WARNING при некритическом отклонении, PASS при соответствии.
FS-007JSON exportЗаписать output.json с детализацией проверок, исходными значениями, предупреждениями, отказами и critical findings.
FS-008Audit supportСохранять структуру результата пригодной для review, расследования отклонений и воспроизведения расчёта.
FS-009Integration contractПоддержать сценарий LIMS/ELN/MES → input.csv → utility → output.json → portal/admin review.
FS-010Error handlingВозвращать явные сообщения для отсутствующего файла, пустого CSV, неверной схемы, ошибки записи output.json и некорректного формата.

Пример output.json

{
  "utilityId": "classifierdriftmonitor",
  "utilityFolder": "ClassifierDriftMonitor",
  "package": "LiquidBiopsy",
  "overallStatus": "PASS|WARNING|FAIL",
  "sourceFile": "input.csv",
  "processedAtUtc": "2026-06-10T00:00:00Z",
  "checks": [
    {
      "parameter": "ModelName",
      "value": "OncoClassify_v3",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-001"
    },
    {
      "parameter": "ModelVersion",
      "value": "v3.2.1",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-002"
    },
    {
      "parameter": "MonitoringWindow",
      "value": "2026-W22",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-003"
    },
    {
      "parameter": "PSI_Feature_Avg",
      "value": "0.03",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-004"
    },
    {
      "parameter": "PSI_Prediction",
      "value": "0.05",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-005"
    },
    {
      "parameter": "Max_PSI_Threshold",
      "value": "0.2",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-006"
    },
    {
      "parameter": "Warning_PSI_Threshold",
      "value": "0.1",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-007"
    },
    {
      "parameter": "KLD_Score",
      "value": "0.02",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-008"
    },
    {
      "parameter": "Max_KLD_Threshold",
      "value": "0.1",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-009"
    },
    {
      "parameter": "Prediction_Mean_Shift",
      "value": "0.01",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-010"
    },
    {
      "parameter": "Max_Mean_Shift",
      "value": "0.05",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-011"
    },
    {
      "parameter": "SampleSize_Current",
      "value": "450",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-012"
    }
  ],
  "criticalFindings": [],
  "warnings": [],
  "audit": {
    "inputHash": "sha256:<calculated at runtime>",
    "rulesVersion": "<utility executable version>",
    "documentation": "ClassifierDriftMonitor.documentation.html"
  }
}

Матрица трассируемости

URSFSТестПодтверждение
URS-001FS-001, FS-002OQ-001Проверить запуск и импорт валидного input.csv.
URS-002FS-005, FS-006OQ-004Повторить один и тот же набор данных и сравнить output.json.
URS-003FS-003, FS-004, FS-010OQ-002, OQ-003Проверить отсутствующие колонки и неверные типы.
URS-004FS-005, FS-006OQ-004, PQ-001Проверить критические отклонения по реальным/граничным данным.
URS-005FS-007, FS-009OQ-005Проверить JSON schema и пригодность для downstream-систем.
URS-006FS-008OQ-006Проверить наличие идентификаторов и audit metadata.
URS-007FS-008, FS-010IQ-001, OQ-007Проверить комплектность документации и control evidence.
URS-008FS-005, FS-008PQ-002Проверить review workflow и запрет автоматической замены QA-решения.

IQ/OQ/PQ тестовые сценарии

IDСценарийОжидаемый результат
IQ-001Проверить наличие executable, input.csv, документации и контрольной суммы.Комплект поставки полон; версия зафиксирована.
OQ-001Валидная строка из примера input.csv.PASS или допустимый WARNING согласно правилам.
OQ-002Удалить обязательную колонку из CSV.Ошибка схемы или FAIL с указанием отсутствующей колонки.
OQ-003Внести нечисловое значение в числовое поле.Ошибка преобразования типа с указанием строки/поля.
OQ-004Значение критического параметра вывести за предел.FAIL и critical finding.
OQ-005Проверить структуру output.json.Все обязательные секции присутствуют, JSON валиден.
OQ-006Проверить трассируемость серии/образца.Идентификаторы входа и результатов совпадают.
PQ-001Проверить 3–5 реальных партий/образцов пользователя.Результат подтверждён QC/QA review.
PQ-002Проверить workflow отклонения и ручного QA-решения.Утилита поддерживает review, но не заменяет утверждённое решение.

QA/QC и change control

  • Не менять имена колонок без обновления валидатора, документации и тестового набора.
  • Хранить input.csv, output.json, версию исполняемого файла и контрольную сумму.
  • Перед продуктивным использованием провести IQ/OQ/PQ или эквивалентную CSV/CSA-проверку.
  • Критические пределы должны быть сверены с утверждённой спецификацией, регистрационным досье и локальными SOP.
  • Утилита предоставляет формализованный QC decision support, но окончательное решение выпуска остаётся за QA/QP и утверждёнными процедурами.

Входит в пакеты

Жидкостная биопсия

Пакет для QC и преданалитического контроля жидкостной биопсии: cfDNA/ctDNA, CTC, EV/exosomes, метилирование, NGS/qPCR/ddPCR, контроль образцов, контаминации, чувствительности и отчётности.

Открыть