Pytolemaic - Набор инструментов для качества модели

Краткое введение в пакет Pytolemaic

Это сообщение в блоге представляет собой краткое введение в пакет Pytolemaic (github) и его возможности. Сообщение охватывает следующие компоненты:

Методы модельного анализа

  1. Чувствительность к функциям
  2. Подсчет очков и доверительные интервалы
  3. Измерение ковариативного сдвига

Анализ прогнозов модели

  1. Неопределенность прогноза
  2. Объяснения извести

вступление

В настоящее время построить модель машинного обучения (ML) довольно просто. Однако создание хорошей модели по-прежнему требует опыта, чтобы избежать множества ошибок на этом пути. К счастью, есть несколько методов, которые можно использовать для выявления этих подводных камней.

Пакет Pytolemaic использует такие методы для анализа моделей машинного обучения и измерения их качества. Созданный с учетом удобства, пакет имеет простой интерфейс, который упрощает его использование.

Пост организован следующим образом:

  1. Начало работы - раздел о том, как установить пакет Pytolemaic и запустить объект PyTrust.
  2. Чувствительность к функциям - включает отчет о чувствительности функций и отчет об уязвимостях.
  3. Отчет по оценке - эта часть разделена на 2 раздела: раздел, посвященный отчету по оценке для задачи регрессии, включая доверительные интервалы и ковариационный сдвиг, за которым следует аналогичный раздел для задач классификации.
  4. Неопределенность прогнозов - обзор методов неопределенности, поддерживаемых пакетом.
  5. Объяснение извести - раздел, посвященный интеграции извести.

Начиная

Пакет Pytolemaic создан для контролируемых моделей (регрессия и классификация), обученных на структурированных данных (Titanic in, MNIST out). Модель рассматривается как черный ящик, поэтому дополнительная информация о модели не требуется. Если есть этап предварительной обработки (например, вменение), предшествующий оценщику, то его необходимо заключить в единую функцию прогнозирования, например с помощью класса конвейера Sklearn.

Сам анализ относительно легкий. Однако некоторые методы анализа требуют создания новых прогнозов (например, Lime), что может занять много времени и вычислительных ресурсов, в зависимости от сложности вашей модели и размера вашего набора данных.

Пакет не предназначен для работы с тяжелыми грузами. Пожалуйста, дайте мне знать, если ему нужно больше мышц.

Установка

Пакет Pytolemaic размещен на github и доступен на Pypi.org, поэтому просто используйте pip:

pip install pytolemaic

Инициировать объект PyTrust

Чтобы проанализировать модель, просто создайте объект PyTrust со следующей информацией:

  1. [Обязательно] Обученная модель, обучающий набор, набор для проверки удержания и метрика, которую вы используете для оценки модели.
  2. [Необязательно] Метки классов, стратегия разделения
  3. [Необязательно] Метаданные столбцов: например, имена функций, типы функций, кодировка функций
  4. [Необязательно] Метаданные образцов: например, образцы весов

Хотя инициировать объект PyTrust довольно просто, это самая сложная часть пакета. Таким образом, при первом использовании рассмотрите возможность предоставления только необходимой информации.

Посмотрим, как это делается

Пример №0: запуск PyTrust

Анализ отчетов

А. Чувствительность к функциям (FS)
В пакете Pytolemaic реализованы 2 варианта FS - чувствительность к перемешиванию и чувствительность к пропущенным значениям. Вызов pytrust.sensitivity_report () вычислит оба типа и вернет объект SensitivityFullReport.

Примечание. Если вы не знакомы с методом определения чувствительности функции, см. Этот отличный пост.

Получить информацию о ФС можно двумя способами:
1. API - sensitive_report.to_dict () экспортирует отчет в виде словаря.
2. Графически - itivity_report.plot () отобразит любую информацию, доступную для печати.

Примеры
В этом примере мы будем использовать регрессор случайного леса, обученный на наборе данных California Housing (полный пример здесь). Набор данных California Housing связывает характеристики района со средней стоимостью дома в этом районе.

Пример №1: анализ чувствительности функции

Как и в большинстве отчетов, есть неясные поля. Таким образом, чтобы предоставить удобную документацию, пакет предоставляет функциональные возможности to_dict_meaning ().

Пример №2. Получение документации для полей словаря.

Мы просмотрели отчет FS, вызвав to_dict (), и увидели документацию, доступную через to_dict_meaning (). Теперь давайте посмотрим на это графически, вызвав plot ().

Пример №3. Создание графиков для отчетов о чувствительности функций

Примечание: функции to_dict (), to_dict_meaning (), nd plot () доступны во всех отчетах Pytolemaic.

Как видите, в отчете о чувствительности функции есть 3 измерения качества:

  1. Вменение - измеряет уязвимость к вменению путем измерения несоответствия между чувствительностью к перетасовке и чувствительностью к пропущенным значениям.
  2. Утечка - измеряет вероятность утечки данных путем сравнения оценок чувствительности.
  3. Too_many_features - измеряет, используется ли слишком много функций, путем подсчета количества функций с низкой чувствительностью.

