В моем предыдущем блоге я упомянул следующие элементарные методы понимания предсказаний модели.

  1. Важность функции с использованием индекса Джини
  2. Важность функции с использованием важности перестановки
  3. Графики частичной зависимости

Я хотел бы начать со следующего вопроса: «Можем ли мы доверять предсказаниям модели только потому, что производительность модели убедительно высока на тестовых данных?» Многие люди могут ответить на этот вопрос как ' Да ». Но это не всегда так. Высокая производительность модели не должна рассматриваться как показатель доверия к прогнозам модели, поскольку сигналы, принимаемые моделью, могут быть случайными и могут не иметь смысла для бизнеса.

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

LIME означает L окал I интерпретируемый M. odel-Agnostic E xplanations. Слово местный, кажется, больше всего сбивает с толку многих людей. Итак, позвольте мне начать с объяснения, почему используется слово Local.

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

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

Теперь давайте разберемся, как работает LIME:

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

Теперь давайте рассмотрим пример, чтобы объяснить результаты LIME. Я использовал набор данных из Kaggle. Цель состоит в том, чтобы определить наиболее сильные факторы, способные предсказать невыполнение платежа по кредитной карте. Я установил Scikit-learn реализацию Gradient Boosted Trees.

Correctly classified ‘Non Default Payment’ instance:

Оранжевый цвет указывает, что взнос направлен на «Платеж по умолчанию», а синий цвет указывает, что взнос направлен на «Платеж не по умолчанию». Прогноз глобальной модели для этого экземпляра составляет 0,072, тогда как прогноз для локальной модели составляет 0,066. Таким образом, для этого конкретного случая прогноз глобальной модели и локальной модели очень близок.

В приведенном выше примере показано, что наибольший вкладчик для этого конкретного экземпляра, помеченный как «Платеж не по умолчанию», является статусом погашения в предыдущем месяце (PAY_0 = 1). Это означает, что в предыдущем месяце оплата была произведена вовремя. Аналогично интерпретируются и другие переменные (PAY_2, PAY_3 и т. Д.). Это указывает на то, что если платежи за предыдущие месяцы были произведены вовремя, то высока вероятность того, что это лицо не выполнит дефолт в следующем месяце.

Высокая сумма LIMIT_BAL также способствует оплате «неплатежа». Это тоже имеет смысл, потому что высокий LIMIT_BAL означает, что дополнительный кредит остается низким. Таким образом, существует вероятность того, что счет в следующем месяце будет потенциально низким, и, следовательно, меньше вероятность дефолта. Теперь для непрерывных функций вывод LIME предоставляет более подробную информацию, поскольку он определяет диапазон значений функций, на которые эта функция влияет. Например, ‘LIMIT_BAL› 240 000 ’

Я лично считаю, что анализ неверно предсказанных случаев очень полезен. Это помогает понять, какие особенности фактически привели к неверному прогнозу.

Incorrectly classified ‘Non Default Payment’ instance (Actual: ‘Default Payment’):

Вышеупомянутый случай неверно предсказан как Платеж без дефолта из-за функций, которые обозначают предыдущую историю платежей (PAY_0, PAY_2, PAY_3 ). В данном случае предыдущие платежи были произведены вовремя. Это могло повлиять на неверность прогноза.

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

1. Local linear behavior

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

2. Number of features

Количество функций, которые следует выбрать для объяснения, необходимо выбрать оптимальным образом. Количество функций должно быть выбрано таким образом, чтобы сложность модели сохранялась наряду с простотой объяснения. В реализации LIME на Python он предоставляет следующие параметры: «forward_selection», «lasso_path», «none» или «auto».

3. Models without probability scores

LIME в настоящее время не поддерживает модели классификаторов без оценок вероятности.

4. No aggregated view

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

5. Similarity score

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

6. Definition of the neighborhood

Определение правильной окрестности для запуска локально интерпретируемых моделей - сложная проблема. Итак, почему нам нужно определять локальное окружение по описываемому экземпляру? Точность модели объяснения по отношению к исходной модели обеспечивается функцией потерь по набору выборок в упрощенном входном пространстве, взвешенном локальным ядром. В настоящее время LIME использует ядро ​​экспоненциального сглаживания. Ширина этого ядра определяет влияние на локальную модель объясняемого экземпляра, и снова нет лучшего способа определить ширину ядра.

7. Consistency of the model explanations

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

Заключение:

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

Дополнительные ресурсы для чтения:

  1. Https://www.kdd.org/kdd2016/papers/files/rfp0573-ribeiroA.pdf
  2. Https://github.com/marcotcr/lime
  3. Https://christophm.github.io/interpretable-ml-book/lime.html

Что дальше?

В следующем блоге я объясню еще один популярный метод: SHAP, который используется для объяснения предсказаний модели.

Эта область Объяснимого ИИ быстро развивается, и есть много новых разработок с точки зрения инструментов и фреймворков. В разделе комментариев напишите свой отзыв о блоге и о последних инструментах, которые вы использовали в этой области. Также прокомментируйте, если вы хотите, чтобы я писал по какой-либо конкретной теме.

Этот контент изначально был опубликован на моем личном веб-сайте для ведения блога: http://datascienceninja.com/. Нажмите здесь, чтобы просмотреть его, и подпишитесь, чтобы мгновенно получать обновления последних блогов.