Практическое руководство по многим инструментам XAI

Что означает объяснимость машинного обучения?

В 2016 году Рибейро и соавт. опубликовали свою авторитетную газету: "Why should I trust you?": Explaining the Predictions of any Classifier . Знаменитый эксперимент "Husky or Wolf" указывает на то, что, несмотря на большие усилия по разработке точной модели и ее надлежащему обучению, модель все же может обучаться непредсказуемым корреляциям. Например, модель научилась предсказывать, что на картинке волк, если на заднем плане снег. Хотя имеет смысл, он научился различать волка не по его характеристикам, а по фону изображения.

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

В этом посте более подробно рассматривается интеграция инструментов XAI в рабочие процессы машинного обучения. Моя цель — предоставить образцы кода и показать результаты для модели, которая не часто упоминается в других сообщениях или в документации к инструменту.
Здесь рассматриваются следующие инструменты: LIME, SHAP, Seldon Alibi. и ИнтерпретироватьML.

Коротко о «черном ящике против стеклянного ящика»

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

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

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

Модель

Модель, используемая в этом посте, вдохновлена ​​примером из документации scikit-learn, а именно TweddieRegression. Этот пост посвящен миру страхования, в частности, суммам требований по автострахованию. Обычно существует несколько способов прогнозирования общей суммы претензии, ожидаемой на единицу риска (имеется в виду продолжительность страхового покрытия данного полиса). Одним из способов является моделирование частоты претензий и выходного пособия (суммы претензии) в двух разных моделях и расчет общей суммы претензии как их произведение. Частота обычно моделируется с помощью распределения Пуассона, поскольку существует множество полисов, в которых в целом регистрируется 0 заявок. И серьезность моделируется с помощью гамма-распределения, поскольку эмпирически показано, что оно имеет такое распределение.

В качестве альтернативы Tweedie Distribution напрямую моделирует общую сумму претензии, когда параметр мощности находится в диапазоне от 1 до 2. Чтобы найти правильный параметр, можно использовать поиск по сетке, но в этом посте в качестве значения мощности выбрано значение 1,9.

Выбрал эту модель, так как:

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

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

Имена функций

После применения ColumnTransformer имена функций больше не читаются. One Hot Encoding (OHE) создает целый набор новых функций. Также KBinsDiscretizer создает новую функцию для каждого интервала, в который помещаются непрерывные данные. Немного сложно понять, как называется функция и каково значение этой функции для текущей точки данных. В другом своем посте я пишу о том, как получить читаемые имена функций из файла ColumnTransformer.

Объяснимые инструменты AI (XAI)

Этот пост посвящен четырем инструментам XAI: LIME, SHAP, Seldon Alibi и InterpretML. Для каждого из них я расскажу, как интегрировать его с моделью и как explain сделать определенный прогноз для заданной точки данных.

LIME (локальные интерпретируемые модельно-независимые объяснения)

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

Следующий код создает explainer и использует его для определения основных функций, которые способствовали прогнозу для данной точки данных (в случае X_test[42]).

Результат выглядит следующим образом:

Intercept 211.86354640053418 // Lime model intercept
Prediction_local [146.38162887] // LIME model prediction
Right: 133.80831374760626 // value from glm_pure_premium.predict

Однако это текстовое представление не очень описательно. Чтобы визуализировать прогноз и особенности, которые на него повлияли больше всего, мне нужно запустить: explain_data_point.as_pyplot_figure() или explain_data_point.as_list(). Результат показывает визуально (или в тексте), как значение определенного признака для данной точки данных влияет на прогноз (положительно или отрицательно).

explain_data_point.as_pyplot_figure()

explain_data_point.as_list()

[('Category__VehPower_4.0', -118.60886335511677), ('Category__VehBrand_B2', -59.89935149820192), ('Category__VehGas_Regular', -34.65470430935958),
('Category__Area_C', 31.8465417201858),
('Log__Density', 30.911940033440064),
('Segment__DrivAge: [39.0, 43.0)', 28.24619186526209), ('Category__Region_R24', -27.9788217749691),
('Segment__VehAge: [12.0, 15.0)', -19.304050151977467),
('BonusMalus', 0.02413232592200181),
('Segment__VehAge: [2.0, 4.0)', 0.0)]

SHAP (Аддитивные пояснения Шэпли)

SHAP использует значения Шепли из теории игр для объяснения моделей и их предсказаний. В смысле машинного обучения игра — это прогноз, а игроки — это функции и их значения для одной точки данных. SHAP объясняет разницу между средним прогнозом (обычно из данных обучения) и результатом прогноза для заданной точки данных (или набора точек данных).

