Перейти к основному содержимому

Локальное объяснение интерпретируемой моделью

Алгоритм LIME

Метод LIME (local interpretable model-agnostic explanations [1]) позволяет объяснить прогноз сложной модели f(x)f(\mathbf{x}) для интересуемого объекта x\mathbf{x} за счёт аппроксимации прогнозов этой модели другой простой и интерпретируемой моделью в окрестности точки x\mathbf{x}.

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

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

Метод LIME работает следующим образом:

  1. Выбрать объект x\mathbf{x}, для которого нужно объяснить прогноз сложной модели f(x)f(\mathbf{x}).

  2. Сгенерировать выборку, состоящую из локальных вариаций x~1,x~2,...x~K\widetilde{\mathbf{x}}_{1},\widetilde{\mathbf{x}}_{2},...\widetilde{\mathbf{x}}_{K} объекта x\mathbf{x}.

  3. Построить для вариаций прогнозы сложной моделью f()f\left(\cdot\right), получив выборку:

    {[x~1,f(x~1)]; [x~2,f(x~2)]; ...[x~K,f(x~K)]}\left\{ \left[\widetilde{\mathbf{x}}_{1},f\left(\widetilde{\mathbf{x}}_{1}\right)\right];~\left[\widetilde{\mathbf{x}}_{2},f\left(\widetilde{\mathbf{x}}_{2}\right)\right];~...\left[\widetilde{\mathbf{x}}_{K},f\left(\widetilde{\mathbf{x}}_{K}\right)\right]\right\}
  4. Взвесить объекты по близости к x\mathbf{x} (чем вариация ближе, тем её вес больше):

    {[w1,x~1,f(x~1)]; [w2,x~2,f(x~2)]; ...[wK,x~K,f(x~K)]}\left\{ \left[w_{1},\widetilde{\mathbf{x}}_{1},f\left(\widetilde{\mathbf{x}}_{1}\right)\right];~\left[w_{2},\widetilde{\mathbf{x}}_{2},f\left(\widetilde{\mathbf{x}}_{2}\right)\right];~...\left[w_{K},\widetilde{\mathbf{x}}_{K},f\left(\widetilde{\mathbf{x}}_{K}\right)\right]\right\}
  5. Настроить интерпретируемую модель g(x)g\left(\mathbf{x}\right) по взвешенной выборке (чем вес выше, тем объект учитывается сильнее).

  6. Исследовать интерпретируемую модель, аппроксимирующую прогноз сложной модели для точки x\mathbf{x}.

Этапы работы алгоритма визуализированы ниже на графиках A,B,C,D [2]:

LIME.png

Процесс сэмплирования объектов, похожих на заданный, зависит от характера объектов:

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

  • Для текста можно включать/исключать отдельные слова.

  • Для изображения - включать/исключать отдельные суперпиксели (области соседних пикселей, примерно похожих по цвету [3]).

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

L1-регуляризация используется для сокращения числа признаков. Альтернативно для этого можно использовать OMP-регрессию или другой метод отбора признаков, такой как forward-selection (последовательный выбор самых важных признаков) или backward-selection (последовательное исключение самых незначимых).

Контроль ошибки аппроксимации

Cтоит помнить, что простая интерпретируемая модель является лишь аппроксимацией сложной модели, поэтому важно контролировать качество её аппроксимации. Например, для задачи регрессии это может быть ошибка аппроксимации относительно ошибки аппроксимации константой:

ApproxError=1Kk=1K(f(xk)g(xk))21Kk=1K(f(xk)1Kk=1Kf(xk))2\text{ApproxError}=\sqrt{\frac{\frac{1}{K}\sum_{k=1}^{K}\left(f\left(\mathbf{x}_{k}\right)-g\left(\mathbf{x}_{k}\right)\right)^{2}}{\frac{1}{K}\sum_{k=1}^{K}\left(f\left(\mathbf{x}_{k}\right)-\frac{1}{K}\sum_{k=1}^{K}f\left(\mathbf{x}_{k}\right)\right)^{2}}}

Если ошибка аппроксимации высока, нужно либо усложнять аппроксимирующую модель (увеличивая глубину дерева или увеличивая число признаков, ослабляя L1-регуляризацию), либо уменьшить окрестность сэмплируемых вокруг интересующего объекта x\mathbf{x} точек (которую при прочих равных лучше брать побольше, чтобы описать поведение исходной модели в более широкой области).

Примеры использования

Классификация текста

В [1] представлена интерпретация бинарного классификатора документа из подмножества документов датасета 20-news-groups [4], относящихся к классам christianity и atheism:

Самые значимые слова показаны слева, а начало документа - справа. Хотя классификация корректна, модель использовала нерелевантные слова Posting, Host и Re, не имеющие никакого отношения к темам христианства и атеизма! Подобный анализ позволяет выявить переобученные модели, даже если они показывают хорошее качество прогнозов.

Классификация изображений

Метод LIME можно использовать и для интерпретации моделей, классифицирующих изображения по объектам, которые на них показаны. Для этого можно сложную модель, такую как Google inception network, аппроксимировать линейным классификатором, использующим небольшое число суперпикселей. Пример подобной интерпретации для наиболее вероятных классов приведён ниже [1]:

LIME-image-classification.png

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


Метод LIME на python реализован в одноимённой библиотеке. Детальнее о методе можно почитать в [2], а также в оригинальной статье [1].

Литература

  1. Ribeiro M. T., Singh S., Guestrin C. " Why should i trust you?" Explaining the predictions of any classifier //Proceedings of the 22nd ACM SIGKDD international conference on knowledge discovery and data mining. – 2016. – С. 1135-1144.

  2. Molnar C. Interpretable machine learning. – Lulu. com, 2020: LIME.

  3. Medium.com: superpixels and SLIC.

  4. UC Irvine Machine Learning Repository: twenty newsgroups dataset.