Изменения

Перейти к: навигация, поиск

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

2087 байт добавлено, 19:19, 4 сентября 2022
м
rollbackEdits.php mass rollback
=== Когда нужна интерпретируемость ===
* Когда целью является получение каких-либо знаний с помощью изучения построенной модели.
* Когда алгоритм оптимизировал неполную цель. Например, когда автомобильный инженер получает предсказания о параметрах двигателя, но ему нужно построит в целом достаточно хороший и надёжный автомобиль.
* Для безопасности сложных систем. Такие системы, в большинстве случаев, нельзя протестировать от начала до конца. Вычислительно тяжело просмотреть все возможное входные данные и сценарии развития событий.
 
* Интерпретация тренировных данных, поиск выбросов в них.
 
* Поиск ошибок в выводе модели.
 
* Пользователь может больше доверять модели.
=== Когда интерпретируемость не требуется ===
* Необходимость скрыть систему (кому давать кредит, качество работы сотрудника, поисковое ранжирование).
 
== Классификая моделей ==
* Post-Hoc (воспринимает модель как "черный ящик", например, нейросеть) vs Intrinsic (накладывают ограничения на сложность самой модели).
* Специфические (работают только для конкретной архитектуры модели) vs агностические (можно применить ко всем моделям для решения конкретной задачи).
* Локальные (позволяют понять предсказание для конкретного объекта) vs глобальные (понимание в целом, какие признаки влияют на предсказание).
== Примеры моделей ==
== Способы создания интерпретируемой модели ==
=== Использовать только интерпретируемые модели (англ. Transparent Models): ===
[[Файл:Int2acc.jpg|thumb|400px| рис. 1. Зависимость интерпретируемости от точности.]]
=== Важность признаков ===
Одна из возможностей проанализировать модель {{---}} оценить, насколько её решение зависит от отдельных признаков, какой признак внёс наибольший вес для нахождения решения модели.
Отчётливо это можно понять благодаря следующему примеру. Модель определяет кто на картинке собака или волк. Допустим выборка для обучения оказалось не самой удачной, и все картинки с волками были на снегу, а с собаками на асфальте. Соответственно модель могла начать определять собаку или волка по асфальту или снегу. Благодаря данному виду интерпретации, модель нам можешь сказать, что главным признаком для принятия решения было не само животное, а её окружение.
Одна Данную идею реализуют с помощью значений Шепли. Значения Шепли (англ. Shapley values) {{---}} метод из реализацией данной идеи является библиотека '''SHAP'''коалиционной теории игр, который помогает определить, как наиболее честно распределить выигрыш между игроками в зависимости от их вклада в победу. Игроки объединяются в коалиции, чтобы полуучить некоторую выгоду от этого объединения. В машинном обучении в качестве игроков выступают признаки, а в качестве выигрыша {{---}} вклад в предсказание. Подходит для задач классификации и регрессии. Из вклада коалиций рассчитывается вклад каждого признака в итоговый прогноз. Значение Шепли {{---}} среднее между маргинальными вкладами всех возможных коалиций<ref name="Shapley Values">Формулы смотрите здесь [https://christophm.github.io/interpretable-ml-book/shapley.html]</ref>.
На основе значений Шепли Люндебергом и Ли предложен метод '''SHAP''' (англ. SHapley Additive exPlanations) {{---}} это библиотека, которая для оценки важности признаков рассчитываются значения Шэплиобъясняющий индивидуальные предсказания. Доступна его реализация на Python <ref name="ShapleySHAP">Статья в википедии о значениях Шэпли Реализация SHAP [https://engithub.wikipedia.orgcom/wikislundberg/Shapley_valueshap]</ref> (происходит оценка предсказаний модели с и без данного признака).
Важность i-го признака здесь вычисляется по такой формуле:<ref name="exp"> Реализация Shap [https://github.com/slundberg/shap]</ref>
<math>\begin{equation*} \phi_{i}(p) =\sum_{S \subseteq \{1,2..n\} / \{i\}} \frac{|S|!(n - |S| -1)!}{n!}(p(S \cup \{ i \}) - p(S)) \end{equation*}</math><ref name="habr">Павел Трошенков "Как интерпретировать предсказания моделей в SHAP" [https://habr.com/ru/post/428213]</ref>,
[[Файл:Lime.png|thumb|400px| рис. 2. Построение локальной суррогатной модели<ref name="img">Александр Дьяконов "Интерпретации чёрных ящиков" Рис.11 [https://dyakonov.org/2018/08/28/%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BF%D1%80%D0%B5%D1%82%D0%B0%D1%86%D0%B8%D0%B8-%D1%87%D1%91%D1%80%D0%BD%D1%8B%D1%85-%D1%8F%D1%89%D0%B8%D0%BA%D0%BE%D0%B2/]</ref>.]]
'''Суррогатная модель''' {{---}} это интерпретируемая модель, обученная на выводе Для интерпретации модели (далее именуемый именуемой как черный ящик)можно использовать интерпретируемую суррогатную модель, которую требуется интерпретировать, обученную на выводе черного ящика при различных входных данных. На основе суррогатной модели описывается Так как суррогатная модель будет повторять поведение черного ящика, то на её основе можно интерпретировать данный черный ящик.
Есть два типа суррогатных моделей: глобальная и локальная.
* Глобальная суррогатная модель {{---}} это модель обученная обучена на всем выводе черного ящика. Такая модель полностью повторяет поведение черного ящика, соответственно интерпретирует его на всей выборке.* Локальная суррогатная модель {{---}} это модель обученная обучена на выводе в какой-то окрестности определенной точки (рис. 2, где ЧЯ {{---}} черный ящик). Такая модель зачастую плохо интерпретирует всю выборку, но хорошо справляется с этой задачей в данной окрестности.
Глобальную суррогатную модель довольно сложно построить, поэтому чаще всего прибегают к локальным моделям и интерпретируют определенные объекты.
1632
правки

Навигация