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

 
트레이더 박사 :

평가 탭의 "CSV 파일" 및 "R 데이터 세트"는 데이터 소스를 지정하는 다른 방법일 뿐입니다. 동일한 데이터를 제출하면 모델을 테스트할 때의 결과가 동일합니다.

래틀을 시작하기 전에 실행하면

, 그러면 이 동일한 dataset_validate를 이제 평가 탭에서 R 데이터 세트로 사용할 수 있습니다. 그러나 모델 유효성 검사 결과는 결국 csv 파일 옵션을 선택하고 C:/dummy_set_validation.csv 파일을 지정하면 두 경우 모두 테스트용 데이터가 동일하게 되는 것과 같습니다.

훈련 자체는 다른 파일인 dummy_set_features.csv에 있었으므로 두 파일의 데이터가 다르고 시간에 전혀 의존하지 않기 때문에 여기서 미래를 보는 것은 불가능합니다(그러나 공식에 의존). 나는 뉴런이 훌륭한 일을 했고 결과를 결정하는 6개의 입력을 찾았고 나머지 입력의 영향을 줄였으며 일부 신경 논리로 원하는 공식을 설명했다고 생각합니다.

만일을 대비하여 중복 행을 찾기 위해 두 파일을 모두 확인했지만 여전히 존재하는지 알 수 없습니다. 다음은 R 코드입니다.

래틀이 시작되기 전에 이 작업이 완료되면 dataset_train 및 dataset_validate 테이블을 교육 및 모델 유효성 검사에 사용할 수 있으며 반복되지 않습니다. 글로리 R.

모델 검증을 위한 파일은 훈련 세트에서 23번의 반복을 포함하고 있지만 여기에 3000개의 고유한 라인이 더 있으므로 모델 평가에 큰 영향을 미치지 않습니다.

분명히 나는 내가 원하는 것을 설명할 수 없습니다.

1. 두 파일의 시작 날짜와 종료 날짜를 제공할 수 있습니까?

2. 이 파일은 막대 도착 후 막대를 모방하기 때문에 dataset_validate 파일에서 아무 것도 제거할 수 없습니다.

 

나는 아침부터 이것에 대해 생각해 왔는데, 사실 그렇게 간단하지가 않다.

공식에 따르면 총 2^6 = 64개의 입력 조합이 사용됩니다. 학습 알고리즘이 이 6개 입력의 중요성을 어떻게든 결정하면 64개 조합을 모두 기억할 수 있습니다. 그런 다음 유효성 검사 세트의 모든 입력 조합이 고유하다는 것은 더 이상 중요하지 않습니다. 모델은 해당 6개의 중요한 입력만 취하고 이미 알고 있는 답을 결정합니다. 그것이 뉴런과 함께 나에게 일어난 일입니다. 이제 교육 파일에서 1,3,5,7,9,11 입력의 몇 가지 조합을 제거했지만 유효성 검사 파일에는 유사한 조합을 남겼습니다. 훈련 중 오류는 이전과 같이 0%로 유지되었지만 검증 중에 이러한 새로운 조합에서 50%로 증가했습니다. 그리고 이것은 좋지 않습니다. Forex에서는 스프레드가 예금을 마이너스로 가져갔을 것입니다. SanSanych가 맞습니다. 재교육에 관한 모든 것입니다. 제가 틀렸음을 인정합니다.

분명히 이것이 많은 모델이 Forex에서 작동하지 않는 이유입니다. 단순히 특정 조합을 기억하지만 새로운 조합에는 대처할 수 없습니다.

 
산산이치 포멘코 :

분명히 나는 내가 원하는 것을 설명할 수 없습니다.

1. 두 파일의 시작 날짜와 종료 날짜를 제공할 수 있습니까?

2. 이 파일은 막대 도착 후 막대를 모방하기 때문에 dataset_validate 파일에서 아무 것도 제거할 수 없습니다.

아니오, 맞습니다. 알겠습니다. 당신이 말하는 것은 외환에 적용되며 나는 그것에 동의합니다. 그러나 나는 Alexey의 파일에 대해 이야기하고 있었고 그 파일로 모델을 훈련했습니다.

https://c.mql5.com/3/96/dummy_set_features.zip - 교육

https://c.mql5.com/3/96/dummy_set_validation.zip - 유효성 검사

파일의 결과는 "1-mod(sum(input_1; input_3 ; input_5 ; input_7 ; input_9 ; input_11);2)" 공식에 의해 결정됩니다.

언급한 파일에 대한 링크를 제공하면 해당 파일에서 뉴런을 훈련시키도록 노력하겠습니다.

 
얘들아,

중요한 특징을 강조하긴 했지만, 나는 숲이 모든 데이터에 대해 재훈련되었다는 아이디어를 정확하게 파악했습니다. 그를 위해 데이터를 지우고 다시 훈련해야 합니다.

NN은 데이터 정리 없이 정상적으로 학습했는가?

감사해요
 
트레이더 박사 :

아니오, 맞습니다. 알겠습니다. 당신이 말하는 것은 외환에 적용되며 나는 그것에 동의합니다. 그러나 나는 Alexey의 파일에 대해 이야기하고 있었고 그 파일로 모델을 훈련했습니다.

https://c.mql5.com/3/96/dummy_set_features.zip - 교육

https://c.mql5.com/3/96/dummy_set_validation.zip - 유효성 검사

파일의 결과는 "1-mod(sum(input_1; input_3 ; input_5 ; input_7 ; input_9 ; input_11);2)" 공식에 의해 결정됩니다.

언급한 파일에 대한 링크를 제공하면 해당 파일에서 뉴런을 훈련시키도록 노력하겠습니다.

아카이브에 보관하십시오.

알데이타입니다. Open R, load rattle 및 데이터 프레임을 사용할 수 있습니다.

"R1.F1" "R1.F3" "R1.F4" "R1.F5" "R1.F6" - 학습용이며 문자 Fi로 표시되는 다른 대상 변수가 있습니다.

"R2.F1" "R2.F3" "R2.F4" "R2.F5" "R2.F6"은 확인용입니다.

"Rat_DF1" "Rat_DF2" "Rat_DF3"은 모든 대상 변수를 포함하는 파일입니다.

파일:
ALL_cod.zip  3281 kb
 
알렉세이 버나코프 :
얘들아,

중요한 특징을 강조하긴 했지만, 나는 숲이 모든 데이터에 대해 재훈련되었다는 아이디어를 정확하게 파악했습니다. 그를 위해 데이터를 지우고 다시 훈련해야 합니다.

NN은 데이터 정리 없이 정상적으로 학습했는가?

감사해요
예, 첫 번째 게시물의이 작업에 대해 모든 것이 그렇습니다. 그러나 Forex에 NN을 사용하는 경우 쓰레기에 대한 NN도 새 데이터에 대해 재훈련되고 더 나빠지므로 입력 데이터 선택도 관련이 있습니다.
 
트레이더 박사 :
예, 첫 번째 게시물의이 작업에 대해 모든 것이 그렇습니다. 그러나 Forex에 NN을 사용하는 경우 쓰레기에 대한 NN도 새 데이터에 대해 재훈련되고 더 나빠지므로 입력 데이터 선택도 관련이 있습니다.

d 테스트 데이터가 깨끗합니다. 그래서 어느 분야에나 패턴이 있습니다. 실제 데이터에서는 훈련 샘플을 여러 부분으로 나누고 모델을 훈련할 때 하위 샘플 또는 여러 하위 샘플의 지표를 제어하지 않고는 할 수 없습니다. 이것은 바로 규칙입니다.

그러나 랜덤 포레스트 와 같은 즉시 사용 가능한 모델의 재훈련 가능성을 확인하기 위해 검증에서 노이즈 - 완전한 쓰레기를 어리석게 배우는 것을 보는 것이 유용했습니다. 동시에 중요한 예측 변수가 정확하게 식별되지만.

그러나 14개의 예측 변수가 순수한 노이즈(연결 및 출력이 없는 무작위로 입력된 숫자)인 순수한 데이터에서도 숲은 이를 훈련에 사용하기 시작했습니다. 그리고 이것은 나 자신이 전에 만난 것입니다.

