В статье рассмотрено, что такое объясняемый искусственный интеллект (ИИ), почему так важна прозрачная интерпретация ML-моделей, а также какие инструменты позволяют понятно описать и наглядно представить результаты машинного обучения. Существует множество готовых инструментов для интерпретации и визуализации ML-моделей, упакованных в специальные библиотеки. Например, Yellowbrick — расширение scikit-learn, ELI5 — еще одна визуальная библиотека для устранения ошибок в моделях и объяснения прогнозов (совместима со scikit-learn, XGBoost и Keras), MLxtend для визуализации данных, сравнения решений и входящих в его состав классификаторов, LIME – пакет для интерпретации прогнозов [1] и SHAP, речь о которой пойдет далее.
Проблемы черного ящика или почему интерпретация ML-моделей так важна
Аналитическое агентство Gartner включило объясняемый ИИ (Explainable AI) в ТОП-10 трендов 2020 года в области Data&Analytics. Ожидается, что этот набор возможностей, который описывает ML-модель с указанием ее сильных и слабых сторон, поможет более точно спрогнозировать поведение моделей и выявить любые потенциальные ошибки. Это позволит повысить прозрачность и надежность решений и результатов ИИ, снижая нормативный и репутационный риски [2].
На практике недостаточное понимание процесса получения результатов с помощью инструментов Data Science, например, нейросетей или других методов машинного обучения – это серьезное препятствие их массового внедрения в бизнес и повседневную жизнь. Обычно люди боятся того, чего они не понимают и стремятся избегать этого. Таким образом, ареол загадочности вокруг ИИ в сознании обывателей замедляет практическое развитие данной научной области. Поэтому прозрачность процессов ML-моделирования и понятность их результатов важна для каждого Data Scientist’а.
Эта задача описывается термином «интерпретируемость», который означает степень того, насколько человек понимает причину, по которой было ML-алгоритм принял конкретное решение. Так ИИ из «сложной магии» или «черного ящика» становится объясняемым и предсказуемым, а значит, не страшным, переходя в разряд ежедневных явлений. Помимо этого, можно выделить еще несколько ключевых причин, почему интерпретация ML-моделей сегодня особенно актуальна [3].
- юридический аспект, когда принятое ML-моделью решение повлекло определенные последствия. Например, беспилотный автомобиль стал виновником аварии, из-за действий автопилота произошла авиакатастрофа, алгоритм поставил неверный диагноз пациенту и выписал не те медикаменты. Сюда же можно отнести действия, напрямую не связанные с человеческими жертвами или причинению вреда здоровью, такие как, отказ в выдаче кредита. При этом ст.13 европейского регламента о защите данных, GDPR, гласит, что каждый субъект данных имеет право на объяснение (right to explanation), то есть на получение информации о том, почему автоматизированная система, использующая его персональные данные, приняла определенное решение.
- вопрос доверия и вовлеченности,когда заказчики и конечные пользователи ML-моделей с большей охотой пользуются тем инструментарием, в котором они разбираются хотя бы на базовом уровне. Например, если клиенты понимают, как качество входных данных влияет на точность результатов, они будут более внимательно вносить необходимые сведения.
- тестирование и улучшение модели возможны лишь при понимании того, какие факторы влияют на работу ML-алгоритма, позволяя выявить потенциальные проблемы и направления оптимизации.
Таким образом, интерпретируемость ML-модели повышает ее потенциальную ценность. Однако, в реальности реализация любой добавленной ценности несет дополнительные расходы. В частности, увеличивается рабочее время Data Scientist’а, который старается показать бизнес-пользователям потенциал своих исследований. Поэтому не следует гнаться за максимальной интерпретируемостью результатов без учета контекста. Например, при низкой стоимости ошибки в предсказании (к примеру, рекомендация фильма пользователю), то и прилагать огромные усилия для того, чтобы сделать модель более интерпретируемой, возможно, не стоит. В этом случае можно ограничиться стандартной процедурой валидации качества модели [3].
Что такое SHAP и при чем здесь теория игр
Сложность реального ML-моделирования в том, что из множества предикторов некоторые влияют на результат сильнее других. Выявить такую зависимость можно на этапе кросс-валидации модели, однако это не дает точного ответа на вопрос о вкладе каждого признака в полученный итог. Однако, такие задачи часто встречаются в теории игр – разделу прикладной математики, посвященному исследованию операций. Ключевым понятием этого математического метода является игра – процесс, в котором участвуют две и более сторон, ведущих борьбу за свои интересы. Каждая сторона имеет свою цель и использует собственную стратегию, которая может привести к выигрышу или проигрышу, в зависимости от поведения других игроков.
Суть теории игр в том, чтобы выбрать оптимальные стратегии с учётом представлений о других участниках, их ресурсах и их возможных поступках. Большой вклад в развитие и популяризацию этих идей внесли математики Джон фон Нейман, Оскар Моргенштерн и Джон Форбс Нэш-младший в 40-50-хх гг. XX века. С середины 1980-х гг. математический аппарат теории игр активно используется в экономике, менеджменте, политике, социологии и психологии [4].
Сама теория игр, как развитая математическая область, включает множество категорий, в т.ч. кооперативные игры, в которых группы игроков могут объединять свои усилия, образуя коалиции для достижения наилучшего результата. В свою очередь, определить оптимальное распределение выигрыша между игроками можно с помощью вектора Шепли (). Он представляет собой распределение, в котором выигрыш каждого игрока равен его среднему вкладу в общее благосостояние при определенном механизме формирования коалиции [5]:
где n – количество игроков, k – количество участников коалиции K.
Применяя вышеизложенные положения теории игр к интерпретации ML-моделей, можно сделать следующие выводы [6]:
- результат обучения с учителем (на основе заданного примера) – это игра;
- выигрыш – это разница между матожиданием результата на всех имеющихся примерах и результатом, полученном на заданном примере;
- вклады игроков в игру – влияние каждого значения признака на выигрыш, т.е. результат.
При расчёте вектора Шепли необходимо формировать коалиции из ограниченного набора признаков. Однако, не каждая ML-модель позволяет просто убрать признак без повторного обучения модели «с нуля». Потому для формирования коалиций обычно не убирают «лишние» признаки, а заменяют их на случайные значения из «фонового» набора данных. Усреднённый результат модели со случайными значениями признака эквивалентен результату модели, в которой этот признак вообще отсутствует [6].
Практическая реализация этого подхода представляет собой специальную библиотеку SHAP (SHapley Additive exPlanations), которая поддерживается для моделей типа «ансамбль деревьев» в XGBoost, LightGBM, CatBoost, scikit-learn и pyspark. Как и любую питоновскую библиотеку, установить SHAP очень просто: достаточно лишь написать командной строке pip install shap [6].
Справедливости ради стоит отметить, что результаты, выдаваемые библиотекой, это не совсем точные вектора Шэпли, а их аппроксимация. При этом ML-алгоритмы tree ensembles, такие как Gradient Tree Boosting и нейросети, используют дополнительную информацию о структуре модели, выполняя вычисления за приемлемое время [6].
SHAP поддерживается и в популярном сегодня методе глубокого обучения (Deep Learning) в виде Deep SHAP – алгоритма высокоскоростной аппроксимации значений SHAP. В этом случае используется распределение фоновых выборок вместо единственного эталонного значения и применяются уравнения Шепли для линеаризации таких компонентов, как max, softmax и пр. Поддерживаются модели TensorFlow и Keras, использующие бэкэнд TensorFlow, также есть предварительная поддержка PyTorch [7].
Возвращаясь к интерпретации результатов ML-моделирования, стоит отметить богатые функциональные возможности библиотеки SHAP для визуализации данных. В частности, она поддерживает основные виды графиков, которые наиболее часто используются в Data Science: гистограммы, линейные графики, диаграммы размаха (ящик с усами) и т.д. Это позволяет наглядно представить и понятно объяснить результаты ML-моделирования бизнес-пользователям. Также визуализация данных помогает самому Data Scientsit’у в оценке адекватности модели [8].
Примеры практического использования библиотеки SHAP
Рассмотрим несколько реальных кейсов применения SHAP. Например, для анализа оттока сотрудников из компании с помощью xgboost следующий код на Python строит график важности используемых в модели признаков (рис.1) [8]:
import shap shap_test = shap.TreeExplainer(best_model).shap_values(df)
shap.summary_plot(shap_test, df, max_display=25, auto_size_plot=True)
Полученный график интерпретируется следующим образом [8]:
- значения слева от центральной вертикальной линии — это negative-класс (0), справа — positive (1) по матрице ошибок предиктивной ML-модели;
- толщина линии прямо пропорциональна количеству точек наблюдения;
- чем краснее точки, тем большее значение имеет признак в этой точке.
Таким образом, из этого графика можно сделать интересные выводы и проверить их адекватность [8]:
- чем меньше сотруднику повышают зарплату, тем выше вероятность его ухода;
- в некоторых регионах отток существенно выше;
- чем моложе сотрудник, тем выше вероятность его ухода.
На основании подобных выводов можно сформировать портрет уходящего сотрудника: он достаточно молод, холост, давно работает в одной должности без повышения зарплаты, не получает высоких годовых оценок и стал мало общаться с коллегами.
Аналогично можно определить наиболее значимые факторы индивидуального банкротства и спрогнозировать вероятность этого события для отдельного клиента. Рассмотрим SHAP-график из области финансового скоринга (рис.2) [3].
График на рисунке 2 интерпретируется следующим образом [3]:
- каждый клиент обозначен в виде точки;
- синим цветом отмечены клиенты с низким значением соответствующей переменной, а красным — с высоким;
- горизонтальная ось показывает влияние каждой переменной на предсказанную вероятность дефолта для отдельного клиента.
Такая диаграмма позволяет быстро оценить, насколько результаты моделирования соответствует ожиданиям или здравому смыслу. В рассматриваемом примере малое число предыдущих займов увеличивает предсказанную вероятность банкротства для большинства клиентов. А длительный стаж работы и высокий доход ведут к уменьшению вероятности дефолта. Примечательно, что SHAP позволяет не только выявить общие для всей выборки тенденции, но и объяснить результаты ML-моделирования для каждого конкретного случая.
В частности, объяснить предсказание банкротства определенного клиента с помощью отдельного графика, на котором распределены переменные, влияющие на прогноз. Предсказанная вероятность дефолта для этого клиента составляет 19%, что достаточно много. Наибольшее значение при этом играют невысокий доход и наличие открытого кредита. На рисунке 3 красным цветом выделены признаки, которые увеличивают целевую переменную, а синим – те, что ее уменьшают. Подобная диаграмма пригодится работнику банка или кредитному специалисту при оценке степени доверия к решению о выдаче займа, которое сформированно ML-моделью [3].
SHAP можно использовать и для веб-аналитики, например, чтобы выявить, какие именно факторы больше всего влияют на конверсию сайта Причем диаграммы рассеяния (ящики с усами) показывают значимые переменные более наглядно, чем типовые отчеты Яндекс.Метрики или Google.Analytics (рис. 4) [6].
Альтернативы, достоинства и недостатки векторов Шепли
Стоит отметить, что вектора Шепли – далеко не единственный метод интерпретации ML-моделей с целью показать влияние отдельных переменных на результат. На практике широко используются Partial Dependence Plots (PDP), Individual Conditional Expectation (ICE) plots, а также LIME (Local Interpretable Model-agnostic Explanations) [3]. Однако, например, LIME не гарантирует справедливое распределение таргетной переменной от предикторов. Более того, значение SHAP – единственный метод, который обеспечивает полное объяснение. Это особенно важно, когда закон требует объяснимости, например, право на объяснения в GDPR, упомянутое в начале статьи.
Также вектора Шепли допускают контрастные объяснения, позволяя сравнивать прогноз со подмножеством данных или отдельным случаем вместо среднего значения по всей выборке. Это свойство выгодно отличает метод SHAP от LIME, который предлагает локальную интерпретацию линейного поведения ML-модели. Наконец, ключевое преимущество SHAP – это наличие твердой математической базы с аксиомами и доказательствами [9].
Обратной стороной всех этих достоинств являются следующие недостатки [9]:
- долгое время вычислений, что на практике решается с помощью приблизительных значений (аппроксимаций). Точное вычисление значения Шепли дорого с точки зрения вычислений, поскольку существует 2k возможных коалиций значений признаков, и «отсутствие» элемента должно моделироваться созданием случайных экземпляров. Это увеличивает дисперсию для оценки значений Шепли. Экспоненциальное число коалиций решается путем выборки коалиций и ограничения числа итераций M. Уменьшение M сокращает время вычислений, но увеличивает дисперсию значения Шепли. Не существует хорошего эмпирического правила для числа итераций M, которое должно быть достаточно большим, чтобы точно оценивать значения Шепли, но достаточно маленьким, чтобы завершить вычисление за разумное время.
- значение Шепли может быть неверно истолковано. По сути, оценочное значение SHAP следует интерпретировать как вклад отдельной переменной в разницу между фактическим прогнозом и средним прогнозом с учетом текущего набора значений признаков.
- при редких объяснениях (небольшой исходной выборке) лучше использовать не обобщающий SHAP-подход, а локальный метод LIME.
- SHAP возвращает простое значение для объекта, но не для всей предиктивной модели, в отличие от LIME. Поэтому его не стоит использовать, чтобы делать заявления об изменениях в прогнозировании при изменении входных данных, например, «Если бы я зарабатывал еще 300 евро в год, мой кредитный рейтинг увеличился бы на 5 баллов».
- Для вычисления значений SHAP для новых данных нужен не только доступ к функции прогнозирования, но и данные для замены интересующей переменной значениями из случайно выбранных данных. Этого можно избежать, создавая экземпляры данных, похожие на реальные, но фактически не входящие в обучающую выборку.
- как и другие методы интерпретации, основанные на перестановках, SHAP зависит от включения нереалистичных данных при корреляции признаков. Чтобы симулировать, что значение свойства отсутствует в коалиции, мы изолируем его. Это нормально, пока признаки не зависят друг от друга. При взаимозависимости предикторов можно объединять их, получение для них одно общее значение Шепли. Или придется корректировать процедуру выборки данных с учетом зависимости характеристик.
Резюме
В качестве заключения стоит отметить, что, при всех своих возможностях анализа и визуализации ML-моделей, SHAP – это не серебряная пуля, которую можно применять всегда и везде без учета обстоятельств. В частности, значения SHAP не идентифицируют причинно-следственную связь, которая лучше всего определяется экспериментально или на основе аналогий [10]. Это соответствует высказыванию «после – не значит впоследствии», т.е. при интерпретации результатов машинного обучения с помощью библиотеки SHAP стоит помнить, что она показывает лишь степень влияния отдельных предикторов на целевую переменную, но не объясняет другие аспекты процесса Machine Learning: выбор архитектуры модели, настройку параметров нейросети и пр. Поэтому SHAP – это отличный инструмент для грамотного Data Scientist’а на финальном этапе, который может частично автоматизировать некоторые задачи, не снижая сложности всей работы в целом.
Источники
- https://medium.com/nuances-of-programming/python-библиотеки-для-интерпретируемых-моделей-машинного-обучения-1bac19599eaa
- https://www.gartner.com/smarterwithgartner/gartner-top-10-data-analytics-trends/
- https://rb.ru/opinion/uzhe-ne-black-box/
- https://ru.wikipedia.org/wiki/Теория_игр
- https://ru.wikipedia.org/wiki/Вектор_Шепли
- https://suilin.ru/post/conversion_factors/
- https://github.com/slundberg/shap
- https://habr.com/ru/post/428213/
- https://christophm.github.io/interpretable-ml-book/shapley.html
- https://towardsdatascience.com/explain-your-model-with-the-shap-values-bc36aac4de3d