Как объяснить свою модель понятным для человека способом

Важной частью роли специалиста по данным является объяснение прогнозов моделей. Часто человек, получающий объяснение, не является техническим специалистом. Если вы начнете говорить о функциях стоимости, гиперпараметрах или p-значениях, вас встретят пустыми взглядами. Нам нужно перевести эти технические концепции на язык непрофессионала. Этот процесс может оказаться более сложным, чем построение самой модели.

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

Локальные и глобальные объяснения

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

В некоторых случаях вас могут попросить объяснить модель в целом. Мы называем это глобальным объяснением. Мы хотим понять, какие тенденции улавливает модель в целом. Возможно, нам придется ответить на такие вопросы, как «какие функции наиболее важны?» или «Какие отношения имеет функция X с целевой переменной?»

В других случаях нам нужно будет дать местные пояснения. Это когда мы объясняем прогнозы отдельных моделей. На самом деле нам обычно приходится объяснять решение, принятое в результате предсказания модели. Эти объяснения также могут быть ответами на такие вопросы, как «Почему мы отклонили эту заявку на получение кредита?» или «почему мне порекомендовали этот фильм?»

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

Характеристики хорошего объяснения

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

Истинный

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

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

Ориентирован на целевую аудиторию

То, как вы формулируете вещи, важно. Мы отклонили ваш кредит, потому что — «Вы криптовалютный трейдер», «Вы работаете в рискованной отрасли» или «Ваш доход слишком нестабилен». Это все те же причины, но сформулированные по-разному. Некоторые способы формулировки лучше донесут вашу точку зрения. Некоторым также могут показаться оскорбительными определенные способы. Например, первое объяснение может быть воспринято лично.

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

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

Количество причин

Людям нужны только основные причины события. «Почему инфляция такая высокая?» — «Потому что цены на нефть выросли». На самом деле инфляция может быть вызвана комбинацией факторов, включая рост заработной платы, увеличение государственных расходов или обменный курс. Однако они, возможно, не оказали такого значительного влияния, как рост цен на энергию.

Когда дело доходит до машинного обучения, люди не хотят знать, как каждая функция модели повлияла на прогноз. Как правило, достаточно объяснить вклад от от 1 до 3 функций. Вопрос в том, какой вклад вы выберете для объяснения? Следующие 4 характеристики помогут вам выбрать наиболее подходящие причины.

Значительный

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

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

Общий

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

Для ML мы можем найти общие объяснения, взглянув на некоторую меру важности функции. Например, важность функции перестановки. Со значениями SHAP мы можем посмотреть на среднее абсолютное значение SHAP. Какой бы ни была мера, высокое значение указывает на то, что функция в целом внесла значительный вклад.

Аномальный

В других случаях уважительной причиной может быть необычная причина. Это могло бы объяснить значительный вклад в конкретное решение. Однако в целом они не смогли бы объяснить решения. «Почему вы отклонили мою заявку на кредит?» — «Потому что вы криптовалютный трейдер». Эти причины могут быть приняты, поскольку они более личные. То есть человек может понять, как конкретно на него это повлияло.

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

контраст

Часто нам нужно будет объяснить решение в отличие от другого решения. Клиент не может спрашивать: «Почему моя заявка была отклонена?» но «Почему моя заявка была отклонена, а их — принята?» Возможно, оба клиента имеют высокий существующий долг. Эта причина могла быть принята для первого вопроса, но не для второго. Другими словами, нам нужно будет указать причину, которая будет отличать два решения.

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

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

Объяснение модели с помощью SHAP

Если вы новичок в SHAP, посмотрите видеониже. Если вы хотите узнать больше, ознакомьтесь с моим Курсом SHAP. Вы можете получить бесплатный доступ, если подпишитесь на мою Информационную рассылку :)

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

Мы не будем останавливаться на коде, но вы можете найти полный проект на GitHub. Подводя итог, мы начинаем с разработки некоторых функций. Мы преобразуем пол и курильщик в двоичные признаки. region может принимать 4 разных значения, поэтому мы создаем 4 фиктивные переменные из этого столбца. Всего у нас остается 9 функций модели. Мы используем их для обучения модели XGBoost для прогнозирования платежей. После обучения нашей модели мы вычислили значения SHAP для каждого прогноза.

Для каждого прогноза будет значение SHAP для каждой функции. Значение SHAP дает вклад этой функции в прогноз. Другими словами, насколько функция увеличила или уменьшила прогнозируемые расходы. Чтобы понять, какие функции важны, мы можем посмотреть на Рисунок 2. Здесь мы взяли абсолютное среднее значений SHAP по всем прогнозам. Высокое среднее значение указывает на то, что функция в целом внесла большой вклад в прогнозы.

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

