Пояснюваність і тлумачення моделей машинного навчання та штучного інтелекту

pic

Фото: Simon Berger на Unsplash

Що таке пояснюваність та інтерпретованість і чому вони необхідні в ML та AI?

Пояснюваність — це процес, який дає відповідь на питання, чому модель прийняла те чи інше рішення. Наприклад, ми можемо сказати, що модель машинного навчання (ML) чи штучного інтелекту (AI) має пояснюваність, коли вона здатна надати пояснення та обґрунтування для розподілу конкретного вузла в дереві та пояснити логіку, чому цей розподіл стався.

З іншого боку, інтерпретованість — це процес, пов’язаний з відповіддю на питання, що саме входить у процес прийняття рішення. Це допомагає Data Scientists зрозуміти такі речі, як ваги та коефіцієнти, що впливають на прогнози моделі.

Оскільки моделі AI та ML стають дедалі складнішими, з сотнями шарів моделі та тисячами або мільярдами параметрів, наприклад, у великих мовних моделях (LLM) і глибокому навчанні, стає надзвичайно важко зрозуміти загальні та локальні рішення моделі, які вона приймає на основі спостережень. Пояснюваність моделі надає пояснення та обґрунтування внутрішніх процесів моделі. Таким чином, стає важливим для Data Scientists та експертів з AI застосовувати техніки пояснюваності під час створення моделі, що також покращує її інтерпретованість.

Які переваги надає покращення пояснюваності та інтерпретованості моделі?

a) Покращення довіри

Довіра — це слово, яке має багато значень. Це впевненість у надійності, чесності чи порядності когось чи чогось.

Довіра стосується як людей, так і неживих речей. Наприклад, можна покладатися на рішення друга чи на повністю автоматизовану машину для перевезення вас з одного місця в інше. Недостатня прозорість та комунікація можуть також призвести до руйнування довіри. Довіра будується поступово через невеликі кроки та повторювані позитивні взаємодії. Коли ми маємо послідовні позитивні взаємодії з людиною чи річчю, це зміцнює нашу віру в їхню надійність, позитивні наміри та безпечність. Отже, довіра формується з часом через наш досвід.

Це відіграє важливу роль у тому, щоб ми могли покладатися на моделі ML та AI та їхні прогнози.

b) Покращена прозорість та співпраця

Коли ми можемо пояснити внутрішню роботу машини чи моделі глибокого навчання, її процес прийняття рішень та інтуїцію, що стоїть за правилами і виборами, це дозволяє встановити довіру та відповідальність. Це також допомагає покращити співпрацю та взаємодію з зацікавленими сторонами та партнерами.

c) Покращене усунення неполадок

Коли щось ламається або не працює так, як очікувалось, нам потрібно заглянути глибше в джерело проблем, і для цього важливо мати прозорість внутрішніх процесів системи чи моделі, щоб діагностувати проблеми та вжити ефективних заходів для їх вирішення. Наприклад, якщо ми хочемо дослідити, чому модель вирішила, що особі "B" не слід надавати кредит, нам потрібно заглянути в прогнози та рішення моделі, зважаючи на фактори, яким вона надала важливість у контексті спостережень цієї особи.

У таких ситуаціях пояснюваність моделі буде дуже корисною для глибшого аналізу прогнозів і прийнятих рішень щодо особи "B". Також, при вивченні внутрішніх процесів моделі, ми можемо швидко виявити певні упередження, які можуть впливати на прийняття рішень моделлю.

Отже, наявність пояснюваності в моделях ML та AI та їхнє використання зробить процес усунення неполадок, моніторингу та безперервного вдосконалення більш ефективним, а також допоможе виявляти та зменшувати упередження та помилки для покращення продуктивності моделі.

Які популярні бізнес-кейси для пояснюваності та інтерпретованості ML та AI?

Ми завжди зацікавлені у здатності моделі прогнозувати та впливати на прийняття обґрунтованих рішень на основі даних.
Є безліч застосувань для моделей ML та AI в різних галузях, таких як банківська справа та фінанси, рітейл, охорона здоров’я, інтернет, комерція, страхування, автомобільна промисловість, виробництво, освіта, телекомунікації, подорожі, космічні дослідження та інші.

Ось деякі приклади:

Банківська справа та фінанси

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

Щоб зробити внутрішні процеси, такі як схвалення заявок і моніторинг шахрайства, більш ефективними, банки та фінансові установи використовують моделі ML та AI для допомоги в ухваленні важливих рішень. Вони використовують моделі ML та AI для прогнозування результатів на основі певних відомих факторів.

Зазвичай більшість цих установ постійно моніторять транзакції та дані, щоб виявляти патерни, тренди та аномалії. Для них важливо мати можливість розуміти прогнози моделей ML та AI для кожної обробленої заявки. Вони хочуть зрозуміти логіку рішень моделі і фактори, які відіграли важливу роль у цих прогнозах.

