Интерпретируемость модели

Искусство Sprezzatura для машинного обучения

Обзор создания интерпретируемых моделей

Спреццатура — это искусство придания естественности и блеска чему-либо. На картинке выше Каран заботится о том, чтобы круассан выглядел естественно. Точно так же требуется тяжелая работа, чтобы превратить модель машинного обучения в несколько правил. Вместо этого специалисты по данным создают сложные ансамбли из 107 моделей, чтобы получить рекомендательный контент Netflix. Мы видим модели глубокого обучения, хвастающиеся 100% точностью, которые при внимательном рассмотрении полны методологических недостатков.

В этом посте мы пытаемся применить искусство sprezzatura к машинному обучению. Помимо того, что ваши модели станут более стильными, они станут более простыми для понимания, широко распространенными и простыми в развертывании.

Основная часть этого поста оценивает четыре общих подхода к интерпретируемым моделям, начиная с наиболее гибких и точных подходов и переходя к самым простым подходам. Некоторые из них близки к производительности ансамблевой модели AutoML «черный ящик»! Подходы включают алгоритм подбора правил, алгоритм GA2M (обобщенные аддитивные модели плюс взаимодействия), алгоритмы списка правил и подходы с использованием системы показателей. Набор данных для взрослых используется в качестве эталона. На этом графике показан краткий обзор окончательных результатов.

Осторожно, спойлер: два из интерпретируемых подходов оказались равными или чуть ниже многоуровневой ансамблевой модели AutoML, состоящей из 20 отдельных моделей!

Структура этого поста:

  • Зачем использовать интерпретируемые модели
  • Построение базовых моделей
  • Алгоритм подбора правил
  • Алгоритм GA2M
  • Модели наборов правил
  • Модели системы показателей

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

Зачем использовать интерпретируемые модели

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

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

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

Во-первых, самые точные модели часто неприменимы в условиях предприятия. Модель-победитель конкурса Netflix за 1 миллион долларов стала ансамблем из 107 других моделей. Хотя эта модель была лучшей по точности, она была слишком сложной для реализации Netflix.

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

Альтернативой является начало с интерпретируемой модели. Давайте рассмотрим практическую задачу, а затем применим интерпретируемые модели.

Проблема: прогнозирование дохода

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

Базовые модели

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

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

Я собираюсь начать с использования трех разных алгоритмов для базовой линии. Да, три! Все они имеют разное применение, и полезно использовать их все. Это логистическая регрессия, составной ансамбль AutoML и модель на основе правил OneR.

Логистическая регрессия

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

Для этого набора данных я построил модель логистической регрессии (LR) с помощью нескольких команд, используя пакет H2O с открытым исходным кодом:

glm_model = H2OGeneralizedLinearEstimator(family= "binomial", lambda_ = 0, compute_p_values = True, remove_collinear_columns = True)
glm_model.train(x, y, training_frame= train, validation_frame=valid)

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

Результаты модели:

  • LR (6 числовых признаков): модель логистической регрессии с AUC 0,83.
  • LR (6 числовых и 6 категориальных признаков): Одно горячее кодирование категориальных признаков привело к 100 предикторам для модели логистической регрессии с AUC 0,91.

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

Прозрачность модели логистической регрессии часто заставляет людей думать, что ее легко понять. Однако это не всегда так. Добавление большого количества функций, особенно при наличии мультиколлинеарности, может очень затруднить понимание модели логистической регрессии. Исследование Poursabzi-Sangdeh показало, что переход от 2 функций к 8 оказал заметное влияние на понятность модели. Таким образом, хотя коэффициенты и полезны, они не являются панацеей, когда целью является легко понятная модель.

Составной ансамбль AutoML

AutoML позволяет нам быстро сравнивать различные типы разработки функций и алгоритмов. Я использую AutoML H2O для создания претендента.

aml = H2OAutoML(max_models=20, seed=1)
aml.train(x=x, y=y, training_frame=train)

Результаты модели:

  • AutoML H2O: лучшая модель представляла собой совокупность всех 20 моделей с AUC 0,93.

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

OneR

OneR строит модель по одному признаку. Это чрезвычайно интерпретируемо и очень просто. По сути, это дерево решений только с одним разделением. Модель работает, просматривая все функции и выбирая одну функцию для окончательной модели. Вы можете найти несколько реализаций OneR для R и python.

from imodels import OneRClassifier,
clf = Pipeline(steps=[('preprocessor', preprocessor),
                      ('classifier', OneRClassifier())])
clf.fit(X_train, y_train)

Выполнение этого на наборе данных для взрослых дает нам простое правило:

Если прирост капитала превышает 5 178 долларов, то весьма вероятно, что у человека высокий доход.

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

Резюме базовых показателей

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

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

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

Правило

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

H2O недавно добавила реализация правил, и она быстро стала моей любимой. Начнем с построения простой модели с использованием 5 правил.

from h2o.estimators import H2ORuleFitEstimator
# Build and train the model:
rfit = H2ORuleFitEstimator(max_num_rules=5,seed=1,
                           model_type='rules')
rfit.train(training_frame=train, x=x, y=y,validation_frame=valid)

Давайте теперь покажем вам правила, созданные моделью:

Подобно модели логистической регрессии, для данного прогноза вы должны определить коэффициенты/правила, связанные с прогнозом. Например, главное правило применяется, когда образование меньше 13 лет, прирост капитала меньше 7031 доллара США, а отношения — «Не в семье», «Другой родственник», «Собственный ребенок», «Незамужем». Это самое сильное правило для прогнозирования низкого дохода в наборе данных для взрослых.