Попробуем объяснить наше первое предсказание. Вы можете увидеть каскадный график SHAP для этого прогноза на рис. 3. Глядя на ось X, мы видим, что базовое значение равно E[f(x)] = 12 813. Это среднее прогнозируемое значение платы для всех клиентов. Конечным значением является f(x) = 26726. Это прогнозируемые расходы для этого конкретного клиента. Значения SHAP — это все значения между ними. Они говорят нам, как каждая функция увеличила или уменьшила прогноз по сравнению со средним прогнозом.

Глядя на Рисунок 3, мы видим, что курильщик является наиболее важной функцией. То есть он увеличил прогнозируемые сборы на наибольшую сумму. Значения признаков даны по оси Y. Например, мы можем видеть, что «1 = курильщик» указывает на то, что этот клиент курит. Таким образом, если клиент спросил: «Почему моя страховка такая высокая?», хорошим объяснением может быть «Вы курите». Мы также увидели, что на Рис. 2 это была веская общая причина.

Таким образом, курение является одновременно существенной и общей причиной. Этого может быть достаточно, чтобы убедить человека в правильности этого страхового платежа. Если бы мы хотели быть уверенными, мы могли бы упомянуть вторую наиболее важную особенность. Глядя на ось Y, мы видим, что человеку 62 года. Следовательно, мы могли бы добавить вторую причину: «и вы стары». (Возможно, мы захотим сформулировать это более красиво.)

По этой второй причине мы угадали связь с целевой переменной. То есть по мере того, как возраст увеличивается, ваши платежи увеличиваются. Отношения для других признаков могут быть не столь очевидны. Это означает, что для того, чтобы привести веские причины, нам нужен некоторый контекст для значений функций. Для этого мы можем использовать точечную диаграмму значений SHAP. Глядя на Рисунок 4, мы видим, что наше предположение было верным. По мере увеличения возраста значения SHAP увеличиваются. Другими словами, прогнозируемые сборы увеличиваются.

На Рис. 5 показан каскадный график для второго прогноза. Чтобы объяснить это, мы можем сразу перейти к возрасту клиента. Однако обратите внимание, что дети также внесли значительный вклад. Помните, как мы видели на Рис. 2, что эта функция в целом не имеет значения. Другими словами, количество иждивенцев может быть уважительной ненормальной причиной. Вместо этого мы можем предпочесть указать это в качестве основной причины.

По своей природе значения SHAP позволяют давать противоположные объяснения. Однако это только в том случае, если мы хотим сравнить прогнозы со средним прогнозом. Легко ответить на такие вопросы, как «Почему мой заряд выше среднего?». Чтобы ответить на такие вопросы, как «Почему мой заряд выше, чем у моих сестер?» потребуется больше работы. Существуют и другие подходы к вычислению значений SHAP, которые могут упростить эту задачу. Например, базовый SHAP будет рассчитывать значения относительно конкретное предсказание.

Мы сосредоточились на использовании значений SHAP для объяснения индивидуальных прогнозов. Их также можно использовать для глобальных объяснений. Это объясняет, как модель работает в целом. Мы делаем это, агрегируя значения SHAP и создавая различные графики. Одну мы уже видели — имею в виду SHAP сюжет. Мы обсуждаем больше в статье ниже. Мы также обсудим код Python для вычисления значений SHAP и создания этих графиков.



Я надеюсь, что вы нашли эту статью полезной! Вы можете поддержать меня, став одним из моих приглашенных участников. Вы получите доступ ко всем статьям на Medium, а я получу часть вашего гонорара.



Вы можете найти меня на | Твиттер | Ютуб | Информационный бюллетень — подпишитесь на БЕСПЛАТНЫЙ доступ к Курсу Python SHAP

Источники изображений

Все изображения мои собственные или взяты с www.flaticon.com. В случае последнего у меня есть Полная лицензия, как определено в их Премиум-плане.

Набор данных

М. Чой, Наборы персональных данных о медицинских расходах (Лицензия — База данных: открытая база данных) https://www.kaggle.com/datasets/mirichoi0218/insurance/metadata

Рекомендации

К. Молнар, Интерпретируемое машинное обучение, 2021 г., https://christophm.github.io/interpretable-ml-book/explanation.html

Т. Миллер, Объяснение в искусственном интеллекте: взгляды социальных наук, 2017 г., https://arxiv.org/abs/1706.07269

С. Лундберг и С. Ли, Единый подход к интерпретации модельных прогнозов, 2017 г., https://arxiv.org/pdf/1705.07874.pdf