Библиотека SHAP предлагает различные способы визуализации того, как каждая функция и ее соответствующее значение в точке данных влияют на прогноз. Гистограмма, каскадная диаграмма или диаграмма решений — все это отличные визуализации того, как было достигнуто предсказание. E[f(X)] — это ожидаемое значение, рассчитанное для данной модели, в основном среднее значение всех целевых значений из набора обучающих данных. Для заданной точки данных ее размеры влияют на ожидаемое значение (несколько больше, а некоторые меньше), в результате чего получается значение f(x).

shap.plots.waterfall(shap_values[i], max_display=12)

Ожидаемое значение обычно равно explainer.expected_value, а полный список всех значений Шепли для данной точки данных можно получить через explainer.shap_values(X_test[i]).

explainer.shap_values(X_test[i])

array([[-3.57367972e-02, 2.37260265e-05, -3.62400872e-03,
9.99498571e-03, 1.61319891e-02, -1.33205559e-02,
-1.70261858e-03, -5.77566345e-02, 2.10600674e-02,
-7.60667267e-04, 2.20831452e-02, 1.63428026e-02,
8.70301560e-03, 1.39718551e-01, -6.68123861e-03,
-1.28186673e-02, -9.83389108e-03, 2.70578702e-02,
-2.45288066e-02, 2.43979909e-02, -6.97570218e-04,
1.84981886e-04, 2.72899951e-02, 0.00000000e+00,
-1.75415087e-04, -1.24097019e-01, 1.17185801e-02,
-1.13515675e-02, -1.44770143e-02, 3.56013603e-03,
-2.78724434e-01, 3.47278038e-02, -2.96024571e-02,
1.28822536e-02, -4.03941874e-03, 7.75558604e-04,
4.69723415e-03, -3.04630041e-03, -6.58506613e-04,
0.00000000e+00, 3.73403677e-04, 0.00000000e+00,
-4.67284073e-02, -4.67924568e-02, -7.21878931e-03,
-0.00000000e+00, -8.58881460e-06, -0.00000000e+00,
-7.78920879e-02, 4.28093791e-03, 4.82906634e-04,
-2.98388445e-03, 8.30043843e-03, 0.00000000e+00,
-0.00000000e+00, 8.68300158e-03, -2.19710240e-02,
5.07694776e-03, -3.22590630e-04, -9.55616865e-05,
0.00000000e+00, -9.36496765e-05, -0.00000000e+00,
1.53178292e-03, -3.53638524e-02, 1.12146623e-04,
-2.42871808e-02, 9.61732427e-03, 5.28887846e-02,
1.01917176e-02, -3.19149583e-03, 1.07590850e-03,
4.24827082e-01, -4.42527041e-02]])

Селдон Алиби

Seldon Alibi, как и LIME и SHAP, может объяснить практически любую модель машинного обучения. Однако репозиторий GitHub, похоже, не очень активен. С моей точки зрения, у меня возникло ощущение, что он объединяет инструмент SHAP и некоторые другие методы объяснения с более последовательным и более удобным для разработки API, вдохновленным scikit-learn. Поэтому я не вкладывал в него слишком много сил. Тем не менее, вот как вы можете интегрировать его и как визуализировать результаты:

ИнтерпретироватьML

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

InterpretML — интересный инструмент, так как он уже включает в себя пояснения LIME и SHAP под пояснениями Blackbox и некоторые другие. Он включает в себя пояснения для моделей «стеклянного ящика» (линейные модели, дерево решений), а в категорию «черных ящиков» он также включает график частичной зависимости (используемый для визуализации зависимости цели и (набора) входных признаков)) и Анализ чувствительности Морриса (используется для определения того, какие функции достаточно важны для будущего анализа).

MLOps.игрушки

Отличный ресурс, чтобы узнать больше об инструментах объяснимости в ML / AI, а также о многих других интересных инструментах, которые могут быть полезны в вашем путешествии по MLOps, — MLOps.toys. Он поддерживается Aproia, и это был один из моих исходных ресурсов для этого поста.

Последние мысли

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

Если эти инструменты должны были использоваться в производственных средах, где для всех прогнозов/решений генерируется объяснение, они должны быть более удобными для разработки. Это означает, что вывод должен быть больше в виде словарей, чтобы упростить форматирование, обработку и визуализацию с помощью фреймворков JS.
Исключением является InterpretML, который предоставляет данные, используемые для создания информационных панелей также в словарях, и Seldon Alibi, который приложил немало усилий для предоставления согласованного API.

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

Важным моментом для повышения уверенности в этих инструментах и ​​методах является последовательность. Судя по моей оценке LIME и SHAP для одной и той же модели и одной и той же точки данных, они дают разные объяснения, поскольку какая функция (или значение этой функции для данной точки данных) оказала наибольшее влияние на сделанный прогноз. Но в целом их объяснения имели смысл, и это здорово.

Наконец-то вы можете связаться со мной через LinkedIn.