Порівняйте R-квадрат у двох різних моделях Random Forest


10

Я використовую пакет randomForest в R, щоб розробити випадкову лісову модель, щоб спробувати пояснити безперервний результат у "широкому" наборі даних з більшою кількістю предикторів, ніж зразків.

Зокрема, я підхоплюю одну модель РФ, яка дозволяє процедурі вибирати з набору змінних ~ 75 прогнозів, які я вважаю важливими.

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

... або в R:

1 - sum((y-predicted)^2)/sum((y-mean(y))^2)

Але тепер у мене є додаткові ~ 25 змінних предиктора, які я можу додати. При використанні набору ~ 100 прогнокторів R² вище. Я хочу перевірити це статистично, інакше кажучи, чи використовує набір ~ 100 предикторів, чи тестує модель значно краще при тестуванні даних, ніж модель, що використовує ~ 75 предикторів. Тобто, R2 від тестування моделі RF підходить для повного набору даних, значно вище, ніж R² від тестування моделі RF на зменшеному наборі даних.

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

Я намагаюся придумати якийсь підхід перестановки / перестановки, але нічого не спадає на думку.

Відповіді:


8

Перехресне підтвердження! Використовуйте функцію поїзда з каретою, щоб відповідати вашим 2 моделям. Використовуйте одне значення mtry (однакове для обох моделей). Caret поверне повторну вибірку оцінки RMSE та .R2

Див. Сторінку 3 віньєтки для карети (також у повному довіднику )


Я погоджуюся, окрім вашого упущення, що ОП повинна використовувати R-квадрат з коригуванням, оскільки саме для цього він призначений. Моделі мають однаковий Y, але різні набори прогнозів, тому для регулювання різниці витрачених ступенів свободи / складності моделі потрібне коригування R-квадрата. Інша проблема, яку я бачу, - це проблема розміру вибірки; ОП вимагає МАСИВНОГО розміру вибірки, щоб мати будь-яку реальну надію, це не просто перевищення, навіть із резюме.
LSC

@LSC Я б сказав, що якщо утримується додатковий набір даних (не використовується для вибору), вони можуть використовувати R2 без коригування, як його щойно нормалізований RMSE. Я згоден, що для цього їм знадобиться досить великий набір даних.
Зак

нові дані або старі, а все інше постійне, якщо 100 моделей у моделі порівняно з 25 матиме більш високий невідрегульований R-квадрат у порівнянні з R-квадратом з 25-ї моделі передбачувача. Це легко помітити при обчисленні суми помилок у квадраті між двома (більше термінів нижче SSE, всі інші однакові). Я думаю, що люди часто забувають, що більше термінів ніколи не зменшить R-квадрат, але якщо вони смердять відносно їх значення, вони можуть зменшити скоригований R-квадрат, що є кращим заходом, щоб подивитися на чубку долара.
LSC

"більше термінів ніколи не зменшить R-квадрат" <- Це твердження помилкове, коли обчислюють R2 поза вибіркою.
Зак

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

4

R2

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


для парного тесту я припускаю, що 2 моделі підходять на однакові складки? Так що k рядки matrx - це складки, а два стовпці - модель 1 і модель 2?
B_Miner

@B_Miner Точно.

1

Можливо, ви хочете думати з точки зору практичної значущості, а не статистичної значущості (або обох). Маючи достатньо даних, ви можете знайти статистично важливі речі, які не матимуть реального впливу на ваше використання. Я пам’ятаю, коли я аналізував модель, коли 5-ти сторонні взаємодії були статистично значущими, але коли передбачення моделі, включаючи все до 5-ти напрямків, порівнювались із прогнозами моделі, що включає лише двосторонні взаємодії та основні ефекти , найбільша різниця становила менше 1 людини (відповідь - кількість людей, і всі цікаві значення були від 0). Тож додаткової складності не варто. Тому подивіться на відмінності у ваших прогнозах, щоб побачити, чи достатньо різниць для виправдання додаткових витрат, якщо ні, то навіщо турбуватися навіть шукати статистичну значимість? Якщо різниці є досить великими, щоб виправдати витрати, якщо вони реальні, то я зазначаю інші пропозиції щодо перехресної перевірки.


1

R2

library(randomForest)
data(iris)
set.seed(42)

# split the data into training and testing sets
index <- 1:nrow(iris)
trainindex <- sample(index, trunc(length(index)/2))
trainset <- iris[trainindex, ]
testset <- iris[-trainindex, ]

# with species
model1 <- randomForest(Sepal.Length ~ Sepal.Width + Petal.Length +
   Petal.Width + Species, data = trainset)
# without species
model2 <- randomForest(Sepal.Length ~ Sepal.Width + Petal.Length + 
   Petal.Width, data = trainset)

pred1 <- predict(model1, testset[, -1])
pred2 <- predict(model2, testset[, -1])

y <- testset[, 1]
n <- length(y)

# psi is the mean squared prediction error (MSPE) estimate
# sigma2 is the estimate of the variance of the MSPE
psi1 <- mean((y - pred1)^2)
sigma21 <- 1/n * var((y - pred1)^2) 
# 95% CI:
c(psi1 - 1.96 * sqrt(sigma21), psi1, psi1 + 1.96 * sqrt(sigma21))

psi2 <- mean((y - pred2)^2)
sigma22 <- 1/n * var((y - pred2)^2) 
# 95% CI:
c(psi2 - 1.96 * sqrt(sigma22), psi2, psi2 + 1.96 * sqrt(sigma22))

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


0

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

> require(randomForest)
> rf.fit = randomForest(Species~.,data=iris,importance=TRUE)
> rf.fit$importance
                  setosa   versicolor   virginica MeanDecreaseAccuracy MeanDecreaseGini
Sepal.Length 0.036340893  0.021013369 0.032345037          0.030708732         9.444598
Sepal.Width  0.005399468 -0.002131412 0.007499143          0.003577089         2.046650
Petal.Length 0.319872296  0.297426025 0.290278930          0.299795555        42.494972
Petal.Width  0.343995456  0.309455331 0.277644128          0.307843300        45.286720

0

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

Будь ласка, запиши:

  1. Ви заявляєте, що R ^ 2 = ESS / TSS = 1 - RSS / TSS. Це справедливо лише в лінійному контексті. Рівність TSS = RSS + ESS справедлива лише в лінійній регресії з перехопленням. Таким чином, ви не можете використовувати ці визначення для випадкових лісів взаємозамінно. Ось чому RMSE та подібні є більш типовими функціями втрат.

  2. Що важливіше для статистичних цілей: R ^ 2 слідує за невідомим розподілом (також у лінійній установці). Це означає, що перевірка гіпотези зі статистичною значимістю за допомогою R ^ 2 не є такою простою. Перехресна перевірка, як згадував Зак , - хороший вибір.

Що стосується відповіді user88 : перехресне підтвердження з тестом Вілкоксона є коректним підходом. Нещодавній статтю використовується тест підписаних Вілкоксоном рангів та тести Фрідмана для порівняння різних методів та алгоритмів.

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