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

  • В Разделе 1 мы мотивируем потребность в индивидуальном объяснении прогнозов, сделанных классификаторами машинного обучения, и комментируем, почему наиболее продвинутые методы обычно наименее прозрачны.
  • В Разделе 2 мы рассматриваем предыдущие работы в этой области, в частности, пакет LIME.
  • В разделе 3 мы подробно представляем наш алгоритм генерации объяснений и комментируем его общность и масштабируемость.

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

1. Продвинутые модели машинного обучения и их объяснительная сила (или ее отсутствие)

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

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

Черный ящик продвинутых моделей машинного обучения привел как минимум к двум нежелательным последствиям:

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

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

2. Предыдущая работа

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

С этого момента мы будем использовать термин объяснение в точном смысле: учитывая набор экземпляров оценки x [i ] , i = 0, 1,… и двоичный классификатор C, присваивая каждому экземпляру вероятность p [i] = C (x [i]) , что он принадлежит к положительному классу, объяснение этого прогноза представляет собой массив e действительных чисел размерности f, где f - количество функций (переменных). В символах

В этом массиве j- -й компонент интерпретируется как мера важности или вклада j-го признака в вероятность p [я] . Таким образом, объяснение - это функция двух вещей; классификатор, используемый для создания прогноза, и экземпляр, к которому применяется классификатор.

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

В этом направлении уже есть важный вклад. Возможно, наиболее примечательным и наиболее известным является пакет LIME (видео, бумага), который можно использовать для объяснения прогнозов любого классификатора. LIME означает L ocal I интерпретируемый M не зависящий от модели E Пояснения. Он обеспечивает независимость от модели y, создавая локально линейную модель машинного обучения для каждого экземпляра x [i], который нужно объяснять, и преобразуя важность функций этой модели в качестве объяснения формы выше. Чтобы создать эту локально линейную модель, сначала создайте M (порядка сотен) выборок окрестностей вокруг x [ i], оценивая классификатор для каждого из них, а затем подбирая модель для созданных таким образом прогнозов M.

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

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

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

3. Простой алгоритм для получения объяснений для предсказаний одного дерева.

Во-первых, давайте рассмотрим случай простого двоичного дерева классификации T, которое уже было обучено на множестве примеров. Пусть t обозначает общее количество узлов в этом дереве, индексированных от 0 до t -1, причем 0 соответствует корню дерева. Ключевым фактом является то, что на каждом узле в этом дереве есть отдельная функция, на которой основывается решение идти влево или вправо. Таким образом, у нас есть соответствующие функции {f [0], f [1],…, f [t - 1]}, каждый из которых является простым индексом в наборе {0,1,…, f-1}

Учитывая экземпляр x [i], который нужно оценить и объяснить, способ сделать прогноз - прогнать его по дереву, следуя пути узлов, который заканчивается на лист.

Точный путь, конечно, зависит от значений характеристик данного экземпляра. Пусть этот путь описывается последовательностью индексов узлов, через которые он проходит:

Теперь для любого узла n давайте определим p [n] a s эмпирическую вероятность того, что экземпляр в обучающий набор принадлежит к положительному классу при условии, что путь экземпляров проходит через узел n.

Обратите внимание, что с использованием приведенных выше обозначений оценка дерева вероятности того, что x [i] принадлежит к положительному классу, дается выражением

С другой стороны, p [0] - отзыв 0 обозначает корень дерева - соответствует безусловной вероятности того, что x [i] принадлежит положительный класс .

Следуя пути x [i] по дереву, мы можем разложить его оценку вероятности как сумму p [0] и серии приращений вероятности

Обратите внимание, что s -я дельта вероятности соответствует сегменту пути, который прошел от узла n [s - 1 ] к узлу n [s] и, таким образом, c может быть отнесен к функции, используемой на n [s -1] , чтобы перейти к последнему узлу.

Основываясь на этом наблюдении, мы можем определить массив объяснения следующим образом:
j -й компонент для j в {0,1,… p-1} , массива объяснения получается как сумма дельт вероятностей, приписываемых признаку j из предыдущей суммы. В символах

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

3.1 Расширение классификаторов древовидных ансамблей

Проницательный читатель наверняка поймет на этом этапе, что определение массива объяснений, представленное выше, естественным образом распространяется на любой классификатор, который производит предсказание как линейную комбинацию предсказаний отдельных деревьев. Предположим, нам дан такой классификатор C, состоящий из деревьев A, T [0], T [ 1],…, T [A -1], соответствующие веса w [0], w [1 ],…, w [A -1], и функция прогнозирования, заданная как

Затем массив объяснений может быть вычислен как взвешенная сумма массивов объяснений, вычисленных для каждого из отдельных деревьев:

3.2 Замечание о сложности и масштабируемости

Предполагая, что условные вероятности p [n] доступны, стоимость вычисления всех компонентов массива объяснений e [j ], для j в 0,…, f, для любого данного экземпляра x [i ] с помощью ур. 4 - это всего лишь O (n_c) (напомним, что n_c - это длина пути в дереве), поскольку этого достаточно, чтобы пройти через x [i] ' s и обновляйте соответствующий компонент e по мере продвижения. Следовательно, вычисление массива объяснений для экземпляра по существу имеет такую ​​же сложность, как и вычисление предсказания этого экземпляра.

Между прочим, как процедура оценки дерева scikit-learn, так и реализация дерева решений в библиотеке Spark 2.2 ml, производят и сохраняют в пределах оцененных деревьев эти значения p [.] .

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

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