Тепер припустимо, що модель ML передбачила відмову в кредитах для кількох клієнтів з високими кредитними балами, і це може здатися незвичним. У таких випадках вони можуть скористатися поясненнями моделі для аналізу ризиків і отримати глибше розуміння, чому модель вирішила відхилити заявку клієнта, і які фактори клієнта відіграли важливу роль у прийнятті цього рішення. Це відкриття може допомогти виявити, дослідити та зменшити проблеми, вразливості та нові упередження в прийнятті рішень моделі, що допоможе покращити її продуктивність.

Охорона здоров’я

Сьогодні в галузі охорони здоров’я моделі ML/AI використовуються для прогнозування результатів здоров’я пацієнтів на основі різних факторів, таких як медична історія, лабораторні аналізи, спосіб життя, генетика тощо.

Припустимо, медичний заклад використовує моделі ML/AI для прогнозування, чи має пацієнт підвищений ризик раку. Оскільки ці проблеми стосуються життя людини, від моделей AI/ML очікується дуже високий рівень точності в прогнозах.

У таких випадках можливість глибше вивчити прогнози моделі, використовувані правила прийняття рішень і зрозуміти фактори, які впливають на прогнози, стає важливою. Медична команда повинна зробити все належне і очікує прозорості від моделі ML/AI, щоб отримати чіткі й детальні пояснення щодо прогнозованих результатів здоров’я пацієнта та факторів, що вплинули на ці прогнози. Саме тут пояснюваність моделі ML/AI стає необхідною.

Це дослідження інколи може допомогти виявити приховані вразливості та упередження в процесі прийняття рішень моделі, що дозволяє вирішити ці питання для покращення майбутніх прогнозів моделі.

Автономні транспортні засоби

Автономні транспортні засоби — це самостійно керовані транспортні засоби, такі як автомобілі, вантажівки, потяги, літаки, кораблі, космічні кораблі тощо. В таких транспортних засобах моделі AI та ML відіграють важливу роль, забезпечуючи їх роботу без втручання людини. Ці моделі створюються за допомогою машинного навчання та моделей комп’ютерного зору. Вони дозволяють автономним автомобілям/транспортним засобам сприймати інформацію про навколишнє середовище, приймати обґрунтовані рішення та безпечно рухатися.

У випадку з автономними транспортними засобами, що призначені для руху дорогами, навігація означає орієнтацію транспортного засобу без допомоги людини в реальному часі, тобто
без втручання людини через важливі завдання, такі як виявлення та ідентифікація об’єктів, розпізнавання дорожніх знаків і сигналів, прогнозування поведінки об’єктів, утримання смуг і планування маршрутів, прийняття обґрунтованих рішень та виконання відповідних дій, таких як прискорення, гальмування, кермування, зупинка тощо.

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

Тому дуже важливо будувати довіру до моделей AI та ML, на які ці транспортні засоби повністю покладаються для ухвалення рішень. В автономних транспортних засобах пояснюваність AI та ML також відома як Пояснюваний AI (Explainable AI, XAI). Пояснюваний AI можна використовувати для покращення взаємодії з користувачем, надаючи йому відгуки про дії та рішення AI в реальному часі, а також ці інструменти можуть служити для дослідження рішень і проблем AI, виявлення та усунення прихованих упереджень і вразливостей та покращення моделей автономних транспортних засобів.

Рітейл

У рітейловій галузі моделі AI та ML використовуються для прийняття різних рішень, таких як продаж товарів, управління запасами, маркетинг, підтримка та досвід клієнтів тощо. Наявність пояснюваності в моделях ML та AI полегшує розуміння прогнозів моделі, а також дозволяє глибше розібратися в питаннях, пов’язаних з прогнозами, таких як типи товарів, які не генерують продажів, чи які будуть прогнози продажів для конкретного магазину чи торгової точки наступного місяця, чи які продукти будуть користуватися великим попитом і повинні бути в наявності, чи які маркетингові кампанії мають позитивний вплив на продажі тощо.

З наведених вище прикладів використання в бізнесі можна чітко побачити, що для моделей ML та AI дуже важливо мати чіткі та зрозумілі пояснення як для загальної моделі, так і для кожного окремого прогнозу, щоб сприяти прийняттю бізнес-рішень і підвищити ефективність операцій.

Деякі складні моделі мають вбудовану пояснюваність, тоді як інші моделі залежать від зовнішніх інструментів для цього. Сьогодні є кілька моделей, що не залежать від конкретної моделі, які допомагають додавати пояснюваність моделей. Ми детальніше розглянемо два з таких популярних інструментів.

Які інструменти можна використовувати для покращення пояснюваності та інтерпретованості моделей ML та AI?

Будь-який інструмент, який надає інформацію про процес прийняття рішень моделі та внесок ознак у прогнози моделі, дуже корисний. Пояснення можна зробити більш інтуїтивно зрозумілими за допомогою візуалізацій.

У цій статті ми детально розглянемо два з найбільш популярних зовнішніх інструментів для додавання пояснюваності та інтерпретованості моделей ML та AI:

  1. LIME (Local Interpretable Model-Agnostic Explanations)
  2. SHAP (SHapely Additive exPlanations)

LIME є модельно-агностичним, що означає, що його можна впроваджувати з будь-якою моделлю машинного навчання та глибокого навчання. Він може використовуватися з моделями машинного навчання, такими як лінійна та логістична регресії, дерева рішень, випадкові ліси, XGBoost, KNN, ElasticNet тощо, а також з моделями глибоких нейронних мереж, такими як RNN, LSTM, CNN, попередньо навчена модель «чорної коробки» тощо.

Він працює на припущенні, що можна використовувати просту інтерпретовану модель для пояснення внутрішніх процесів складної моделі. Проста інтерпретована модель може бути, наприклад, проста модель лінійної регресії або модель дерева рішень. Тут ми використовуємо просту модель лінійної регресії як інтерпретовану модель для генерування пояснень для складної моделі за допомогою пояснень LIME/SHAP.

LIME, також відома як Local Interpretable Model-Agnostic Explanations, працює локально з однією спостережуваною одиницею за раз і допомагає нам зрозуміти, як модель передбачила результат для цього спостереження.
Він працює шляхом створення синтетичних даних за допомогою змінених значень ознак з оригінальних спостережень.**

Що таке змінені дані і як їх створюють?

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

Для текстових і зображувальних типів даних LIME ітераційно створює набір даних, випадковим чином вибираючи ознаки з оригінального набору даних і створюючи нові змінені значення з сусідства ознак. Ширина ядра LIME контролює розмір сусідства даних.

Мала ширина ядра означає, що сусідство маленьке, і точки, що знаходяться найближче до оригінального значення, значно впливатимуть на пояснення, а для великої ширини ядра віддалені точки також можуть сприяти поясненням LIME.

Ширші розміри сусідства призведуть до менш точних пояснень, але можуть допомогти виявити деякі загальні тенденції в даних. Для більш точних локальних пояснень слід надавати перевагу малим розмірам сусідства.

За допомогою малюнка (Рис. 1) нижче ми намагаємося дати деяке уявлення про змінені значення, ширину ядра та сусідство.

Для цього обговорення ми використали приклади даних з набору даних Bigmart, і це задача регресії. Ми використовували табличні дані для LIME.

pic

Розглянемо спостереження #0 з набору даних Bigmart. Це спостереження має ознаку «Item_Type» зі значенням 13. Ми обчислили середнє значення та стандартне відхилення для цієї ознаки і отримали середнє значення 7.234 та стандартне відхилення 4.22. Це показано на малюнку вище. Використовуючи цю інформацію, ми потім обчислили Z-скор 1.366.

Область ліворуч від Z-скору дає нам відсоток значень для ознаки, які будуть менші за x. Для Z-скору 1.366 ми отримаємо близько 91.40% значень для ознаки, які будуть менші за x = 13. Таким чином, ми отримуємо уявлення, що ширина ядра повинна бути нижчою за x = 13 для цієї ознаки. І ширина ядра допомагатиме контролювати розмір сусідства для змінених даних.

Нижче на Рис. 2 показано три оригінальні тестові точки з набору даних Bigmart, і ми використали їх для отримання уявлення про процес LIME. XGBoost є складною моделлю, і її було використано для генерування прогнозів для оригінальних спостережень.

Для цієї статті ми використовуємо топ-3 записи з попередньо обробленого та кодуваного набору даних Bigmart, щоб надати приклади та пояснення для підтримки обговорення.

pic

LIME внутрішньо використовує відстань між оригінальною точкою даних і точками в сусідстві та обчислює відстань за допомогою Евклідової відстані. Припустимо, точка X = 13 має координати (x1, y1), а інша точка в сусідстві має координати (x2, y2), Евклідова відстань між цими двома точками обчислюється за допомогою наступного рівняння:

pic

Малюнок (Рис. 4) нижче показує сині змінені точки даних і оригінальне значення як червону точку. Змінена точка даних, яка знаходиться ближче до оригінальної точки даних, матиме більший вплив на пояснення LIME.

pic

Вищезгадане рівняння враховує 2D. Подібні рівняння можна вивести для точок даних з N вимірами.

Ширина ядра допомагає LIME визначати розмір сусідства для вибору змінених значень для ознаки.
Коли значення або точки даних віддаляються від оригінального значення, вони стають менш впливовими на прогнозування результатів моделі.

Малюнок (Рис. 6) нижче показує змінені значення ознак, разом з їхнім коефіцієнтом схожості до оригінального значення, та прогнози змінених екземплярів за допомогою моделі XGBoost, а малюнок (Рис. 5) показує інформацію для інтерпретованої простої моделі (Лінійна регресія).

pic

pic

Як використовуються вбудовані функції інтерпретованості та пояснюваності складних моделей?

