Как интерпретировать среднее снижение точности и среднее снижение GINI в моделях случайных лесов

34

У меня возникают трудности с пониманием того, как интерпретировать выходные данные переменной важности из пакета Random Forest. Среднее снижение точности обычно описывается как «снижение точности модели из-за изменения значений в каждой функции».

Это утверждение о функции в целом или о конкретных значениях в функции? В любом случае, означает ли среднее снижение точности количество или долю наблюдений, которые были неправильно классифицированы путем удаления рассматриваемого элемента (или значений из элемента) из модели?

Скажем, у нас есть следующая модель:

require(randomForest)
data(iris)
set.seed(1)
dat <- iris
dat$Species <- factor(ifelse(dat$Species=='virginica','virginica','other'))
model.rf <- randomForest(Species~., dat, ntree=25,
importance=TRUE, nodesize=5)
model.rf
varImpPlot(model.rf)

Call:
 randomForest(formula = Species ~ ., data = dat, ntree = 25,
 proximity = TRUE, importance = TRUE, nodesize = 5)

Type of random forest: classification
Number of trees: 25
No. of variables tried at each split: 2

        OOB estimate of  error rate: 3.33%
Confusion matrix:
          other virginica class.error
other        97         3        0.03
virginica     2        48        0.04

введите описание изображения здесь

В этой модели показатель OOB довольно низкий (около 5%). Тем не менее, среднее снижение точности для предиктора (Petal.Length) с наибольшим значением в этой мере составляет всего около 8.

Означает ли это, что удаление Petal.Length из модели приведет только к дополнительной ошибочной классификации в среднем примерно 8 наблюдений?

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

FlacoT
источник
попробуй dat <- iris [, c (2: 3,5)] и должен получить более высокие значения VI
Сорен Хавелунд Веллинг

Ответы:

26

« Является ли это утверждение о функции в целом или о конкретных значениях в функции? »

  • «Глобальная» значимость переменной - это среднее снижение точности по всем прогнозам на основе перекрестной проверки, когда данная переменная переставляется после обучения, но до прогнозирования. «Глобальный» неявный. Важность локальной переменной - это среднее снижение точности при каждом отдельном перекрестном подтверждении прогноза. Важность глобальной переменной является наиболее популярной, поскольку она представляет собой одно число на переменную, более проста для понимания и более надежна, поскольку она усредняется по всем прогнозам.

« В любом случае, среднее снижение точности - это количество или доля наблюдений, которые неправильно классифицированы путем удаления рассматриваемого элемента (или значений из элемента) из модели? »

  1. поезд лес
  2. измерить точность CV вне пакета → OOB_acc_base
  3. Перестановочная переменная я
  4. измерить точность CV вне пакета → OOB_acc_perm_i
  5. VI_i = - (OOB_acc_perm_i - OOB_acc_base)

- « Означает ли это, что удаление Petal.Length из модели приведет только к дополнительной ошибочной классификации в среднем примерно 8 наблюдений? »

  • Ага. Только Petal.length и Petal.width имеют почти идеальное линейное разделение. Таким образом, переменные разделяют избыточную информацию, и перестановка только одной не мешает модели.

« Как среднее снижение точности для Petal.Length может быть настолько низким, учитывая, что оно является самым высоким в этой мере, и, таким образом, другие переменные имеют даже более низкие значения для этой меры? »

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

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

Джини: Важность GINI измеряет среднее увеличение чистоты путем разделения данной переменной. Если переменная полезна, она имеет тенденцию разбивать смешанные помеченные узлы на чистые узлы одного класса. Расщепление переставленными переменными не имеет тенденцию ни увеличивать, ни уменьшать чистоту узла. Перестановка полезной переменной, как правило, приводит к относительно большому уменьшению среднего усиления по Джини. Важность GINI тесно связана с локальной функцией принятия решений, которую случайный лес использует для выбора наилучшего доступного разбиения. Следовательно, для вычисления не требуется много дополнительного времени. С другой стороны, среднее усиление Джини в локальных разбиениях не обязательно является тем, что наиболее полезно измерять, в отличие от изменения общей производительности модели. Важность Джини в целом уступает (на основе перестановок) переменной важности, поскольку она относительно более предвзята, более нестабильна и имеет тенденцию отвечать на более косвенный вопрос.

