Pytolemaic - Набор инструментов для качества модели
Краткое введение в пакет Pytolemaic
Это сообщение в блоге представляет собой краткое введение в пакет Pytolemaic (github) и его возможности. Сообщение охватывает следующие компоненты:
Методы модельного анализа
- Чувствительность к функциям
- Подсчет очков и доверительные интервалы
- Измерение ковариативного сдвига
Анализ прогнозов модели
- Неопределенность прогноза
- Объяснения извести
вступление
В настоящее время построить модель машинного обучения (ML) довольно просто. Однако создание хорошей модели по-прежнему требует опыта, чтобы избежать множества ошибок на этом пути. К счастью, есть несколько методов, которые можно использовать для выявления этих подводных камней.
Пакет Pytolemaic использует такие методы для анализа моделей машинного обучения и измерения их качества. Созданный с учетом удобства, пакет имеет простой интерфейс, который упрощает его использование.
Пост организован следующим образом:
- Начало работы - раздел о том, как установить пакет Pytolemaic и запустить объект PyTrust.
- Чувствительность к функциям - включает отчет о чувствительности функций и отчет об уязвимостях.
- Отчет по оценке - эта часть разделена на 2 раздела: раздел, посвященный отчету по оценке для задачи регрессии, включая доверительные интервалы и ковариационный сдвиг, за которым следует аналогичный раздел для задач классификации.
- Неопределенность прогнозов - обзор методов неопределенности, поддерживаемых пакетом.
- Объяснение извести - раздел, посвященный интеграции извести.
Начиная
Пакет Pytolemaic создан для контролируемых моделей (регрессия и классификация), обученных на структурированных данных (Titanic in, MNIST out). Модель рассматривается как черный ящик, поэтому дополнительная информация о модели не требуется. Если есть этап предварительной обработки (например, вменение), предшествующий оценщику, то его необходимо заключить в единую функцию прогнозирования, например с помощью класса конвейера Sklearn.
Сам анализ относительно легкий. Однако некоторые методы анализа требуют создания новых прогнозов (например, Lime), что может занять много времени и вычислительных ресурсов, в зависимости от сложности вашей модели и размера вашего набора данных.
Пакет не предназначен для работы с тяжелыми грузами. Пожалуйста, дайте мне знать, если ему нужно больше мышц.
Установка
Пакет Pytolemaic размещен на github и доступен на Pypi.org, поэтому просто используйте pip:
pip install pytolemaic
Инициировать объект PyTrust
Чтобы проанализировать модель, просто создайте объект PyTrust со следующей информацией:
- [Обязательно] Обученная модель, обучающий набор, набор для проверки удержания и метрика, которую вы используете для оценки модели.
- [Необязательно] Метки классов, стратегия разделения
- [Необязательно] Метаданные столбцов: например, имена функций, типы функций, кодировка функций
- [Необязательно] Метаданные образцов: например, образцы весов
Хотя инициировать объект 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 измерения качества:
- Вменение - измеряет уязвимость к вменению путем измерения несоответствия между чувствительностью к перетасовке и чувствительностью к пропущенным значениям.
- Утечка - измеряет вероятность утечки данных путем сравнения оценок чувствительности.
- 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, улучшая ее двумя способами:
- Внедрение простого вменения, чтобы преодолеть уязвимость Лайма к пропущенным значениям.
- Внедрение механизма схождения для преодоления чувствительности извести к сгенерированным образцам.
Резюме
В пакете реализованы методы, которые помогают убедиться, что модель работает должным образом. Пакет создан для простоты использования и предназначен для использования на этапе построения модели, поэтому попробуйте и дайте мне знать, что вы думаете.
В будущих публикациях я подробнее расскажу о логике различных измерений качества и о том, как пакет может помочь вам в выявлении ошибок.
Дальнейшая работа будет сосредоточена на предсказаниях модели (объяснение и неопределенность) и на измерении качества набора данных.
Надеюсь, вам понравился этот пост и вы нашли пакет Pytolemaic интересным.