Складні моделі, такі як XGBoost, Random Forest та інші, мають базові вбудовані функції пояснюваності моделей. Модель XGBoost забезпечує пояснюваність моделі на глобальному рівні, але не може пояснити прогнози на локальному рівні спостереження.

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

Перш за все, ми ініціалізували модель XGBoost, а потім навчали її, використовуючи незалежні та цільові ознаки з тренувального набору. Вбудовані функції пояснюваності моделі XGBoost були використані для отримання уявлень про модель.

Щоб побудувати пояснення за допомогою вбудованої функції XGBoost, використовуйте наступний код:

побудова одного дерева

plottree(xgbrmodel)
plt.figure(figsize=(10,5))
plt.show()

Малюнок (Рис. 7) нижче показує вихідне дерево рішень для вище згаданої складної моделі XGBoost для Bigmart.

pic

З вище наведеного дерева моделі XGBoost ми отримуємо деякі уявлення про процес прийняття рішень моделі та умовні правила, які вона використовувала для поділу даних та прогнозування фінальних результатів. З цього дерева видно, що для цієї моделі XGBoost ознака ItemMRP має найбільший внесок в результат, потім йде OutletType в процесі прийняття рішень. Ми можемо перевірити це, використовуючи важливість ознак XGBoost.

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

важливість ознак моделі

featureimportancexgb = pd.DataFrame()
featureimportancexgb[‘variable’] = Xtrain.columns
feature
importancexgb[‘importance’] = xgbrmodel.featureimportances

значення важливості ознак у порядку спадання

featureimportancexgb.sort_values(by=’importance’, ascending=False).head()

Малюнок (Рис. 9) нижче показує важливість ознак, отриману за допомогою вбудованих пояснень моделі XGBoost.

pic

З вище наведених важливостей ознак XGBoost ми цікаво зауважуємо, що для моделі XGBoost тип OutletType мав більший внесок, ніж ItemMRP. Також модель надала інформацію про інші ознаки, які також впливали на прогнози.

Як ми помітили, пояснення моделі XGBoost є на глобальному рівні і надають багато корисної інформації, але деякі додаткові відомості, такі як напрямок внеску ознаки, відсутні, а також не маємо інсайтів для локальних спостережень. Напрямок дозволить нам зрозуміти, чи сприяє ознака збільшенню прогнозованих значень, чи зменшенню прогнозованих значень.
Для задач класифікації напрямок внеску ознак означатиме знання того, чи сприяє ознака класу "1" чи класу "0".

Саме тут зовнішні інструменти пояснення, такі як LIME та SHAP, можуть бути корисними та доповнювати пояснення моделі XGBoost інформацією про напрямок внеску ознаки чи її вплив. Для моделей без вбудованих функцій для пояснення процесу прийняття рішень моделі, LIME допомагає додати цю здатність пояснювати прогнози для як локальних, так і глобальних спостережень.

Як працює прийняття рішень моделлю LIME і як інтерпретувати її пояснення?

LIME можна використовувати з складними моделями, простими моделями, а також з чорними ящиками, де ми не маємо жодних знань про роботу моделі і маємо лише прогнози.

Таким чином, ми можемо безпосередньо застосувати модель LIME до моделі, яка потребує пояснень, а також використовувати її для пояснення моделей чорного ящика через замінну просту модель.

Нижче ми будемо використовувати модель регресії XGBoost як складну модель, а також модель чорного ящика, і застосуємо просту модель лінійної регресії для розуміння пояснень LIME для моделі чорного ящика. Це також дозволить нам порівняти пояснення, створені LIME, за допомогою обох підходів для тієї ж складної моделі.

Щоб встановити бібліотеку LIME, використовуйте наступний код:

встановлення бібліотеки lime

!pip install lime

імпорт функції Explainer з модуля lime_tabular бібліотеки lime

from lime.lime_tabular import LimeTabularExplainer

Підхід 1: Як реалізувати і інтерпретувати пояснення LIME за допомогою складної моделі XGBR?

Щоб реалізувати пояснення LIME безпосередньо за допомогою складної моделі, такої як XGBoost, використовуйте наступний код.

Підключаємо модель пояснювача за допомогою складної моделі та показуємо пояснення LIME і оцінку

explanation = explainer.explaininstance(Xunseentest.values[0], xgbrmodel.predict)
explanation.showinnotebook(showtable=True, showall=False)
print(explanation.score)

Це генеруватиме вихід, який виглядатиме, як на малюнку нижче.

pic

З вище наведеного ми бачимо, що для зміненого спостереження #0 коефіцієнт схожості становить 71.85%, що вказує на те, що ознаки в цьому спостереженні були на 71.85% схожі з оригінальним спостереженням. Прогнозоване значення для спостереження #0 становить 1670.82, при цьому загальний діапазон прогнозованих значень знаходиться між 21.74 та 5793.40.

Підхід 2: Як реалізувати та інтерпретувати пояснення LIME для моделі чорного ящика (XGBR) за допомогою замінної простої моделі LR?

