트레이딩의 머신러닝: 이론, 모델, 실전 및 알고리즘 트레이딩 - 페이지 497

 
박사 상인 :

그러나 선형 모델은 공식 y=ax+b에 따라 외삽을 수행하기 때문에 완벽하게 수행하고 포리스트는 가장 가까운 알려진 이웃에서 수행하므로 아무 것도 할 수 없다고 생각하는 이유는 무엇입니까? 이 두 알고리즘은 모두 존재할 권리가 있습니다.


나는 아무 것도 세지 않고 당신에게 예와 많은 기사를 보여주었습니다. LR을 완벽하게 만드는지 아닌지는 어떤 차이가 있습니까? 요점은 러시아 연방은 어떠한 상황에서도 건설적으로 전혀, 건설적으로 추정할 수 없으며 LR은 비교 및 명확성을 위해 제공된다는 것입니다.

그것이 내가 왜 그렇지 않다고 생각하는지에 대한 명확한 예를 묻고 요청한 것입니다. :)

 
알료샤 :



그리고 "기사"는 어떻습니까 ??? 장난해? 나는 Newton과 마찬가지로 ML에서만 매우 밝게 망쳐 놓은 Minsky의 예를 들었습니다. 당신은 Habré 또는 R의 스크립트를 채우는 것에 대해 이야기하고 있습니다 (읽기 : 알고리즘 자체는 몇 가지 매개 변수를 수집하지 않았습니다)


숲 자체가 C ++로 수집되었다면 그들은 MLP와 R에서 "외삽"을 할 것이라고 추측했을 것입니다 ... 신의 도움 ...


나는 Minsky와 Pozharsky를 알지 못하며 그래프에 무엇을 그렸는지 이해하지 못합니다.) RF를 0에서 10 또는 최대 100까지의 목표를 가진 일부 세트에 가르쳐야 하고, 그런 다음 변형을 슬립해야 합니다. 대답은 분명히 100보다 커야 하고 RF는 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 2 for 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." )

잘 이해가 안 가네요 100~150 RF 정도면 다른 모델들처럼 적당한 결과를 예상했어야 하는데 그게 안 된 걸로 압니다


 
알료샤 :

안된다. Knn(준최적 분류기)과 같이 가장 가까운 점의 로컬 보간을 생성하지만 더 거칠게 만듭니다. RF 트리에서 베이스를 회전하는 방법을 모르고 "큐브"로 얻습니다.


글쎄, 이전 메시지에서 화면과 함께 코드를 추가했는데 거기에 "잘못된" 것이 무엇입니까?

 
알료샤 :

포리스트 알고리즘에서 나무는 하나의 속성에 따라 점을 직교하게 분할한다는 사실, 기준을 회전하면 MLP에서와 동일하게 나타납니다. 이를 위해서는 포리스트 코드에 들어가서 자신의 포리스트를 수정하거나 작성해야 합니다. )))


글쎄요, 실례합니다. 이미 그런 종류의 숲이 아닙니다. 클래식 버전을 말하는 것입니다.

나는 그것이 무엇인지 마스터하려고 노력하고 있습니다. 거기에 무언가를 쓸 곳 ..

결국, 고전적인 RF가 외삽할 수 없는 것

 
알료샤 :

ML에는 "고전"이 없으며 작동하고 문제를 해결하는 것이 있습니다. 모든 다양성에서 다른 사람들의 알고리즘을 마스터하는 것은 코드 기반과 시장에 있는 모든 지표의 코드를 탐구하는 것만큼이나 의미가 있습니다.

ML에는 수동으로 마스터해야 하는 기본 휴리스틱이 많지 않으므로 "손가락에서 튀어나와" 밤에 숙취에서 깨어나 즉시 C++ 그래디언트 부스팅을 채울 수 있습니다. 30분 만에 메모리(농담), 이것은 보기만큼 어렵지 않으며, 그러면 Habré에 대한 기사 수준에서 알고리즘의 100,500 변형을 직접 생성할 수 있습니다.


