Если я запускаю randomForest
модель, я могу делать прогнозы на основе этой модели. Есть ли способ получить интервал прогнозирования для каждого из прогнозов, чтобы я знал, насколько «уверена» модель в своем ответе. Если это возможно, то просто ли это основано на изменчивости зависимой переменной для всей модели или она будет иметь более широкие и узкие интервалы в зависимости от конкретного дерева решений, которое использовалось для конкретного прогноза?
r
confidence-interval
random-forest
Дин МакГрегор
источник
источник
score
функцию для оценки производительности. Поскольку выходные данные основаны на большинстве голосов деревьев в лесу, в случае классификации это даст вам вероятность того, что этот результат будет правдивым, основываясь на распределении голосов. Я не уверен насчет регрессии .... Какую библиотеку вы используете?Ответы:
Это частично ответ на @Sashikanth Dareddy (так как он не помещается в комментарии) и частично ответ на оригинальное сообщение.
Запомните, что такое интервал прогнозирования, это интервал или набор значений, где мы прогнозируем, что будущие наблюдения будут лежать. Обычно интервал прогнозирования имеет 2 основных элемента, которые определяют его ширину, фрагмент, представляющий неопределенность относительно прогнозируемого среднего значения (или другого параметра), это часть доверительного интервала, и фрагмент, представляющий изменчивость отдельных наблюдений вокруг этого среднего значения. Доверительный интервал является довольно устойчивым благодаря центральной предельной теореме, и в случае случайного леса также помогает начальная загрузка. Но интервал прогнозирования полностью зависит от предположений о том, как данные распределяются, учитывая, что переменные предиктора, CLT и начальная загрузка не влияют на эту часть.
Интервал прогнозирования должен быть шире, если соответствующий доверительный интервал также будет шире. Другие вещи, которые могут повлиять на ширину интервала прогнозирования, - это предположения о равной дисперсии или нет, это должно исходить из знаний исследователя, а не из модели случайного леса.
Интервал прогнозирования не имеет смысла для категорического результата (вы могли бы сделать набор прогнозирования, а не интервал, но большую часть времени он, вероятно, был бы не очень информативным).
Мы можем увидеть некоторые проблемы, связанные с интервалами прогнозирования, путем симуляции данных, когда мы знаем точную правду. Рассмотрим следующие данные:
Эти конкретные данные соответствуют предположениям для линейной регрессии и довольно просты для случайного подбора леса. Мы знаем из «истинной» модели, что когда оба предиктора равны 0, среднее значение равно 10, мы также знаем, что отдельные точки следуют нормальному распределению со стандартным отклонением 1. Это означает, что интервал прогнозирования 95% основан на совершенных знаниях для эти точки будут от 8 до 12 (ну, на самом деле, с 8.04 до 11.96, но округление делает это проще). Любой предполагаемый интервал прогнозирования должен быть шире этого (отсутствие точной информации добавляет ширину для компенсации) и включать этот диапазон.
Давайте посмотрим на интервалы от регрессии:
Мы можем видеть, что есть некоторая неопределенность в оценочных средних (доверительный интервал), и это дает нам интервал прогнозирования, который шире (но включает) диапазон от 8 до 12.
Теперь давайте посмотрим на интервал, основанный на индивидуальных предсказаниях отдельных деревьев (мы должны ожидать, что они будут шире, поскольку случайный лес не извлекает выгоду из предположений (которые, как мы знаем, справедливо для этих данных), которые делает линейная регрессия):
Интервалы шире, чем интервалы прогнозирования регрессии, но они не охватывают весь диапазон. Они включают в себя истинные значения и, следовательно, могут быть допустимыми в качестве доверительных интервалов, но они только предсказывают, где находится среднее (прогнозируемое значение), но не являются дополнительным компонентом для распределения вокруг этого среднего. Для первого случая, когда x1 и x2 равны 0, интервалы не опускаются ниже 9,7, это очень отличается от истинного интервала прогнозирования, который уменьшается до 8. Если мы создадим новые точки данных, то будет несколько точек (гораздо больше чем 5%), которые находятся в интервалах истинности и регрессии, но не попадают в интервалы случайного леса.
Чтобы сгенерировать интервал прогнозирования, вам нужно будет сделать некоторые строгие предположения о распределении отдельных точек вокруг прогнозируемых средних, затем вы можете взять прогнозы из отдельных деревьев (загруженный фрагмент доверительного интервала), а затем сгенерировать случайное значение из предполагаемого распределение с этим центром. Квантили для этих сгенерированных кусочков могут формировать интервал прогнозирования (но я все равно протестирую его, возможно, вам придется повторить процесс еще несколько раз и объединить).
Вот пример выполнения этого путем добавления нормальных (так как мы знаем, что исходные данные использовали нормальные) отклонений к прогнозам со стандартным отклонением, основанным на оценочной MSE из этого дерева:
Эти интервалы содержат интервалы, основанные на совершенных знаниях, поэтому выглядите разумно. Но они будут сильно зависеть от сделанных допущений (допущения действительны здесь, потому что мы использовали знания о том, как моделировались данные, они могут быть не такими достоверными в реальных случаях данных). Я все еще повторял бы симуляции несколько раз для данных, которые больше похожи на ваши реальные данные (но симулированы, чтобы вы знали правду) несколько раз, прежде чем полностью доверять этому методу.
источник
Я понимаю, что это старая статья, но я провел несколько симуляций на эту тему и подумал, что поделюсь своими выводами.
@GregSnow сделал очень подробный пост об этом, но я считаю, что при расчете интервала с использованием прогнозов по отдельным деревьям он смотрел на который составляет только 70% интервал прогнозирования. Нам нужно взглянуть на чтобы получить интервал прогнозирования 95%.[ μ + 1,96 ∗ σ , μ - 1,96 ∗ σ ][ μ + σ, μ - σ] [ μ + 1,96 ∗ σ, μ - 1,96 ∗ σ]
Внося это изменение в код @GregSnow, мы получаем следующие результаты
Теперь, сравнивая их с интервалами, сгенерированными путем добавления нормального отклонения к прогнозам со стандартным отклонением, как MSE, как @GregSnow предположил, что мы получаем,
Интервал по обоим этим подходам сейчас выглядит очень близко. Построение интервала прогнозирования для трех подходов по распределению ошибок в этом случае выглядит следующим образом
Теперь давайте снова запустим симуляцию, но на этот раз увеличим дисперсию ошибки. Если наши расчеты интервалов прогнозирования хороши, мы должны получить более широкие интервалы, чем мы получили выше.
Теперь это ясно дает понять, что вычисление интервалов прогнозирования с помощью второго подхода является гораздо более точным и дает результаты, довольно близкие к интервалу прогнозирования из линейной регрессии.
Принимая предположение о нормальности, есть еще один более простой способ вычисления интервалов прогнозирования из случайного леса. Из каждого отдельного дерева мы имеем предсказанное значение ( ), а также среднеквадратическую ошибку ( ). Таким образом, предсказание для каждого отдельного дерева можно представить как . Используя свойства нормального распределения, наш прогноз из случайного леса будет иметь распределение . Применяя это к примеру, который мы обсуждали выше, мы получаем следующие результаты M S E i N ( μ i , R M S E i ) N ( ∑ μ i / n , ∑ R M S E i / n )μя MSЕя N(μi,RMSEi) N(∑μi/n,∑RMSEi/n)
Они очень хорошо сочетаются с линейными модельными интервалами, а также с подходом, предложенным @GregSnow. Но обратите внимание, что основополагающее предположение во всех обсуждаемых нами методах состоит в том, что ошибки следуют нормальному распределению.
источник
Если вы используете R, вы можете легко получить интервалы прогнозирования для прогнозов регрессии случайных лесов: просто используйте пакет
quantregForest
(доступен на CRAN ) и прочитайте статью Н. Майнсхаузена о том, как условные квантили можно вывести с помощью лесов квантильной регрессии и как они может использоваться для построения интервалов прогнозирования. Очень информативно, даже если вы не работаете с R!источник
Это легко решить с помощью randomForest.
Сначала позвольте мне разобраться с регрессионной задачей (если в вашем лесу 1000 деревьев). В
predict
функции у вас есть возможность вернуть результаты из отдельных деревьев. Это означает, что вы получите 1000 столбцов вывода. Мы можем взять среднее значение из 1000 столбцов для каждой строки - это обычный выходной сигнал RF, который был бы получен любым способом. Теперь, чтобы получить интервал прогнозирования, скажем, +/- 2 стандарт. все отклонения, которые вам нужно сделать, это для каждой строки из 1000 значений вычислить +/- 2-й стандарт. отклонения и сделать их ваши верхние и нижние границы вашего прогноза.Во-вторых, в случае классификации помните, что каждое дерево выводит либо 1, либо 0 (по умолчанию), а сумма по всем 1000 деревьям, деленная на 1000, дает вероятность класса (в случае двоичной классификации). Для того чтобы поставить интервал прогнозирования на вероятность, вам нужно изменить мин. Опция nodeize (см. документацию randomForest для точного названия этой опции), как только вы установите для нее значение >> 1, отдельные деревья будут выводить числа в диапазоне от 1 до 0. Теперь вы можете повторить тот же процесс, как описано выше для задача регрессии.
Я надеюсь, что в этом есть смысл.
источник
Я пробовал несколько вариантов (это все WIP):
Я фактически сделал зависимую переменную проблемой классификации с результатами в виде диапазонов вместо одного значения. Результаты, которые я получил, были плохими по сравнению с использованием простого значения. Я отказался от этого подхода.
Затем я преобразовал его в несколько задач классификации, каждая из которых была нижней границей для диапазона (результатом модели было то, будет ли она пересекать нижнюю границу или нет), а затем запустил все модели (~ 20), а затем объединить результат, чтобы получить окончательный ответ в виде диапазона. Это работает лучше, чем 1 выше, но не так хорошо, как мне нужно. Я все еще работаю над улучшением этого подхода.
Я использовал оценки OOB и "оставь один раз", чтобы решить, насколько хороши / плохи мои модели.
источник
Проблема построения интервалов прогнозирования для случайных лесных прогнозов была рассмотрена в следующей статье:
Чжан, Хаоже, Джошуа Циммерман, Дэн Нетлтон и Даниэль Дж. Нордман. «Случайные интервалы прогнозирования леса». Американский статистик, 2019.
Пакет R "rfinterval" является его реализацией, доступной в CRAN.
Монтаж
Чтобы установить R-пакет rfinterval :
использование
Быстрый старт:
Пример данных:
источник