Для реалізації LIME з складними моделями чорного ящика, такими як XGBoost, ми можемо використовувати метод замінної моделі. Для замінної моделі можна використовувати прості моделі, такі як Лінійна регресія або моделі рішень. LIME дуже добре працює з цими простими моделями.
І ми також можемо використовувати складну модель як замінну модель з LIME.

Щоб використовувати LIME з замінною простою моделлю, спочатку нам потрібно отримати прогнози від моделі чорного ящика.

Прогнози моделі чорного ящика

yxgbrmodeltestpred

На другому етапі, використовуючи складну модель, незалежні ознаки з тренувального набору та LIME, ми генеруємо новий набір даних із зміненими значеннями ознак, а потім тренуємо замінну модель (в цьому випадку лінійну регресію) за допомогою змінених ознак і прогнозованих значень складної моделі.

Ініціалізація простої моделі LR

lr_model = LinearRegression()

Навчання простої моделі за допомогою Train X

та прогнозованих значень складної моделі чорного ящика

lrmodel.fit(Xtrain, yxgbrmodeltestpred)

Прогнозування для не побачених тестових даних

ylrsurrmodeltestpred = lrmodel.predict(Xunseentest)
ylrsurrmodeltest_pred.mean()

Щоб згенерувати змінені значення ознак за допомогою LIME, ми можемо використовувати наступний код.

# Ініціалізація функції пояснювача
explainer = LimeTabularExplainer(Xtrain.values, mode="regression", featurenames=X_train.columns)

# Копіювання тестових даних
Xobservation = Xunseen_test

Примітка: Вищезазначений код працює для задач регресії. Для задач класифікації, параметр mode потрібно змінити на "classification".

Нарешті, ми налаштовуємо LIME для локального екземпляра #0, використовуючи замінну модель LR, і переглядаємо пояснення для цього. Це також допоможе інтерпретувати внески ознак для моделі чорного ящика (XGBR). Для цього використовуйте наступний код.

Тепер ми використовуємо середнє значення всіх спостережень, щоб побачити пояснюваність моделі за допомогою LIME

Налаштовуємо модель пояснювача та показуємо пояснення і оцінку

explanation = explainer.explaininstance(Xunseentest.values[0], lrmodel.predict)
explanation.showinnotebook(showtable=True, showall=False)
print(explanation.score)

При виконанні вищезазначеного коду ми отримали наступні пояснення LIME, як показано на малюнку (Fig-13) нижче.

pic

Одне, що ми відразу помітили, це те, що коли ми використовували LIME безпосередньо з моделлю XGBoost, оцінка пояснень LIME була вищою (71.85%) для спостереження #0, а коли ми обробляли її як модель чорного ящика і використовували замінну модель LR для отримання пояснень LIME для моделі чорного ящика (XGBoost), спостерігаємо значне зниження оцінки пояснень (49.543%). Це вказує на те, що при використанні підходу замінної моделі буде менше ознак у спостереженні, схожих на оригінальні ознаки, і тому можуть бути деякі відмінності в прогнозах, отриманих за допомогою пояснювача, порівняно з оригінальною моделлю та LIME оригінальної моделі.

Прогнозоване значення для спостереження #0 становить 2189.59, при загальному діапазоні прогнозованих значень між 2053.46 і 2316.54.

Прогнозоване значення для спостереження #0 за допомогою LIME XGBR становить 1670.82.

LIME виявив найбільш вагомі ознаки для прогнозів спостереження #0 та розташував їх у порядку спадання величини внеску ознак.

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

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

На малюнку (Fig-13) вище, графік зліва вказує на загальний діапазон прогнозованих значень (мінімум до максимуму) для всіх спостережень, а значення в центрі — це прогноз для цього конкретного екземпляра, тобто спостереження.

Графік у центрі показує, що синій колір позначає ознаки, які негативно впливають на прогноз моделі, а ознаки, що позитивно впливають на прогноз для локального екземпляра, позначені помаранчевим кольором. Числові значення біля ознак вказують на змінені значення ознак або, можна сказати, на величину внеску ознак у прогноз моделі, в даному випадку для конкретного спостереження (#0) або локального екземпляра.

Графік справа вказує на порядок важливості ознак, наданий моделлю при генерації прогнозу для цього екземпляра.

Примітка: Кожного разу, коли ми запускаємо цей код, LIME вибирає ознаки і призначає їм трохи нові ваги, тому можуть змінюватися як прогнозовані значення, так і графіки.

Як доступити змінені дані LIME?

Щоб переглянути змінені значення LIME, використовуйте наступний код.

Доступ до змінених даних

perturbeddata = explanation.aslist()
perturbed_data

Виведення з цього коду виглядатиме, наприклад, так:

pic

Доступ до ваг ознак

for feature, weight in perturbed_data:
print(feature, weight)

pic

Що таке важливість ознак LIME?

Кожне спостереження в моделі дає різну важливість ознак при генерації прогнозу для цього екземпляра. Ці ідентифіковані ознаки моделі відіграють важливу роль у прогнозах моделі. Значення важливості ознак вказують на змінені значення ознак або нову величину ідентифікованих ознак для прогнозу моделі.

Що таке оцінка пояснення LIME і як її інтерпретувати?

Оцінка пояснення LIME вказує на точність пояснень LIME і роль ідентифікованих ознак у прогнозуванні результатів моделі. Чим вища оцінка пояснень, тим більшу роль відіграють ідентифіковані ознаки у прогнозуванні моделі для цього екземпляра. З малюнка (Fig-13) ми бачимо, що інтерпретована замінна модель LR отримала оцінку 0.4954 для ідентифікованих ознак у спостереженні.

Тепер давайте розглянемо ще один інструмент під назвою SHAP (SHapely Additive exPlanations), який додає пояснюваність до моделі.

Як працює SHAP (SHapely Additive exPlanations) і як реалізувати та інтерпретувати його пояснення?

Іншим популярним інструментом для пояснень ML та AI моделей є SHAP (SHapely Additive exPlanations). Цей інструмент також є незалежним від моделі. Його пояснення засновані на концепції кооперативної теорії ігор, яка називається "Шеплі значення". В цій теорії ігор враховуються внески всіх учасників, і кожному учаснику надається значення на основі їхнього внеску в загальний результат. Таким чином, він надає справедливе та інтерпретоване уявлення про рішення моделі.

Згідно з теорією Шеплі, коаліція учасників працює разом для досягнення результату. Не всі учасники є однаковими, і кожен учасник має свої унікальні характеристики, які допомагають йому вносити різний внесок у результат. Часто саме внески кількох учасників допомагають їм виграти гру.
Отже, співпраця між учасниками вигідна і повинна оцінюватися, а не залежати лише від внеску одного учасника в результат. І, відповідно до Шеплі, виграш, отриманий в результаті, повинен бути розподілений серед учасників на основі їхніх внесків.

Інструмент пояснення моделей SHAP для ML та AI ґрунтується на вище згаданій концепції. Він розглядає ознаки в наборі даних як окремих учасників команди (спостереження). Коаліції працюють разом в ML моделі для прогнозування результатів, а виграш — це прогноз моделі. SHAP допомагає справедливо та ефективно розподіляти виграш серед окремих ознак (учасників), визнаючи їхній внесок у результат моделі.

pic

На малюнку (Fig-15) вище ми розглядаємо двох учасників, які беруть участь у змаганні, і результат досягається у вигляді виграних призових коштів. Два учасники беруть участь, утворюючи різні коаліції (c12, c10, c20, c0), і через кожну коаліцію вони отримують різні призи. Нарешті, ми бачимо, як середні ваги Шеплі допомагають визначити внесок кожного учасника в результат і справедливо розподілити призові кошти серед учасників.

У випадку “i” учасників можна використовувати рівняння, показане на малюнку (Fig-16), щоб визначити значення SHAP для кожного учасника або ознаки.

pic

Давайте детальніше розглянемо бібліотеку SHAP.

Як встановити бібліотеку SHAP та ініціалізувати її?

Щоб встановити бібліотеку SHAP, використовуйте наступний код.

Встановлення бібліотеки Shap

!pip install shap

імпортування бібліотек Shap

import shap

Ініціалізація Shap js

shap.initjs()

Імпорт бібліотек

from shap import Explainer

Як реалізувати та інтерпретувати пояснення складної моделі XGBR за допомогою SHAP?

Бібліотеки SHAP можна використовувати безпосередньо зі складними моделями для генерування пояснень. Нижче наведено код для використання SHAP безпосередньо з моделлю XGBoost (з використанням того ж екземпляра моделі, який використовувався для пояснень LIME).

Пояснювач Shap

explainershapxgbr = shap.Explainer(xgbr_model)

Як генерувати значення SHAP для складної моделі XGBR?

Генерація значень Shap

shapvaluesxgbr = explainershapxgbr.shapvalues(Xunseen_test)

Значення Shap, отримані за допомогою складної моделі XGBR

shapvaluesxgbr

Виведення цього коду покаже масиви значень SHAP для кожної з ознак у коаліціях, тобто для спостережень у тестовому наборі даних.

Значення SHAP виглядатимуть приблизно так, як показано на малюнку (Fig-19) нижче:

pic

Fig-19- Значення SHAP для складної моделі XGBR

Яка важливість ознак SHAP для складної моделі XGBR?

SHAP дозволяє нам зрозуміти, які ознаки вплинули на результат і яким чином вони були впливовими в моделюванні, а також вказує на величину їхнього впливу або внеску у прогнозовані значення порівняно з іншими ознаками в моделі.

SHAP досягає цього, розглядаючи всі можливі перестановки ознак.
Це обчислює та порівнює результати моделі з ознаками та без них, таким чином розраховуючи внесок кожної ознаки разом з усією командою (усі учасники, тобто ознаки, які беруть участь).

Як реалізувати та інтерпретувати SHAP Summary Plot для складної моделі XGBR?

SHAP summary plot можна використовувати для перегляду внеску ознак SHAP, їх важливості та впливу на результати.

Наступний малюнок (Fig-20) показує вихідний код для генерації summary plot.

Вивести summary plot за допомогою значень Shap

shap.summaryplot(shapvaluesxgbr, Xunseen_test)

pic

Малюнок (Fig-21) вище показує SHAP summary plot для даних Bigmart. З нього видно, що SHAP розставив ознаки з набору даних Bigmart за важливістю. Справа ми бачимо ознаки, впорядковані від найбільш значущих ознак у верхній частині до найменш значущих внизу.

Також ми можемо інтерпретувати вплив ознак моделі на результат. Вплив ознак відображається горизонтально, центрований навколо середнього значення SHAP. Значення SHAP для ознак, розташованих ліворуч від середнього значення SHAP, позначені рожевим кольором, що вказує на їхній негативний вплив. Значення SHAP для ознак, розташованих праворуч від середнього значення SHAP, вказують на внесок цієї ознаки у позитивний вплив. Значення SHAP також показують величину або вплив ознак на результат.

Таким чином, SHAP надає загальну картину моделі, вказуючи на величину та напрямок внеску кожної ознаки у прогнозований результат.

Як реалізувати та інтерпретувати SHAP Dependence Plot для складної моделі XGBR?

Вивести SHAP dependence plot

shap.dependenceplot(“ItemMRP”, shapvaluesxgbr, Xunseentest, interactionindex=”OutletType”)

pic

SHAP dependence plot допомагає нам інтерпретувати залежність між ознаками. На наведеному графіку видно, що ItemMRP залежить від OutletType. Для OutletTypes 1 до 3 ItemMRP має зростаючу тенденцію, тоді як для OutletType 0 до OutletType 1, Item_MRP показує зменшувальну тенденцію.

Як реалізувати та інтерпретувати SHAP Force Plot для складної моделі XGBR?

До цього часу ми бачили важливість ознак SHAP, їхній вплив та прийняття рішень на глобальному рівні. SHAP force plot можна використовувати, щоб отримати інтуїцію щодо прийняття рішень моделі на рівні окремого спостереження.

Щоб використати SHAP force plot, можна використати наступний код. Не забувайте використовувати імена вашого набору даних. Даний код аналізує перше спостереження для тестового набору даних, тобто Xunseentest.iloc[0]. Це число можна змінити, щоб переглядати інші спостереження.

SHAP force plots

shap.plots.force(explainershapxgbr.expectedvalue, shapvaluesxgbr[0,:], Xunseen_test.iloc[0, :], matplotlib = True)

pic

Ми можемо інтерпретувати цей force plot наступним чином. Базове значення вказує на прогнозоване значення для локального спостереження #0, використовуючи SHAP surrogate LR модель. Ознаки, позначені темно-рожевим кольором, є тими, які підвищують значення прогнозу, тоді як ознаки, позначені синім кольором, знижують прогнозне значення.
Числа з ознаками — це оригінальні значення ознак.**

Як реалізувати та інтерпретувати SHAP Decision Plot для складної моделі XGBoost?

Щоб відобразити SHAP dependence plot, можна використати наступний код, як показано на Fig-24 нижче.

SHAP dependence plot

shap.decisionplot(explainershapxgbr.expectedvalue, shapvaluesxgbr[0,:], Xunseentest.columns)

SHAP decision plot — це ще один спосіб подивитися на вплив різних ознак моделі на прогноз моделі. З decision plot нижче ми намагалися візуалізувати вплив різних ознак моделі на прогнозований результат, тобто продажі товарів в точках продажу.

З decision plot нижче ми бачимо, що ознаки ItemMRP та OutletIdentifierOUT018 позитивно впливають на прогнозований результат, збільшуючи результат, тобто продажі товару в точках продажу, тоді як ознаки ItemType та OutletIdentifier27 вносять негативний вплив на результат, зменшуючи продажі товару в точках продажу.

Нижче наведено decision plot для даних Big Mart Sales.

pic

Як реалізувати та інтерпретувати SHAP Force Plot для складної моделі XGBR, використовуючи TreeExplainer?

Завантажити код візуалізації JS в блокнот

shap.initjs()

Пояснити прогнози моделі за допомогою значень SHAP

explainershapxgbr2 = shap.TreeExplainer(xgbrmodel)
shapvaluesxgbr2 = explainershapxgbr2.shapvalues(Xunseen_test)

Візуалізувати прогнози для першого спостереження

shap.forceplot(explainershapxgbr2.expectedvalue, shapvaluesxgbr2[0, :], Xunseentest.iloc[0, :])

Візуалізувати прогнози для навчального набору

shap.forceplot(explainershapxgbr2.expectedvalue, shapvaluesxgbr2, Xunseentest)

pic

Як реалізувати та інтерпретувати SHAP пояснення для чорної коробки моделі, використовуючи замісну модель?

Щоб використовувати SHAP пояснення для замісної моделі (тут використано лінійну регресію), скористайтеся наступним кодом. Лінійна регресія навчається за допомогою прогнозів з чорної коробки моделі та незалежних ознак навчального набору.

Обгорнути пояснювач в функцію під назвою Explainer і створити об'єкт SHAP #explainer

explainershap = Explainer(lrmodel.predict, X_train)

Генерація значень Shap

shapvalues = explainershap.shapvalues(Xunseentest)
shap
values[:3]

Для пояснювача SHAP замісної моделі значення SHAP будуть виглядати приблизно так:

pic

Як реалізувати та інтерпретувати SHAP Summary Plot для чорної коробки моделі за допомогою замісної LR моделі?

Щоб відобразити SHAP summary plot для чорної коробки замісної моделі, код буде виглядати наступним чином.

Вивести summary plot за допомогою значень Shap

shap.summaryplot(shapvalues, Xunseentest)

pic

З цього SHAP summary plot для чорної коробки замісної LR моделі видно, що ItemType та ItemMRP є одними з найбільш впливових ознак, причому ItemType має загальний нейтральний вплив, тоді як ItemMRP схиляється до правої частини, що вказує на його вплив на збільшення результату (тобто...
ItemOutletSales).

Як реалізувати та інтерпретувати SHAP Dependence Plot для чорної коробки замісної моделі LR?

Щоб реалізувати SHAP Dependence Plot за допомогою замісної моделі LR, скористайтеся наступним кодом.

Вивести SHAP dependence plot

shap.dependenceplot(“ItemMRP”, shapvalues, Xunseentest, interactionindex=”Outlet_Type”)

Результат буде виглядати так:

pic

З цього графіка ми можемо сказати, що для чорної коробки замісної моделі LR, MRP має зростаючу тенденцію для типів точок продажу 0 і 1, тоді як для типів точок продажу 3 і 2 тенденція зменшується.

Висновки

LIME та SHAP — це чудові інструменти, які можна додавати до будь-якої моделі ML та AI, щоб забезпечити пояснюваність складних моделей або моделей чорної коробки. LIME — дуже хороший інструмент для отримання уявлень про процес прийняття рішень моделі та додає діагностичні можливості на локальному рівні. Бібліотека SHAP надає інструменти та функціональність для отримання загального уявлення про роботу моделі та процес прийняття рішень, а також надає глибше розуміння роботи моделі на локальному рівні спостережень.

LIME використовує концепцію створення синтетичного набору даних з ознаками з порушеними точками даних, які розташовані ближче до оригінальних значень ознак, і це допомагає проаналізувати rationale (пояснення) рішень моделі та важливість ознак. Це ґрунтується на припущенні, що близькість значень ознак до оригінальних значень не буде значно впливати на прогнози моделі, і це сприяє розумінню рішень складної моделі на локальному рівні.

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

Зібравши всі моделі LIME та спостереження (для перших 3 рядків та вибраних ознак), ми отримуємо наступне.

pic

pic

З вище наведеного ми бачимо, що для спостереження #0 прогнози оригінальної моделі XGBR та прогнози моделі XGBR за допомогою LIME збігаються, тоді як для тих самих оригінальних значень ознак прогнози чорної коробки замісної моделі для спостереження #0 значно відрізняються. Водночас модель LIME XGBR показала високий Explanation Score (Схожість ознак з оригінальними ознаками).

Також з фігури вище ми отримуємо певне уявлення про те, як LIME обирав ознаки та потім призначав до них порушені ваги, намагаючись наблизити прогнози до оригінальних значень.

Загалом, модель LIME XGBR здається кращою за модель LIME замісної моделі, оскільки має менше відхилень в Explanation/Similarity оцінках.

Алгоритми SHAP базуються на теорії ігор і намагаються сприяти справедливості, ефективності, прозорості та цілісності, враховуючи всі внески ознак до прогнозу моделі. Існує кілька графіків SHAP для отримання більш глибоких уявлень про моделі. Ми розглянули деякі з цих графіків вище.

Ці інструменти можна далі покращити та зробити їх пояснення більш доступними та зрозумілими, без необхідності витрачати багато часу на пошук інформації про те, як інтерпретувати ці графіки.

Зрештою, можна сказати, що обидві бібліотеки LIME та SHAP є дуже корисними та допоміжними інструментами для глибшого розуміння внутрішньої роботи моделі ML та AI, прийняття рішень та ідентифікації ознак, що впливають на прогнози моделі. Крім того, ці інструменти можуть бути використані для перевірки гіпотез та діагностичних цілей.

Для додаткової інформації скористайтесь наступними ресурсами:

ПОСИЛАННЯ

Репозиторій вихідного коду

Документація LIME

Документація SHAP

Перекладено з: ML and AI Model Explainability and Interpretability

Leave a Reply

Your email address will not be published. Required fields are marked *