Свен Стрингер для BigData Republic

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

Зачем беспокоиться?

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

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

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

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

Различные типы важности функций

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

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

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

В этом посте мы увидим примеры всех четырех классов важности функций: важность характеристик, специфичных для дерева ансамбля (для конкретной модели), пермутированная важность функции (глобальная независимая от модели), LIME (локальная модель, не зависящая от модели) и значения Шепли (локальная модель). модель-агностик).

Пример

Пришло время запачкать руки конкретным примером. Предположим, мы хотим классифицировать изображения ткани груди на доброкачественные и злокачественные. Чтобы обучить модель этому, мы используем Висконсинские данные о диагностике рака груди, доступные в репозитории машинного обучения UCI. Он включает диагностику (доброкачественные или злокачественные), а также 30 описательных клеточных характеристик 569 образцов ткани. Поскольку мы фокусируемся на важности функций, мы обучим единственную модель случайного леса, чтобы упростить задачу и понаблюдать за ее производительностью. В более реалистичных условиях было бы целесообразно использовать какую-либо схему перекрестной проверки, учитывая небольшой размер выборки.

Модельное обучение

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

Ноутбук включает в себя установку нестандартных зависимостей и должен работать "из коробки" в Google Colab. После загрузки данных и некоторой минимальной предварительной обработки мы обучаем случайную модель леса и наблюдаем довольно хорошую предсказательную способность в тестовом наборе: 99% площади под кривой; 93% точности).

Важность характеристик, зависящих от модели

Первый тип важности функции, который мы вычисляем, реализуется алгоритмом случайного леса в scikit-learn. Это мера важности характеристик для конкретных деревьев, которая вычисляет среднее уменьшение примесей по всем деревьям в лесу из-за каждой особенности. То есть функции, которые имеют тенденцию разделять узлы ближе к корню дерева, приведут к большему значению важности. Когда мы наносим на график важность всех функций ниже, мы видим, что наиболее важной характеристикой в ​​соответствии со встроенным алгоритмом является максимальное количество вогнутых точек, обнаруженных в ткани. Разделение узлов на основе этой особенности в среднем приводит к значительному уменьшению примесей узлов. Второй наиболее важной характеристикой является стандартное отклонение в точках вогнутости, которое по определению несколько коррелирует с первой характеристикой. В конце концов, большие максимальные значения количества вогнутых точек приведут к большим стандартным отклонениям.

Важность перестановочного признака

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

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

Хотя верхняя характеристика одинакова в обоих методах (максимальное количество вогнутых точек в наборе ячеек), второй по важности характеристикой теперь является «максимальное значение симметрии» вместо «стандартное отклонение в вогнутых точках». Поскольку максимальное значение и стандартное отклонение «количества вогнутых точек» коррелированы, можно предположить, что важность перестановки признаков с меньшей вероятностью приведет к выбору двух коррелированных верхних функций. Он более точно отражает добавленную стоимость функции при наличии всех других (возможно, коррелированных) функций в модели. Кроме того, он фокусируется на выбранной нами мере производительности AUC вместо примеси узлов.

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

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

ЛАЙМ

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

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

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

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

LIME показывает нам, что произошло бы с отдельным прогнозом, если бы он имел другие значения. Например, график выше предполагает, что если бы у этого человека была «средняя фрактальная размерность»

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

Аддитивные объяснения Шепли

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

Чтобы объяснить концепцию ценностей Шепли, давайте начнем со спортивной аналогии. Только что завершился чемпионат мира по футболу FIFA 2018. Франция выиграла у Хорватии в финале (4–2), и мы можем задаться вопросом, насколько каждый игрок внес свой вклад в победу Франции, чтобы справедливо распределить бонус победителя. Понятно, что четыре игрока, которые забили, сыграли важную роль. Столь же ясно, что команда не могла бы добиться успеха, если бы всех остальных игроков заменили на случайных. В конце концов, это - иногда сложное - взаимодействие всех игроков, которое определяет силу команды. Поэтому сложно определить добавленную стоимость отдельного игрока в контексте конкретной команды.

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

  1. Эффективно: сумма значений Шепли всех игроков должна равняться общей выплате.
  2. Симметричный: два игрока должны получить одинаковую выплату, если добавят одинаковое значение во все командные комбинации.
  3. Чувствительность к манекену: игрок должен получить нулевое значение Шепли, если он никогда не улучшает производительность подкоманд при его добавлении.
  4. Добавочная: в случае комбинированной выплаты (допустим, мы добавляем два игровых бонуса). Суммарное значение Шепли игрока в этих двух играх представляет собой сумму значений Шепли отдельной игры. Этот критерий не имеет соответствующей аналогии в контексте интерпретируемости модели.

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

Очевидно, что просмотр всех возможных подмножеств функций является недопустимым с точки зрения вычислений в большинстве реалистичных моделей с множеством функций. Вместо этого приближения значений Шепли могут быть вычислены на основе выборки. Для Python в пакете shap реализованы значения Шепли, а также несколько (частично интерактивных) графиков для изучения значений Шепли по различным функциям и / или предметам.

На рисунке ниже показано распределение Шепли по испытуемым в тестовом наборе для каждой функции. Это снова показывает, что максимальное количество вогнутых точек является наиболее отличительной особенностью. Большинство испытуемых имеет ненулевое значение Шепли. Знак показывает, изменило ли значение признака прогноз в сторону злокачественного (положительный SHAP) или доброкачественного (отрицательный SHAP). Цвет отражает порядок значений характеристик (низкий, средний, высокий). Таким образом, график сразу же показывает, что низкие (синие) значения десяти основных характеристик уменьшают вероятность прогноза злокачественной опухоли.

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

Заключение

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

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

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

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

Об авторе

Свен Стрингер - специалист по анализу данных в BigData Republic », консалтинговой компании в области науки о данных из Нидерландов. Мы нанимаем лучших из лучших в BigData Science и BigData Engineering. Если вы заинтересованы в использовании показателей важности функций и других методов машинного обучения в практических случаях использования, не стесняйтесь обращаться к нам по адресу [email protected].

Благодарности