그리고 한 가지 더 중요한 측면이 있습니다. 테스트 케이스는 상호 독립적인 관찰을 포함합니다. 각 라인은 다른 라인에 의존하지 않습니다. 실제로 시계열에서는 이웃한 관측값이 의존합니다. 예를 들어 두 개의 인접한 눈금 값은 높은 상관 관계가 있습니다. 따라서 모든 방법은 원시 실제 데이터에서 실패할 것임을 강조합니다. 훈련을 위해 실제 데이터를 준비하는 올바른 방법은 이상적으로는 인접 관찰이 물리적으로 연결되지 않도록 선택하는 것입니다. 시계열의 경우 이는 윈도우가 20인 지표를 사용하는 경우 훈련 샘플의 인접 관찰을 최소 20단계의 차이로 가져와야 함을 의미합니다. 그래서 그들 사이에는 아무런 관계가 없습니다. 그런 다음 통계가 작동하기 시작하고 유사한 데이터의 무작위 클러스터가 아니라 패턴에 대한 실제 학습이 시작됩니다. 날 이해 해주길 바래.

출장에서 돌아올 때도 실제 Forex 데이터를 공개적으로 실험합니다. 그리고 패턴으로 수익을 내기 위한 실질적인 목적으로 함께 하게 될지도 모릅니다.

알렉세이

 
트레이더 박사 :

하지만 신경망은 블랙박스와 같아서 해법의 논리를 알 수 없다. 가중치를 보고 각 입력에 대한 평균 절대값 을 결정하고 차트를 그릴 수 있습니다. 그리고 1, 3, 5, 7, 9, 11이 나머지보다 더 중요하다는 것을 알아내십시오. 그러나 동시에 나머지 입력도 어떤 이유로 사용되며 0 가중치는 어디에도 없습니다. 즉, 다른 방식으로 밝혀졌습니다. 먼저 훈련을 받은 다음 중요한 입력을 결정할 수 있습니다.

NN 대비 알고리즘을 사용해 보십시오. 이 알고리즘은 두 입력("수동으로" 보고 선택하지 않아도 됨)과 연결(물론 은닉층 뉴런)을 독립적으로 제거할 수 있습니다. 출력에서 작업 논리에 대한 간략한 설명을 얻으십시오.
 
산산이치 포멘코 :

아카이브에 보관하십시오.

알데이타입니다. Open R, load rattle 및 데이터 프레임을 사용할 수 있습니다.

"R1.F1" "R1.F3" "R1.F4" "R1.F5" "R1.F6" - 학습용이며 문자 Fi로 표시되는 다른 대상 변수가 있습니다.

"R2.F1" "R2.F3" "R2.F4" "R2.F5" "R2.F6"은 확인용입니다.

"Rat_DF1" "Rat_DF2" "Rat_DF3"은 모든 대상 변수를 포함하는 파일입니다.

고마워, 나는 그것을 시도했다. 뉴런이 쉽게 학습하고 그 결과를 테스트 데이터 세트에도 저장하기 때문에 예측 변수를 선택 하는 데 많은 노력을 기울였음을 알 수 있습니다.

아래 결과는 R1.F3에 대한 교육을 참조합니다.

1) Rattle에서 재미있는 결과가 나왔습니다. 표준 구성의 HH는 훈련/검증/테스트 오류(30%/29%/33%)를 보여주었습니다. R2.F3의 오류 - 35%. 그러나 이 모든 것은 단지 좋은 경우일 뿐입니다. 사실, 다른 구성에서는 쉽게 부족하거나 과도하게 훈련될 것입니다. 여기에서는 운이 좋습니다.

2) 그런 다음 제어 없이 학습하는 간단한 대략적인 접근 방식, 200개의 숨겨진 뉴런, 결과가 개선되지 않을 때까지 네트워크를 훈련했습니다. 훈련/검증/테스트/R2.F3 오류 - 2%/30%/27%/45%. 이것은 이해할 수 있습니다. 네트워크가 재교육되었습니다.

3) 통제로 학습합니다. 이것은 나무와 다르지만 뉴런의 경우 다시 훈련하지 않으려면 항상 이 작업을 수행해야 합니다. 요점은 때때로 훈련을 일시 중지하고 훈련/검증/테스트 결과를 확인하는 것입니다. 결과 확인을 위한 황금률을 모르지만 완전히 정상적인 접근 방식은 훈련 데이터 세트에서 훈련한 다음 검증 및 테스트 데이터 세트의 오류를 보고 검증/테스트의 오류가 감소하는 것을 멈추면 훈련을 중지하는 것입니다. 이것은 재교육에 대한 일종의 보장을 제공합니다. 이 전체 과정에서 R2.F3은 사용할 수 없는 것으로 간주되며, 이에 대한 테스트는 교육이 종료된 후에만 수행됩니다. 이 경우 훈련/검증/테스트/R2.F3 오류는 27%/30%/31%/37%입니다. 여기서 다시 오버트레이닝이 관찰되지만 작습니다. 기차 오류가 눈에 띄게 덜 검증/테스트 오류가 된 후 교육 프로세스를 더 일찍 중지할 수 있었지만 이것은 이미 추측하고 있습니다... 도움이 될 수 있지만 할 수 없습니다.

