Тестирование моделей

Разработка моделей машинного обучения для продакшена

Sinan Ozdemir

Data Scientist, Entrepreneur, and Author

Индивидуальная и групповая справедливость

Индивидуальная справедливость

Одинаковый подход к схожим людям.

  • Например, предлагать равные возможности трудоустройства людям с похожим опытом.

Групповая справедливость

Равный подход к разным группам.

  • Например, не допускать дискриминации по расовому или этническому признаку в моделях приёма в учебные заведения.
Разработка моделей машинного обучения для продакшена

Тестирование на отложенной выборке

  • Тестирование на отложенной выборке проверяет надёжность модели на отдельном наборе данных
  • Оценивает производительность на необученных данных, аналогично этапу обучения
  • Выявляет проблемы переобучения и недообучения

роботы работают с данными

Разработка моделей машинного обучения для продакшена

Обнаружение дрейфа модели

Концептуальный дрейф

  • Изменение связи между признаками и целевой переменной
    • Например, алгоритм анализа тональности
      • Значение слов может меняться (слово «sick» в английском сленге стало означать что-то хорошее)

Дрейф предсказаний

  • Изменение распределения предсказаний модели
    • Например, временный сбой приводит к росту интента «outage» у чат-бота
    • Это не «ошибка» как таковая, но такой дрейф может замедлить ответы для пользователей
Разработка моделей машинного обучения для продакшена

Пример обнаружения дрейфа модели

Подготовка:

# Import necessary libraries and split data
X_train, X_test, y_train, y_test = ...

Обучение модели:

# Train a classifier on the training data
clf = DecisionTreeClassifier(random_state=42)
clf.fit(X_train, y_train)

# Calculate the accuracy on test data
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")

Тестирование на дрейф позднее:

X_test_drift = X_test + 1.0  # Simulate data drift
# Calculate the accuracy on drifted data
y_pred_drift = clf.predict(X_test_drift)
accuracy_drift = accuracy_score(
    y_test, y_pred_drift)
print(f"Accuracy with drift: {accuracy_drift}")

# Drift detection threshold based on the accuracy
drift_threshold = accuracy * 0.9

# Check for drop in accuracy on the drifted data
if accuracy_drift < drift_threshold:
    print("Concept drift detected!")
else:
    print("No concept drift detected.")
Разработка моделей машинного обучения для продакшена

Сложные модели и базовые: сравнение затрат

  • Сложные модели дороже и могут снижать эффективность
  • Задержка (latency) — время обработки одного входного значения и получения предсказания
  • Пропускная способность (throughput) — количество предсказаний за единицу времени
  • Тестируйте задержку и пропускную способность, чтобы определить оптимальную сложность модели
  • Цель — баланс между точностью и эффективностью
Разработка моделей машинного обучения для продакшена

Давайте потренируемся!

Разработка моделей машинного обучения для продакшена

Preparing Video For Download...