Но почему вы считаете что раз линейная модель делает экстраполяцию по формуле y=ax+b то она это делает отлично, а раз лес это делает по ближайшему известтному соседу то он ничего не умеет? Оба этих алгоритма имеют право на существование.
Я ничего не считаю, я показал вам пример и кучу статей. Какая разница отлично делает ЛР это или нет. Смысл в том что РФ не умеет экстраполировать ВОООБЩЕ, конструктивно, никогда и ни при каких условиях, а ЛР приведена для сравнения и наглядности.
Вот об этом я и спрашиваю и попросил всего лишь ПОНЯТНЫХ примеров почему вы считаете что это не так :)
Да причем тут "статьи"??? Вы что издеваетесь? Я же привел пример Минского, который как Ньютон только в ML и он так ярко облажался, а Вы говорите про вбросы на хабре или скрипты в R(читай: сам алгоритм не собирал подрочил немного параметры)
Если бы сами лес собрали на С++ то догадались бы сделать "экстраполяцию" аля MLP, а в R... Бог в помощь...
Я не знаю никакого Минского и Пожарского и не понимаю что у вас нарисовано на графиках ) нужно обучить RF какому-нибудь сэту с целевыми от 0 до 10 или до 100, а потом подсунуть вариант, в котором ответ должен быть заведомо больше 100, и РФ должен выдать толкьо 100
вот у автора в статье:
# set up functionality for modelling down the track
library(xgboost) # extreme gradient boosting
library(nnet) # neural network
library(ranger) # for random forests
library(rpart) # for demo single tree
library(rpart.plot)
library(viridis) # for palette of colours
library(grid) # for annotations
# sample data - training set
set.seed(134) # for reproducibility
x <- 1:100 + rnorm(100)
y <- 3 + 0.3 * x + rnorm(100)
# extrapolation / test set, has historical data plus some more extreme values
extrap <- data.frame(x = c(x, 1:5 * 10 + 100))
mod_lm <- lm(y ~ x)
mod_nn <- nnet(y ~ x, size = 8, linout = TRUE)
# XG boost. This is a bit more complicated as we need to know how many rounds
# of trees to use. Best to use cross-validation to estimate this. Note -
# I use a maximum depth of 2for the trees which I identified by trial and error
# with different values of max.depth and cross-validation, not shown
xg_params <- list(objective = "reg:linear", max.depth = 2)
mod_cv <- xgb.cv(label = y, params = xg_params, data = as.matrix(x), nrounds = 40, nfold = 10) # choose nrounds that gives best value of root mean square error on the training set
best_nrounds <- which(mod_cv$test.rmse.mean == min(mod_cv$test.rmse.mean))
mod_xg <- xgboost(label = y, params = xg_params, data = as.matrix(x), nrounds = best_nrounds)
mod_rf <- ranger(y ~ x)
p <- function(title) {
plot(x, y, xlim = c(0, 150), ylim = c(0, 50), pch = 19, cex = 0.6,
main = title, xlab = "", ylab = "", font.main = 1)
grid()
}
predshape <- 1
par(mfrow = c(2, 2), bty = "l", mar = c(7, 4, 4, 2) + 0.1)
p("Linear regression")
points(extrap$x, predict(mod_lm, newdata = extrap), col = "red", pch = predshape)
p("Neural network")
points(extrap$x, predict(mod_nn, newdata = extrap), col = "blue", pch = predshape)
p("Extreme gradient boosting")
points(extrap$x, predict(mod_xg, newdata = as.matrix(extrap)), col = "darkgreen", pch = predshape)
p("Random forest")
fc_rf <- predict(mod_rf, data = extrap)
points(extrap$x, fc_rf$predictions, col = "plum3", pch = predshape)
grid.text(0.5, 0.54, gp = gpar(col = "steelblue"),
label = "Tree-based learning methods (like xgboost and random forests)\nhave a particular challenge with out-of-sample extrapolation.")
grid.text(0.5, 0.04, gp = gpar(col = "steelblue"),
label = "In all the above plots, the black points are the original training data,\nand coloured circles are predictions.")
Я r плохо понимаю, понимаю только что от 100 до 150 RF должен был спрогнозировать адекватный результат как и другие модели, но этого не произошло
Не должен. Он выдаст локальную интерполяцию ближайших точек, как Knn(квази-оптимальный классификатор ) но грубее. Вы просто не умеете вращать базисы в деревьях RF и у Вас он выходит "кубиками"
ну вот в предыдущем сообщении добавил код со скрином, что там "не так"?
То что в алгоритме леса деревья делят точки по одному признаку ортогонально, если вращать базис то получится также как и в MLP, для этого нужно залезть в код леса и поправить или свой лес написать)))
ну извините, это уже тогда какой-то не такой лес получится, я же про классическую версию
я пытаюсь то что есть освоить, ку да там что-то писать..
в итоге то что, классический РФ не умеет экстраполировать
В ML нет "классики" есть то что работает и решает проблему. Осваивать чужие алгоритмы во всем их многообразии так же осмысленно как вникнуть в код всех индикаторов в кодобазе и маркете, что сами понимаете не разумно...
Есть не так много базовых эвристик в ML, которые нужно освоить самостоятельно, в ручную, чтобы "от пальцев отскакивало", чтобы ночью с бодуна разбудили и Вы сходу по памяти набили на С++ градиентный бустинг за пол часа(шутка), это не так сложно как кажется, а потом 100500 вариаций алгоритмов уровня статей на хабре сможете генерировать сами.
Охохо...
Dr. Trader повторял дважды, Вам тоже повторю, третий, говорят Бог и нечистый три раза хотят услышать, это что то значит, в мистическом контексте...
Новые точки В ПРОСТРАНСТВЕ ПРИЗНАКОВ, по отношению к физическому времени НЕ РАСПОЛОЖЕНО СТРОГО ЗА ПРЕДЕЛАМИ ОБУЧАЮЩЕГО ОБЛАКА ТОЧЕК, время это время, в фичи Ваши это фичи, ну не связанно физическое время линейно с например моментумом или спектром. "Экстраполируемые" точки будут где угодно и внутри и снаружи в Вашем признаковом пространстве.
а я про это и не говорил, я говорил только про то что структура древ такова, что если они разветвились по всем обучающим значениям целевых, то модель будет выдавать строго то, на что она разветвлена, и никаких новых значений она выдать не сможет.. по крайней мере это то, что написано в статье с примером. Ну я сделаю своих примеров и покажу потом тогда что у меня получилось :) Если было крайнее значение у целевой 100 при обучении, то на выходе она больше 100 не может выдать.. потмоу что все значения выше 100 попадут в лист 100, у нее чисто физически нет листов со значениями больше 100.
Если было крайнее значение у целевой 100 при обучении, то на выходе она больше 100 не может выдать.. потмоу что все значения выше 100 попадут в лист 100.
Yuriy Asaulenko: Нормирование совсем не просто так придумано.
это понятно, вопрос принципиальный по поводу функционирования деревьев. Как вы не нормируйте, любой выброс на новых данных дерево не экстраполирует, а выдаст крайнее значение, которое оно знает. Поэтому нормализовать данные для деревьев вообще то не обязательно.
это понятно, вопрос принципиальный по поводу функционирования деревьев. Как вы не нормируйте, любой выброс на новых данных дерево не экстраполирует, а выдаст крайнее значение, которое оно знает. Поэтому нормализовать данные для деревьев вообще то не обязательно.
В РФ для себя пока не вижу необходимости, а вот для МЛП не только нормирую, но и пропускаю входной сигнал через сигмоид -т.е. динамический диапазон входов ограничен и выбросы не имеют значения.
это понятно, вопрос принципиальный по поводу функционирования деревьев. Как вы не нормируйте, любой выброс на новых данных дерево не экстраполирует, а выдаст крайнее значение, которое оно знает. Поэтому нормализовать данные для деревьев вообще то не обязательно.
я думаю решение в данном случае простое, ввести обратную связь.
я думаю решение в данном случае простое, ввести обратную связь.
с уважением.
у меня есть :) мне вообще не принципиально что он не может экстраполировать или может.. модель будет по заранее известному набору предсказывать.. просто для общего образования
там еще ошибки какие-то по моему в либе с получением ошибок модели, чем меньше вборка тем всегда меньше ошибка, хз пока не опнял рпикола
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Но почему вы считаете что раз линейная модель делает экстраполяцию по формуле y=ax+b то она это делает отлично, а раз лес это делает по ближайшему известтному соседу то он ничего не умеет? Оба этих алгоритма имеют право на существование.
Я ничего не считаю, я показал вам пример и кучу статей. Какая разница отлично делает ЛР это или нет. Смысл в том что РФ не умеет экстраполировать ВОООБЩЕ, конструктивно, никогда и ни при каких условиях, а ЛР приведена для сравнения и наглядности.
Вот об этом я и спрашиваю и попросил всего лишь ПОНЯТНЫХ примеров почему вы считаете что это не так :)
Да причем тут "статьи"??? Вы что издеваетесь? Я же привел пример Минского, который как Ньютон только в ML и он так ярко облажался, а Вы говорите про вбросы на хабре или скрипты в R(читай: сам алгоритм не собирал подрочил немного параметры)
Если бы сами лес собрали на С++ то догадались бы сделать "экстраполяцию" аля MLP, а в R... Бог в помощь...
Я не знаю никакого Минского и Пожарского и не понимаю что у вас нарисовано на графиках ) нужно обучить RF какому-нибудь сэту с целевыми от 0 до 10 или до 100, а потом подсунуть вариант, в котором ответ должен быть заведомо больше 100, и РФ должен выдать толкьо 100
вот у автора в статье:
Я r плохо понимаю, понимаю только что от 100 до 150 RF должен был спрогнозировать адекватный результат как и другие модели, но этого не произошло
Не должен. Он выдаст локальную интерполяцию ближайших точек, как Knn(квази-оптимальный классификатор ) но грубее. Вы просто не умеете вращать базисы в деревьях RF и у Вас он выходит "кубиками"
ну вот в предыдущем сообщении добавил код со скрином, что там "не так"?
То что в алгоритме леса деревья делят точки по одному признаку ортогонально, если вращать базис то получится также как и в MLP, для этого нужно залезть в код леса и поправить или свой лес написать)))
ну извините, это уже тогда какой-то не такой лес получится, я же про классическую версию
я пытаюсь то что есть освоить, ку да там что-то писать..
в итоге то что, классический РФ не умеет экстраполировать
В ML нет "классики" есть то что работает и решает проблему. Осваивать чужие алгоритмы во всем их многообразии так же осмысленно как вникнуть в код всех индикаторов в кодобазе и маркете, что сами понимаете не разумно...
Есть не так много базовых эвристик в ML, которые нужно освоить самостоятельно, в ручную, чтобы "от пальцев отскакивало", чтобы ночью с бодуна разбудили и Вы сходу по памяти набили на С++ градиентный бустинг за пол часа(шутка), это не так сложно как кажется, а потом 100500 вариаций алгоритмов уровня статей на хабре сможете генерировать сами.
Охохо...
Dr. Trader повторял дважды, Вам тоже повторю, третий, говорят Бог и нечистый три раза хотят услышать, это что то значит, в мистическом контексте...
Новые точки В ПРОСТРАНСТВЕ ПРИЗНАКОВ, по отношению к физическому времени НЕ РАСПОЛОЖЕНО СТРОГО ЗА ПРЕДЕЛАМИ ОБУЧАЮЩЕГО ОБЛАКА ТОЧЕК, время это время, в фичи Ваши это фичи, ну не связанно физическое время линейно с например моментумом или спектром. "Экстраполируемые" точки будут где угодно и внутри и снаружи в Вашем признаковом пространстве.
а я про это и не говорил, я говорил только про то что структура древ такова, что если они разветвились по всем обучающим значениям целевых, то модель будет выдавать строго то, на что она разветвлена, и никаких новых значений она выдать не сможет.. по крайней мере это то, что написано в статье с примером. Ну я сделаю своих примеров и покажу потом тогда что у меня получилось :) Если было крайнее значение у целевой 100 при обучении, то на выходе она больше 100 не может выдать.. потмоу что все значения выше 100 попадут в лист 100, у нее чисто физически нет листов со значениями больше 100.
Если было крайнее значение у целевой 100 при обучении, то на выходе она больше 100 не может выдать.. потмоу что все значения выше 100 попадут в лист 100.
Нормирование совсем не просто так придумано.
это понятно, вопрос принципиальный по поводу функционирования деревьев. Как вы не нормируйте, любой выброс на новых данных дерево не экстраполирует, а выдаст крайнее значение, которое оно знает. Поэтому нормализовать данные для деревьев вообще то не обязательно.
это понятно, вопрос принципиальный по поводу функционирования деревьев. Как вы не нормируйте, любой выброс на новых данных дерево не экстраполирует, а выдаст крайнее значение, которое оно знает. Поэтому нормализовать данные для деревьев вообще то не обязательно.
это понятно, вопрос принципиальный по поводу функционирования деревьев. Как вы не нормируйте, любой выброс на новых данных дерево не экстраполирует, а выдаст крайнее значение, которое оно знает. Поэтому нормализовать данные для деревьев вообще то не обязательно.
я думаю решение в данном случае простое, ввести обратную связь.
с уважением.
я думаю решение в данном случае простое, ввести обратную связь.
с уважением.
у меня есть :) мне вообще не принципиально что он не может экстраполировать или может.. модель будет по заранее известному набору предсказывать.. просто для общего образования
там еще ошибки какие-то по моему в либе с получением ошибок модели, чем меньше вборка тем всегда меньше ошибка, хз пока не опнял рпикола