"R1.F1"에는 3개의 값이 있는 대상 변수가 있습니다. Rattle은 뉴런으로 이를 수행할 수 없으며 R로 고유한 코드를 작성해야 합니다. 이 데이터 세트를 놓쳤습니다.

"R1.F4" "R1.F5" "R1.F6"은 4가지 오류 모두에 대해 Rattle의 뉴런에서 거의 동일한 결과를 제공했습니다. 그들과 더 이상 일하지 않았습니다.

 

교수법에 대해.

여기에 일반적으로 적용 가능하고 좋은 결과를 제공하는 표준 방법을 설명했습니다. https://www.mql5.com/ru/blogs/post/661499

간단히 설명하겠습니다. 모든 데이터를 훈련과 검증의 두 부분으로 나눕니다. 유효성 검사는 적합하다고 생각하는 만큼 커야 합니다. 나는 그렇게 했다. 나는 15년의 짧은 인용문을 받아들입니다. 나는 진입과 퇴장을 계산하고 관측값이 물리적으로 다르도록 데이터를 가늘게 합니다(n 막대를 통해 가져옵니다. ). 이것이 올바른 이유를 고려하십시오. 데이터는 상호 독립적이 됩니다.

다음은 훈련 부분(최대) - 과거 가장 먼 10년. 교차 검증을 위해 행 인덱스를 생성합니다. 즉, 데이터를 날짜별로 엄격하게 구분된 5개의 동일한 조각으로 나눕니다. 교차 검증에서 모델은 깊이, 반복 횟수 등과 같은 훈련 매개변수를 반복하며 4개의 부분 훈련 부분에서 학습하고 1/5 훈련 부분에서 오류를 측정합니다. 이 작업을 5회 수행하며 매번 5개에서 다른 테스트 조각을 선택합니다. 그 결과 5개의 오류 메트릭이 생성됩니다(한 세트의 훈련 매개변수에 대해). 그것들은 평균화되어 훈련에 포함되지 않은 데이터에 대한 오류의 테스트 값으로 제공됩니다.

또한 모델은 이 작업을 n * m * s * r번 수행합니다. 여기서 n, m, s, r은 훈련 매개변수입니다. 그리드 스윕입니다. 수백 번의 반복에 도달할 수 있습니다. 당신은 무작위 검색 또는 유전을 할 수 있습니다. 에즈 유유 봐.

다음으로, 훈련 매개변수 세트에 해당하는 교차 검증을 위한 오류 메트릭 테이블을 얻습니다. 어리석게도 최상의 결과와 이러한 매개 변수를 취하는 것이 필요합니다. 그런 다음 이 매개변수에 대해 전체 훈련 세트를 훈련합니다. NN의 경우 재교육이 발생하지 않도록 반복 횟수에 대한 제한도 지정됩니다.

그리고 마지막에는 샘플 외 성능을 평가하기 위해 5년 동안 모델을 검증합니다.

일반적으로 교차 검증은 효과적인 모델 훈련을 위한 최고의 선택입니다. 나는 당신이 시도하는 것이 좋습니다.

R의 패키지는 캐럿입니다.

소통까지.

알렉세이

СОПРОВОЖДЕНИЕ ЭКСПЕРИМЕНТА ПО АНАЛИЗУ ДАННЫХ ФОРЕКСА: первое серьезное обучение модели и результаты
СОПРОВОЖДЕНИЕ ЭКСПЕРИМЕНТА ПО АНАЛИЗУ ДАННЫХ ФОРЕКСА: первое серьезное обучение модели и результаты
  • 2016.02.27
  • Alexey Burnakov
  • www.mql5.com
Начало по ссылкам: https://www.mql5.com/ru/blogs/post/659572 https://www.mql5.com/ru/blogs/post/659929 https://www.mql5.com/ru/blogs/post/660386 https://www.mql5.com/ru/blogs/post/661062
사유: