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

 
트레이더 박사 :
외환 거래를 사용할 때 중요성을 계속 불신하십시오. Iris는 매우 단순한 데이터이며 사용 가능한 데이터와 클래스 사이 에 직접적인 패턴 이 있습니다. RF, 홍채 클래스를 결정할 수 있는 예측 변수 의 최소 집합을 찾는 것으로 충분합니다.

그리고 어떤 RF가 직접적인 의존성을 잡을 수 없습니까? 예측 변수가 썩었다는 사실 때문에 시장에서 작동하지 않는 것 같습니다. 정상적인 예측 변수가 있으면 95% 미만의 오차로 홍채와 같이 작동합니다.

 

홍채가 있으면 모든 것이 간단합니다. 꽃잎이 이런 저런 길이이면 이것은 클래스 1이고, 이런 저런 너비이면 이것은 이미 클래스 2 등입니다. RF가 하는 일은 목표 값에 가장 잘 맞는 예측 변수 값의 구간을 찾는 것입니다.

이 작업의 경우 숲도 필요하지 않으며 90%의 정확도에 하나의 나무로 충분합니다.

 Rule number: 2 [Species=setosa cover= 33 ( 31 %) prob= 1.00 ]
   Petal.Length< 2.6

 Rule number: 7 [Species=virginica cover= 35 ( 33 %) prob= 0.00 ]
   Petal.Length>= 2.6
   Petal.Length>= 4.85

 Rule number: 6 [Species=versicolor cover= 37 ( 35 %) prob= 0.00 ]
   Petal.Length>= 2.6
   Petal.Length< 4.85

즉, 예측 변수 값의 특정 범위 또는 그 조합이 특정 클래스에 해당하고 이러한 간격이 교차하지 않으면 나무 또는 숲이 모든 것을 100% 결정할 것입니다.

Forex 종속성은 훨씬 더 복잡하고 포리스트는 목표 값을 설명하기 위해 수십 개의 예측자가 필요합니다. 포리스트는 목표 값을 설명하는 예측자 구간과 그 조합을 확실히 찾을 것이지만 논리나 분석 없이 선택된 조합일 뿐입니다. 숲이 결정을 내리기 위해 취하는 것(소음 또는 정말 중요한 예측 변수)은 우연의 문제입니다. Forex 포레스트는 적합하지 않은 예측 변수를 미리 제거하고 필요한 예측 변수만 훈련에 남겨야 올바르게 작동합니다. 그리고 문제는 필요한 예측 변수가 여전히 어떻게 든 결정되거나 발견되어야 하며 숲은 이에 대한 조수가 아니라는 것입니다.

ForeCA 아직 할 수 없었습니다.

대부분의 시간은 훈련 테이블의 cov() 다음에 고유값 = 0인 예측 변수를 제거하는 데 소비되었습니다(특별하게 상관된 예측 변수만 적합하다고 생각합니다). 하루 후 다음 오류로 인해 훈련되지 않은 ForeCA 모델 자체를 훈련하게 되었습니다.

unit-variance: Mean relative difference: 3.520041 e- 06
Error in check_whitened(out$score, FALSE ) : Data must be whitened:
         Each variable must have variance 1 .

패키지는 예측 변수에 대해 매우 까다로우며 많은 제한 사항이 있습니다. 나는 마지막 오류가 무엇을 의미하는지조차 알지 못하지만 계속 이해할 것입니다.

나중에 추가됨:
Google은 예측 변수를 삭제하는 것은 선택 사항이라고 말합니다. 상관 관계가 중단되는 방식으로 변환할 수 있습니다. 그러면 공분산 행렬은 ForeCA에 필요한 전체 순위를 갖게 됩니다. 미백을 위해 패키지 자체에 몇 가지 기능이 있습니다(반만 사용하면 작동하지 않음, 알아내야 함). 여기에 추가로 아래 링크의 이론도 있습니다.
ForeCA 패키지를 올바르게 사용하려면 먼저 다음을 수행하는 방법을 이해하고 배워야 합니다.
http://stats.stackexchange.com/questions/23420/is-whitening-always-good
http://courses.media.mit.edu/2010fall/mas622j/whiten.pdf

 
트레이더 박사 :

1) Forex 포레스트는 부적합한 예측변수를 사전에 제거하고 훈련에 필요한 예측변수만 남겨둔 경우에만 올바르게 작동합니다. 그리고 문제는 필요한 예측 변수가 여전히 어떻게 든 결정되거나 발견되어야 하며 숲은 이에 대한 조수가 아니라는 것입니다.

2) 패키지는 예측 변수에 대해 매우 까다롭고 많은 제한 사항이 있습니다. 나는 마지막 오류가 무엇을 의미하는지조차 알지 못하지만 계속 이해할 것입니다.

1) 내가 보기에 그러한 선택을 하는 방법에 대해 상당히 좋은 아이디어를 제안했지만 아무도 관심을 갖지 않지만 직접 구현할 수 없습니다.

2) 데이터 양만 줄이십시오. 그렇지 않으면 자신이 알고 있습니다)

 

홍채에 대한 계속해서, 외환보다 데이터가 더 간단하고 동시에 더 많은 정보를 제공합니다...

가격과 유사한 작업을 수행해야 합니다. 이 게시물을 이미 게시했지만 아무도 응답하지 않았습니다. 다시 시도하겠습니다. VR에는 동적 시간 왜곡 - 동적 시간 왜곡(DTW)과 같은 것이 있습니다. 여기에서 사용할 수 있습니다. 가격 차트를 더 읽기 쉽게 만들고 결과적으로 알고리즘에 대해 더 잘 인식할 수 있도록 합니다.

data_driven_time_warp <- function (y) {
  cbind(
    x = cumsum(c( 0 , abs(diff(y)))),
    y = y
  )
}

y <- cumsum(rnorm( 200 ))+ 1000

i <- seq( 1 ,length(y),by= 10 )
op <- par(mfrow=c( 2 , 1 ), mar=c(. 1 ,. 1 ,. 1 ,. 1 ))
plot(y, type= "l" , axes = FALSE )
abline(v=i, col= "grey" )
lines(y, lwd= 3 )
box()
d <- data_driven_time_warp(y)
plot(d, type= "l" , axes= FALSE )
abline(v=d[i, 1 ], col= "grey" )
lines(d, lwd= 3 )
box()
par(op)

모든 것이 멋지게 보이지만 슬픈 점은 이러한 변환의 결과로 두 개의 x 및 y 좌표, 시간 (합성) 및 값을 얻는다는 것입니다.

d
                x        y
  [ 1 ,]   0.000000 1001.393
  [ 2 ,]   1.081118 1002.474
  [ 3 ,]   2.799970 1004.193
  [ 4 ,]   3.706653 1005.100
  [ 5 ,]   3.867351 1005.260
  [ 6 ,]   4.654784 1004.473
  [ 7 ,]   5.000202 1004.127
  [ 8 ,]   6.665623 1005.793
  [ 9 ,]   7.415255 1005.043
 [ 10 ,]   7.956572 1005.584
 [ 11 ,]   8.403185 1005.138
 [ 12 ,]   9.352230 1004.189
 [ 13 ,]   9.913620 1004.750
 [ 14 ,]   10.249985 1004.414

문제는 속성을 잃지 않도록 이 변환을 일반 벡터로 반환하는 방법입니다.

이것이 변환의 모습입니다. 상단은 정상이고 하단은 dtw입니다.

D.T.W.

 
mytarmailS :

1) 내가 보기에 그러한 선택을 하는 방법에 대해 상당히 좋은 아이디어를 제안 했지만 아무도 관심을 갖지 않지만 직접 구현할 수 없습니다.

2) 데이터 양만 줄이십시오. 그렇지 않으면 자신이 알고 있습니다)

당신은 무엇을 제안합니까? 내가 놓친 것으로 밝혀졌다? 당신의 아이디어를 반복할 수 있습니까?
 
산산이치 포멘코 :
당신은 무엇을 제안합니까? 내가 놓친 것으로 밝혀졌다? 당신의 아이디어를 반복할 수 있습니까?
내가 클러스터링에 대해 쓴 곳을보십시오. 거기에서 본질을 아주 자세히 설명했습니다.
 
mytarmailS :

문제 는 속성을 잃지 않도록 이 변환을 일반 벡터로 반환하는 방법입니다.

그래서, 이것에 대한 어떤 생각이 있습니까??
 

ForeCA로 또 다른 예를 만들었습니다. 아카이브에는 테스트를 위한 작은 테이블과 함께 작업하기 위한 코드가 있습니다.
이번에는 모든 것을 올바르게 했습니다.
모델에 대한 교육 데이터가 포함된 고유한 테이블을 사용할 수 있습니다. 가장 중요한 것은 요소가 없는 행렬이어야 한다는 것입니다(lm을 사용한 교육, 회귀만 가능). 행 수는 예측자 수보다 훨씬 많아야 합니다. 그렇지 않으면 ForeCA에 오류가 발생합니다.
내 목표 값은 0과 1이며, 다른 값은 정확도가 잘못 결정됩니다. 만약 있다면 회귀 결과가 클래스로 반올림되는 위치에서 귀하의 경우에 대해 RegressionToClasses01(regr)의 코드를 수정하십시오.
trainData - 훈련 데이터
trainDataFT - 전면 테스트 데이터

결과:
원본 데이터에 대한 lm: 교육 데이터에 대한 정확도 75% 및 새 데이터에 대한 정확도 57%.
foreCA의 14개 구성 요소 모두에 대한 lm: 훈련 데이터에 75%, 새로운 데이터에 61%. 조금 더 낫지만 이 경우 +4%는 +1 올바른 결과일 뿐이며 테이블은 매우 작습니다. :)

즉, 예측 변수가 미리 선택되어 있는 경우 ForeCA 이후에 더 나빠서는 안 되며 몇 퍼센트의 정확도를 추가할 수도 있습니다.

ForeCA 구성 요소의 수에 따라 정확도가 달라지는 또 다른 그래프가 추가되었습니다. 분명히 구성 요소가 클수록 결과가 더 안정적입니다. 최대 허용 가능한 구성 요소 수 = 예측 변수 수.


 

실험의 두 번째 부분 -

나는 이전에 14개의 예측 변수를 선택했고 14개에 임의의 값을 추가했습니다. ForeCA 구성 요소의 최대 허용 수는 이제 28입니다.

두 경우 모두(foreCA가 있거나 없는) 훈련 데이터의 28개 구성 요소 모두에 대한 예측 정확도는 76%이고 두 경우 모두 새 데이터의 정확도는 57%입니다.

제 생각에는 forCA가 예측기의 쓰레기에 대처하지 못했고 예상되는 기적을 보지 못했습니다.

 
mytarmails :
하도록 하다??
Renko 차트처럼 보입니다. Renko는 어떻게 든 막대의 mt5 터미널에 그려지며 여기에 비슷한 알고리즘이 필요합니다.
사유: