Як інтерпретувати висновок важливості XGBoost?


37

Я керував моделлю xgboost. Я точно не знаю, як інтерпретувати результат xgb.importance.

Яке значення посилення, покриття та частоти і як їх інтерпретувати?

Крім того, що означає Split, RealCover та RealCover%? У мене є деякі додаткові параметри тут

Чи є якісь інші параметри, які можуть розповісти мені більше про імпорт функцій?

З документації на R я розумію, що коефіцієнт посилення - це щось подібне до отримання інформації, а частота - це кількість разів, коли функція використовується для всіх дерев. Я поняття не маю, що таке Cover.

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

importance_matrix

Вихід:

           Feature         Gain        Cover    Frequence
  1:            xxx 2.276101e-01 0.0618490331 1.913283e-02
  2:           xxxx 2.047495e-01 0.1337406946 1.373710e-01
  3:           xxxx 1.239551e-01 0.1032614896 1.319798e-01
  4:           xxxx 6.269780e-02 0.0431682707 1.098646e-01
  5:          xxxxx 6.004842e-02 0.0305611830 1.709108e-02

214:     xxxxxxxxxx 4.599139e-06 0.0001551098 1.147052e-05
215:     xxxxxxxxxx 4.500927e-06 0.0001665320 1.147052e-05
216:   xxxxxxxxxxxx 3.899363e-06 0.0001536857 1.147052e-05
217: xxxxxxxxxxxxxx 3.619348e-06 0.0001808504 1.147052e-05
218:  xxxxxxxxxxxxx 3.429679e-06 0.0001792233 1.147052e-05

Відповіді:


40

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

Сенс таблиці важливості полягає в наступному:

  1. Коефіцієнт посилення передбачає відносний внесок відповідної ознаки в модель, обчислену, беручи внесок кожного елемента для кожного дерева в моделі. Більш високе значення цього показника порівняно з іншою ознакою означає, що воно важливіше для формування прогнозу.
  2. У Супровідні метричні означає відносне число спостережень , пов'язаних з цією функцією. Наприклад, якщо у вас є 100 спостережень, 4 ознаки та 3 дерева, і припустимо, функція1 використовується для визначення вузла листя для 10, 5 та 2 спостережень відповідно у tree1, tree2 та tree3; тоді показник буде вважати покриттям цієї функції як 10 + 5 + 2 = 17 спостережень. Це буде обчислено для всіх 4 функцій, а обкладинка буде 17 виражена у відсотках до всіх показників покриття всіх функцій.
  3. Частоти (/ «Frequence») являє собою відсоток , який представляє відносне число раз конкретний ознака відбувається в деревах моделі. У наведеному вище прикладі, якщо функція1 відбулася у 2 розщеплення, по 1 розщепленню та 3 розщеплення у кожному з дерева1, дерева2 та дерева3; тоді зважування для характеристики1 буде 2 + 1 + 3 = 6. Частота для характеристики1 обчислюється як її відсоткова вага над вагами всіх ознак.

Коефіцієнт посилення - найбільш релевантний атрибут для інтерпретації відносної важливості кожної функції.

Ці заходи відносні, а отже, всі підсумовують один, приклад з вбудованої моделі xgboost в R:

> sum(importance$Frequence)
[1] 1
> sum(importance$Cover)
[1] 1
> sum(importance$Gain)
[1] 1

1
Обкладинка обчислюється лише на основі листових вузлів або на всіх розщеплень?
fanfabbb

3

Дякую Sandeep за детальну відповідь. Я хотів би виправити, що обкладинка обчислюється у всіх розщепках, а не лише у листових вузлах.

Переглянемо простий приклад з даними, наданими бібліотекою xgboost.

library('xgboost')

data(agaricus.train, package='xgboost')
data(agaricus.test, package='xgboost')

train <- agaricus.train
test <- agaricus.test

X = train$data

y = train$label

bst <- xgboost(data = X, label = y, max.depth = 2,
           eta = 1, nthread = 2, nround = 2,objective = "binary:logistic",
           reg_lambda = 0, reg_alpha = 0)

xgb.model.dt.tree(agaricus.train$data@Dimnames[[2]], model = bst)

xgb.importance(agaricus.train$data@Dimnames[[2]], bst)

Вихід -

Сміття дерев

Матриця значення

Спробуємо обчислити кришку запаху = немає у матриці важливості (0,495768965) з відвалу дерева.

Кришка кожного розщеплення, де не використовується запаху = немає, становить 1628,2500 при ідентифікаторі вузла 0-0 та 765,9390 при ідентифікаторі вузла 1-1.

Загальна обкладинка всіх розщеплень (підсумовування поперечного стовпця покриття на смітнику дерева) = 1628.2500 * 2 + 786.3720 * 2

Кришка запаху = відсутня в матриці важливості = (1628.2500 + 765.9390) / (1628.2500 * 2 + 786.3720 * 2)

Отже, ми впевнені, що обкладинка розрахована на всі ділянки!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.