Понимание внутреннего устройства LIME с использованием данных COVID-19

Объясняемый ИИ (XAI)

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

Объяснимый ИИ (XAI) относится к методам и методам, которые помогают понять и интерпретировать прогнозы, сделанные с помощью модели машинного обучения.

Приложения Explainable AI frameworks позволяют предприятиям применять более надежные и сложные решения в рамках подхода «белого ящика».

Объясняемый ИИ обеспечивает обоснование после предсказания.

Что такое ЛАЙМ?

LIME расшифровывается как Local Interpretable Model-Agnostic Explanations и может быть описан ниже.

LIME - это метод визуализации, который помогает объяснить индивидуальные прогнозы. Он не зависит от модели, поэтому может применяться к любой контролируемой регрессионной или классификационной модели. LIME был представлен Марко Тулио Рибейро, Самиром Сингхом и Карлосом Гестрином в 2016 году.

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

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

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

Понимание алгоритма LIME

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

  1. Создайте возмущенные данные
  2. Предсказать результат на возмущенных данных
  3. Создавайте дискретные объекты
  4. Найдите евклидово расстояние от возмущенных данных до исходного наблюдения
  5. Преобразование расстояния в оценку сходства
  6. Выберите первые n функций для модели
  7. Создайте линейную модель и объясните прогноз

Пример из практики - Предскажите, выздоровеет пациент или нет

Мы будем использовать набор данных COVID-19, чтобы проиллюстрировать, как LIME внутренне создает объяснение для наблюдения.

Постановка задачи

Цель этого тематического исследования - использовать данные пациента, такие как возраст, пол, симптомы, и предсказать, выздоровеет пациент или нет.

Данные

Используемые данные доступны в этом репозитории Github. Данные содержат подробную информацию о пациентах, у которых был положительный результат теста на covid-19, а также их демографические данные, возраст, пол, симптомы и исход.

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

Набор данных и код, использованные в этой статье, доступны в репозитории git, упомянутом в конце статьи.

Предварительная обработка данных

В загруженном наборе данных было 2676311 точек данных и 33 функции. Звучит огромно, но базовый анализ показывает, что в нем много недостающих данных. В 14 функциях отсутствовало более 90% данных, а для 21 функции отсутствовало более 50% данных.

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

Многие функции, такие как координаты, области администрирования, информация о дате, отсутствовали в данных и также не требовались для этого тематического исследования. После отказа от этих функций окончательный набор необходимых функций сократился до 6.

Создание функций для «симптомов»

Симптомы для каждого пациента были описаны в виде произвольного текста. Для пациентов с множественными симптомами записи были разделены запятыми. На основе ключевых слов в симптомах были созданы флаги для каждого симптома.

Создание целевой переменной

Набор данных содержит подробную информацию о пациентах, у которых положительный результат теста на COVID-19. В наборе данных есть столбец результатов с различными состояниями, такими как «разряжено», «критическое состояние», «стабильно», «умер» и т. Д. Для этого тематического исследования мы создадим целевой столбец как «восстановлен», который будет равен 0 в случае исход может быть одним из следующих: «умер», «умер», «смерть», «мертв». Во всех остальных случаях предполагается, что пациент выздоровел и цель будет установлена ​​на 1.

Создание фиктивных переменных

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

Изучение данных

Возраст влияет на целевую переменную. С возрастом процент пациентов, выздоравливающих от covid-19, постепенно снижается.

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

Аналогичные выводы можно сделать и по этим переменным, если они проверены с помощью корреляционной матрицы.

Здесь показан базовый исследовательский анализ данных. Обратитесь к файлу записной книжки в репозитории git для более подробной информации EDA.

Поезд-тестовый сплит

Окончательные данные после предварительной обработки содержали 215 сведений о пациентах с 15 функциями (включая целевую переменную). К этим данным было применено стратифицированное разбиение с соотношением поездов и тестов 70:30.

Обучение модели - Классификатор случайного леса

Затем нужно обучить модель на наборе данных поезда и запустить ее с тестовым набором данных. Здесь мы использовали классификатор случайного леса. Сравнение с данными теста дало оценку R2 78%.

Объяснение прогнозов - LIME

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

LIME не зависит от модели, подход и внутренняя работа алгоритма, которые объясняются ниже, остаются такими же и для других моделей.

1. Создайте Lime Explainer для табличных данных.

2. Объясните конкретный прогноз.

Пример 1 - наблюдение 1

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

Глядя на приведенные выше результаты, становится ясно, что модель предсказала, что пациент может не выздороветь в зависимости от возраста и других симптомов, таких как пневмония, хроническое заболевание. Хотя у пациента нет респираторных проблем с положительным коэффициентом, другие отрицательные коэффициенты перевешивают их, и, следовательно, модель предсказала, что флаг выздоровления равен 0.

Пример 2 - Наблюдение 3

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

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

Расшифровка алгоритма LIME

Как упоминалось ранее, в алгоритме LIME выполняется 7 ключевых шагов.

В этом разделе мы познакомимся с внутренним устройством алгоритма LIME, чтобы понять, как он приходит к окончательному объяснению, подобному показанному выше. Мы рассмотрим наблюдение 1 как пример, чтобы понять поток.

  1. Создайте возмущенные данные
  2. Предсказать результат на возмущенных данных
  3. Создавайте дискретные объекты
  4. Найдите евклидово расстояние от возмущенных данных до исходного наблюдения
  5. Преобразование расстояния в оценку сходства
  6. Выберите первые n функций для модели
  7. Создайте линейную модель и объясните прогноз