Примечание: логика отчета об уязвимости будет объяснена в отдельном посте.

Б. Отчет по оценке для задачи регрессии
С тем же объектом pytrust, что и выше, мы вызываем pytrust.scoring_report () для анализа качества оценки и создания объект ScoringFullReport.

Как и раньше, мы будем использовать регрессор случайного леса для набора данных California Housing.

Пример №4. Создание отчета об оценке

Доверительные интервалы
metric_scores предоставляет производительность модели (значение) для каждого показателя, а также пределы доверительного интервала ( ci_low и ci_high). Кроме того, он предоставляет ci_ratio - безразмерное значение, которое представляет неопределенность в вычислении оценки (чем меньше, тем лучше). В большинстве случаев качество оценки производительности можно улучшить, расширив набор тестов.

Ковариационный сдвиг
Параметр separa_quality m определяет, взяты ли наборы для поездов и тестов из одного и того же распределения (также известного как Ковариационный сдвиг) с использованием ROC. -AUC. Поскольку это показатель качества, чем выше значение, тем лучше. Дальнейшее объяснение можно найти здесь и здесь.

Как и раньше, создание графиков для отчета об оценке выполняется с помощью .plot ()

Пример № 5: Создание графиков для отчета об оценке

Как видно, диаграмма рассеяния содержит полосы ошибок. Эти планки ошибок отражают неопределенность прогноза модели. Подробнее о расчетах неопределенности в разделе анализа прогнозов модели.

С. Отчет об оценке для задачи классификации
Отчет об оценке для задач классификации имеет ту же структуру, но предоставляет другую информацию.

В этом примере мы будем использовать классификатор случайного леса, обученный на наборе данных для взрослых UCI.

Пример № 6. Создание отчета об оценке

Примечание: в этом наборе данных наборы поездов и тестов имеют разное распределение. В реальных наборах данных такое низкое значение может стать источником беспокойства.

Как и раньше, мы можем построить несколько графиков.

Пример № 7: Создание графиков для отчета об оценке

Анализ прогнозов модели

А. Неопределенность прогнозов
Пакет Pytolemaic может предоставить оценку неопределенности в прогнозировании модели. В случае задачи регрессии значение неопределенности представляет собой полосу ошибок, имеющую тот же масштаб, что и целевая переменная. С другой стороны, в случае задачи классификации значение неопределенности показывает, насколько модель не уверена в своем прогнозе по шкале от 0 (максимальная достоверность) до 1 (нет уверенности).

Пакет поддерживает несколько методов, перечисленных ниже. Таким образом, точное значение значения неопределенности зависит от используемого метода.

Регрессия:
* MAE: оценка абсолютной ошибки на основе регрессора, обученного абсолютной ошибке предсказаний тестового набора.
* RMSE: оценка абсолютной ошибки на основе регрессора, обученного квадрату ошибки предсказаний тестового набора.

Классификация:
* Вероятность: мера неопределенности, основанная на соотношении значений вероятности 1-го и 2-го наиболее вероятных классов.
* Достоверность: показатель неопределенности, основанный на классификаторе, обученном на основе предсказаний тестового набора.

Примеры
Для примеров неопределенности мы будем использовать набор данных для взрослых, как и раньше. Однако на этот раз мы инициируем объект PyTrust только с половиной набора тестов и используем другую половину (назовем ее набором прогнозов), чтобы увидеть, как измерение неопределенности связано с ошибками прогнозирования.

Пример № 8: Расчет неопределенности на основе «достоверности»

Мы ожидаем, что у образцов с более высокой неопределенностью будет больше шансов быть неправильно классифицированных. Теперь мы проверим это, объединяя выборки набора прогнозов в соответствии с их соответствующей неопределенностью, а затем измеряем отзыв для выборок в каждой ячейке.

Следуя этому процессу (здесь код), мы получаем следующий график, который ведет себя так, как мы и ожидали.

Б. Объяснение извести

Известное объяснение предсказаний модели - хорошо известный метод. Пакет Pytolemaic существенно расширяет функциональность Lime, улучшая ее двумя способами:

  1. Внедрение простого вменения, чтобы преодолеть уязвимость Лайма к пропущенным значениям.
  2. Внедрение механизма схождения для преодоления чувствительности извести к сгенерированным образцам.

Резюме

В пакете реализованы методы, которые помогают убедиться, что модель работает должным образом. Пакет создан для простоты использования и предназначен для использования на этапе построения модели, поэтому попробуйте и дайте мне знать, что вы думаете.

В будущих публикациях я подробнее расскажу о логике различных измерений качества и о том, как пакет может помочь вам в выявлении ошибок.

Дальнейшая работа будет сосредоточена на предсказаниях модели (объяснение и неопределенность) и на измерении качества набора данных.

Надеюсь, вам понравился этот пост и вы нашли пакет Pytolemaic интересным.