Сорен Хавелунд Веллинг
источник
Для интерпретации важности переменной, выходящей за рамки простого ранжирования, ознакомьтесь с разделом «Выбор двумерных переменных для задачи классификации» - Вивиан В. Нг и Лео Брейман digitalassets.lib.berkeley.edu/sdtr/ucb/text/692.pdf
Сорен Хавелунд Уэллинг,
Спасибо большое за Ваш ответ! Я видел, как некоторые места описывают среднее снижение точности как увеличение частоты ошибок OOB (таким образом, процент). Похоже, что опубликованная вами формула также предполагает частоту появления ошибок: (OOB_acc_perm_i - OOB_acc_base). Но вы уверены, что Среднее снижение точности относится к числу неправильно классифицированных наблюдений?
FlacoT
1
Запомните минус впереди, так как значение переменной уменьшается. Я не был слишком конкретен с единицами, они могли быть выражены в% или чистых соотношениях / пропорциях, не имеет значения. Но да как точность = 1-error_rate, VI_i = error_rate_perm_i - error_rate_base. Для регрессии единицей важности переменной перестановки обычно является уменьшение% объясненной дисперсии, а единицей важности Джини является среднее уменьшение mean_square_error-gain. «Но вы уверены, что Среднее снижение точности относится к числу неправильно классифицированных наблюдений? » - Нет, точность - это доля, а не число.
Сорен Хавелунд Веллинг
10

Вот описание среднего снижения точности (MDA) из справочного руководства randomForest:

Первая мера вычисляется на основе перестановки данных OOB: для каждого дерева записывается ошибка прогнозирования в части данных вне пакета (частота ошибок для классификации, MSE для регрессии). Затем то же самое делается после перестановки каждой переменной-предиктора. Разница между ними затем усредняется по всем деревьям и нормализуется по стандартному отклонению различий. Если стандартное отклонение разностей равно 0 для переменной, деление не выполняется (но в этом случае среднее значение почти всегда равно 0).

Согласно описанию, «точность» в MDA на самом деле относится к точности моделей одиночного дерева , независимо от того, что нас больше волнует уровень ошибок леса . Так,

«Означает ли это, что удаление Petal.Length из модели приведет только к дополнительной ошибочной классификации в среднем примерно 8 наблюдений?»

  • Среднее (снижение точности деревьев)Стандартное отклонение (снижение точности деревьев)
  • Среднее (снижение точности деревьев)

ЧАС0:Узлы, построенные предиктором я бесполезен ни в каких деревьях
ЧАС1:Узлы, построенные предиктором я Полезно

Как примечание, процедура MDA, описанная Сореном, отличается от реализации пакета randomForest. Это ближе к тому, что мы хотим от MDA: снижение точности всей модели леса. Тем не менее, модель, вероятно, будет соответствовать другим без Petal.Length и больше полагаться на других предикторов. Таким образом, MDA Сорен был бы слишком пессимистичным.

Jianyu
источник
Два дополнительных вопроса: 1. Есть ли идея, если другие пакеты используют более интуитивный MDA, описанный @Soren? 2. Если интерпретация MDA в RandomForest является тестовой статистикой, есть ли что-то вроде практического правила относительно того, что достаточно большая тестовая статистика является отклонением H0? Соответствует ли MDA известному распространению?
FlacoT
1. Извините, я не пробовал другой пакет. 2. Это просто похоже на тестовую статистику. Ни дистрибутив недоступен (насколько я знаю, мало кто изучал это), ни сам тест не имеет смысла - я не думаю, что тест завершает что-либо о FOREST, что является нашим реальным интересом.
Jianyu
4

Недавнее (сообщение в блоге) [ https://explained.ai/rf-importance/index.html] от команды из Университета Сан-Франциско показывает, что стратегии важности по умолчанию как в R (randomForest), так и в Python (scikit) ненадежны во многих сценариях данных. В частности, среднее снижение показателей важности примесей смещается, когда потенциальные переменные предиктора различаются по шкале измерения или количеству категорий.

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

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

user4959
источник