Производительность этой модели не велика. Подбор правил с 5 правилами дает производительность 0,80 AUC на тестовом наборе. Вероятная проблема заключается в том, что подбор правил представляет собой подход дерева решений, что означает, что он создает разбиения в непрерывных данных. Глядя на правила, вы видите смесь категорических, например. отношения и непрерывные, например. прирост капитала. С пятью правилами действительно сложно зафиксировать эти непрерывные функции.

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

Линейные правила довольно просты для понимания. Например, по мере увеличения уровня образования и возраста увеличивается вероятность предсказания высокого дохода.

Это подтверждает наличие сильных линейных эффектов для этого набора данных. Производительность подскочила с 0,80 до 0,88 за счет добавления линейных эффектов. Любой метод, основанный только на нескольких деревьях решений, будет иметь ограниченную производительность. Давайте теперь изменим количество правил и оценим, как они влияют на производительность модели. Вот некоторые результаты:

Чтобы проиллюстрировать гибкость Rulefit, я построил ряд моделей с AUC и сложностью. OneR имеет сложность 2, тогда как LR со 100 предикторами имеет сложность 100. Для моделей Rulefit сложность была числом правил, умноженным на три (поскольку для каждого правила разрешалось три функции).

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

GA2M

Обобщенная аддитивная модель (GAM) — это интерпретируемая модель, которая столь же прозрачна, как модель логистической регрессии, но может быть более точной. Модель GA2M — это GAM, включающая термин взаимодействия. Добавление этого члена взаимодействия обычно улучшает прогностическую эффективность.

О модели GA2M я узнал, работая в DataRobot, у которой отличная реализация. Реализация GA2M с открытым исходным кодом доступна в пакете interpretML от Microsoft. Давайте рассмотрим это с набором данных для взрослых. Подобрать модель несложно:

ebm = ExplainableBoostingClassifier(random_state=42)

Глядя на объект модели с набором данных Adult, вы увидите следующий список функций:

ebm.feature_names
[‘age’, ‘workclass’, ‘fnlwgt’, ‘education’, ‘education_num’, ‘marital_status’, ‘occupation’, ‘relationship’, ‘race’, ‘sex’, ‘capital_gain’, ‘capital_loss’, ‘hours_per_week’, ‘native_country’, ‘relationship x hours_per_week’, ‘age x relationship’, ‘marital_status x hours_per_week’, ‘occupation x hours_per_week’, ‘education_num x occupation’, ‘age x capital_loss’, ‘fnlwgt x education_num’, ‘education x capital_loss’, ‘age x fnlwgt’, ‘occupation x relationship’]

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

Для набора данных Adult эти функции взаимодействия обеспечивают повышение производительности с AUC 0,93. Это действительно хорошо! Это сопоставимо с многоуровневой моделью ансамбля.

Полученная модель прозрачна со всеми доступными коэффициентами. Можно даже составить рейтинговую таблицу, в которой указан коэффициент фактора для каждого уровня фактора. Пакет InterpretML также включает в себя визуализации, так что вы можете убедиться в этом сами. Здесь мы видим разные коэффициенты для семейного_статуса.

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

Списки правил

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

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

Отличной отправной точкой для реализации списков правил является интерпретируемый пакет моделей машинного обучения (imodels). Я начал с хорошо известного подхода Certifiably Optimal RulE ListS (CORELS), но у меня возникли проблемы с установкой в ​​моей среде Python 3.7+, и он был слишком медленным, чтобы построить что-либо, кроме очень простого списка правил, в наборе данных для взрослых.

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

sbrl_model <- sbrl(data_train, iters=30000, pos_sign="1",
                   neg_sign="0", rule_minlen=1, rule_maxlen=1, 
                   minsupport_pos=0.003, minsupport_neg=0.003, 
                   lambda=10.0, eta=1.0, nchain=10)
print(sbrl_model)

Выполнение этого кода заняло всего несколько секунд с использованием rule_maxlen=1. Вот результаты:

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

Модель со списком правил имеет AUC 0,86, что является заметным улучшением по сравнению с AUC 0,80, полученным с помощью подбора правил с 5 правилами. Однако поиск этого лучшего решения требует дополнительных вычислений для расчета этого наилучшего набора правил. Можно улучшить производительность, увеличив максимальную длину правила модели SBRL до 2. Это повысило производительность до 0,87 AUC. Это приводит к более сложным правилам:

если {образование-число=(4.75,8.5],семейное-состояние=Женатый-гражданский-супруг}, то положительная вероятность = 0,14173228

Увеличение максимальной длины правила увеличивает пространство поиска. Переход к длине правила, равной 2, потребовал значительно больше времени для расчета. Вычисление длины правила 3 ​​было невозможно на моем ноутбуке.

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

Система показателей

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

Разработка оптимальных систем показателей с помощью машинного обучения может быть сложной вычислительной задачей. Широко известен метод использования суперразреженных линейных целочисленных моделей (SLIM). Для этого поста я использовал функцию системы показателей в Пакете OptBinning. Диапазоны баллов в оценочной таблице варьируются от 0 для самой низкой вероятности дохода до 100 для самого высокого дохода.

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

Следующие шаги

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

Я надеюсь, что этот пост добавит немного sprezzatura в ваше машинное обучение. Потратьте время, чтобы понять свою проблему, поработать с вашими данными и посмотреть, подходят ли они для более простой интерпретируемой модели.

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

Я получил отличные отзывы от многих людей, включая Джонатана Дальберга, Тейлора Ларкина, Чандана Сингха, Майлза Адкинса, Дэйва Хейнике и Нишанта Ганди. Так что большое им всем спасибо.

Вы также можете подписаться на меня в Twitter или LinkedIn и найти старые записи блога на сайте моих проектов.