Как я могу получить функцию плотности вероятности из регрессионного случайного леса?
Я использую случайный лес для задачи регрессии, чтобы предсказать значения меток Test-Y для данного набора Test-X (новые значения функций). Модель прошла обучение по заданному Train-X (функции) и Train-Y (метки). "randomForest" из R очень хорошо подходит для прогнозирования числовых значений Test-Y. Но это не все, чего я хочу.
Вместо числа я хочу использовать случайный лес для получения функции плотности вероятности. Я искал решение в течение нескольких дней, и вот что я нашел до сих пор:
"randomForest" не производит вероятности для регрессии, но только в классификации. (через "Предсказание" и настройку type = prob).
Использование "QuantregForest" предоставляет хороший способ создания и визуализации интервалов прогнозирования. Но все еще не функция плотности вероятности!
Любая другая мысль по этому поводу?
2 ответа
Пожалуйста, смотрите predict.all
параметр predict.randomForest
функция.
library("ggplot2")
library("randomForest")
data(mpg)
rf = randomForest(cty ~ displ + cyl + trans, data = mpg)
# Predict the first car in the dataset
pred = predict(rf, newdata = mpg[1, ], predict.all = TRUE)
hist(pred$individual)
Вы также можете использовать quantregForest с очень тонкой сеткой квантилей, преобразовать их в "накопительную функцию распределения (cdf)" с R-функцией ecdf и преобразовать этот cdf в оценку плотности с помощью оценщика плотности ядра.