Шаг 1. Создайте возмущенные данные

Чтобы наблюдение было объяснено, возмущайте (расстраивайте или нарушайте) наблюдение n раз, чтобы создать реплицированные данные признаков с небольшими изменениями значений. Эти возмущенные данные представляют собой поддельные данные, созданные вокруг наблюдения, которые используются LIME для построения локальной линейной модели.

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

Создание возмущенных данных

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

ПРИМЕЧАНИЕ: первая запись возмущенных данных всегда будет входным наблюдением, прогноз которого необходимо объяснить.

Шаг 2: спрогнозируйте результат на возмущенных данных

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

Шаг 3. Создайте дискретные объекты

LIME внутренне преобразует непрерывные переменные в дискретные, чтобы они были в понятном человеку формате. Это настраивается, и по умолчанию непрерывные переменные дискретизируются. LIME поддерживает следующие 3 типа дискретизаторов: квартиль (по умолчанию), дециль и энтропия. Диапазон значений переменной будет отличаться в зависимости от дискретизатора.

Шаг 4: Найдите евклидово расстояние возмущенных данных

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

Шаг 5. Преобразуйте расстояние в оценку сходства

Евклидово расстояние преобразуется в оценку подобия от 0 до 1. Чем ближе точка к наблюдению (меньшее евклидово расстояние), тем выше будет оценка подобия. Точки вне наблюдения будут иметь меньшую оценку сходства. То же самое можно заметить в приведенном ниже примере.

Обратите внимание, что, поскольку первая точка данных в возмущенных данных является самим входным наблюдением, оно имеет расстояние 0 (самое близкое к наблюдению) и оценку сходства 1 (точно так же, как и наблюдение).

Шаг 6. Выберите первые n функций для модели.

Модель может быть запущена со многими переменными, и нам может быть интересно знать только о первых n характеристиках, которые повлияли на прогноз. Это значение n можно настроить в объяснителе LIME.

LIME поддерживает стандартные методы выбора функций, такие как наибольшие веса, прямой выбор и путь лассо. Ниже приведены параметры, поддерживаемые Lime для выбора функций.

  • Наивысшие веса: запускает гребенчатую регрессию для масштабированных данных со всеми функциями и выбирает n объектов с наибольшим весом.
  • Прямой выбор - итеративное добавление элементов в модель и определение элементов, которые дают лучший результат на модели гребня.
  • Путь лассо: выбор объектов на основе пути регуляризации лассо.
  • none - учитывает все функции.
  • auto - если num_features (m) ‹= 6, выбор вперед, иначе самые высокие веса

Шаг 7. Создайте линейную модель и объясните прогноз.

После подготовки всех входных данных LIME теперь готов к созданию локальной линейной модели, которую можно использовать для объяснения прогнозов. Коэффициенты или веса из модели линейной регрессии используются для объяснения локального поведения наблюдения.

Выбор модели линейной регрессии

  • Единственное требование к локальной линейной модели - это то, что она должна работать с взвешенными входными данными и быть интерпретируемой.
  • Веса здесь - это оценка сходства, рассчитанная на основе расстояния возмущенного наблюдения до исходного наблюдения. Экземпляры, близкие к исходному наблюдению, будут иметь больший вес.
  • По умолчанию в качестве интерпретируемой модели используется Ridge Regression.
  • LIME поддерживает любую модель научного обучения, если она имеет параметры model_regressor.coef_ и «sample_weight» в качестве параметров для model_regressor.fit ()

Как видно на приведенном выше рисунке, окончательный результат LIME - это не что иное, как веса функций в линейной модели. Характеристики с положительным весом подталкивают цель к 1, а функции с отрицательным весом подталкивают ее к нулю. Кроме того, функции этой линейной модели представлены в понятном для человека формате, что упрощает интерпретацию того, почему конкретный прогноз имеет Сделано по модели.

Сравнение объяснений по моделям

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

На изображении выше показаны результаты запуска LIME с 3 разными моделями, которые были обучены на одних и тех же данных и выполнялись для одного и того же тестового наблюдения.

Как видно из результатов, наиболее важные функции различаются в зависимости от модели в зависимости от алгоритма. Для этого конкретного наблюдения логистическая регрессия и случайный лес дали наибольший вес возрасту, тогда как возраст занимает третье место в классификаторе дерева решений.

Вывод

LIME не только помогает создателям моделей объяснять прогнозы другим заинтересованным сторонам, но также помогает в отладке и сравнении моделей во время разработки модели.

Хотя LIME не зависит от модели, в некоторых случаях он может дать сбой. Поскольку LIME создает свои собственные выборочные данные вокруг места наблюдения на основе гауссовского распределения, возможно, что будут созданы некоторые «маловероятные» точки данных, на которых модель училась. Кроме того, если граница принятия решения слишком нелинейна, линейная модель может не объяснить это хорошо. Результаты также зависят от количества точек данных, настроенных для возмущенных данных, и ширины ядра, используемой для поиска ближайших точек.

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

Справка по данным и коду

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

Обратитесь к репозиторию git, чтобы получить доступ к данным и коду, использованным в этой статье: COVID-19 Classification XAI

Источники / ссылки