오호호...

박사 상인 은 두 번 반복, 나도 당신에게 반복합니다, 세 번째, 그들은 신과 부정한 세 번 그들이 듣고 싶어, 그것은 신비로운 맥락에서 뭔가를 의미합니다 ...

기호 공간의 새로운 점 물리적 시간과 관련하여 교육적 포인트 클라우드 밖이 엄밀히 말하면 시간은 시간입니다. 기능에서 물리적 시간은 예를 들어 운동량이나 스펙트럼과 선형으로 연결되어 있지 않습니다. "외삽된" 포인트는 기능 공간의 내부와 외부 어느 곳에나 있습니다.


그러나 나는 그것에 대해 이야기하지 않았으며, 트리의 구조가 목표의 모든 훈련 값에 걸쳐 분기하면 모델이 분기된 것을 엄격하게 제공한다는 사실에 대해서만 이야기했습니다. 로, 그리고 그것은 새로운 가치를 줄 수 없을 것입니다 .. 적어도 이것은 기사에 예를 들어 쓰여진 것입니다. 글쎄, 나는 내 자신의 예를 만들고 내가 한 일을 보여줄 것입니다 :) 훈련 중에 대상이 극단 값 100을 가졌다면 출력에서 100 이상을 줄 수 없습니다 .. 모든 값이 100 이상은 시트 100에 속하며 물리적으로 100보다 큰 값을 가진 시트는 없습니다.

 
막심 드미트리예프스키 :

목표가 훈련 중에 극단값 100을 가졌다면 출력에서 100 이상을 생성할 수 없습니다.. 100을 초과하는 모든 값은 시트 100에 떨어지기 때문입니다.

표준화는 그냥 발명된 것이 아닙니다.
 
유리 아사울렌코 :
표준화는 그냥 발명된 것이 아닙니다.

이것은 이해할 수 있습니다. 질문은 나무의 기능에 대한 기본입니다. 어떻게 정규화하든 트리는 새 데이터에서 이상값을 외삽하지 않지만 알고 있는 극한 값을 제공합니다. 따라서 일반적으로 나무에 대한 데이터를 정규화할 필요가 없습니다.

 
막심 드미트리예프스키 :

이것은 이해할 수 있습니다. 질문은 나무의 기능에 대한 기본입니다. 어떻게 정규화하든 트리는 새 데이터에서 이상값을 외삽하지 않지만 알고 있는 극한 값을 제공합니다. 따라서 일반적으로 나무에 대한 데이터를 정규화할 필요가 없습니다.

러시아 연방에서는 아직 자신의 필요성을 느끼지 못하지만 MLP의 경우 정규화뿐만 아니라 입력 신호를 Sigmoid를 통해 전달합니다. 입력의 동적 범위는 제한되어 있으며 오버슈트는 문제가 되지 않습니다.
 
막심 드미트리예프스키 :

이것은 이해할 수 있습니다. 질문은 나무의 기능에 대한 기본입니다. 어떻게 정규화하든 트리는 새 데이터에서 이상값을 외삽하지 않지만 알고 있는 극한 값을 제공합니다. 따라서 일반적으로 나무에 대한 데이터를 정규화할 필요가 없습니다.

이 경우 해결책은 간단하다고 생각합니다. 피드백을 소개합니다.

감사합니다.

 
안드레이 키셀료프 :

이 경우 해결책은 간단하다고 생각합니다. 피드백을 소개합니다.

감사합니다.


나는 :) 그가 외삽할 수 없거나 할 수 있다는 것은 나에게 전혀 중요하지 않습니다 .. 모델은 이전에 알려진 세트에 따라 예측할 것입니다 .. 단지 일반 교육용

내 생각에는 rpicola를 알아낼 때까지 lib에 모델 오류가 발생하면 선택 항목이 작아질수록 오류도 작아집니다. xs

사유: