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

 
박사 상인 :

rbind() 함수로 테이블을 결합할 수 있습니다.
MLP1 <- rbind(기차1, 테스트)

테스트(트레인2)란? 훈련 테이블과 테스트 테이블을 결합하는 이유는 무엇입니까? 테스트는 이미 준비된 훈련된 모델을 확인하기 위해 분리되어야 합니다.

모든 것이 원하는 만큼 쉽고 빠르지는 않을 것입니다. 간단히 데이터를 가져와서 Reshetov 모델에 제출하면 모델 자체가 예측 변수를 선별하고 가중치, 뉴런 수 및 기타 사항을 결정하는 데 사용됩니다. 그러나 일반 뉴런에서는 이것이 불가능합니다. 예를 들어 오늘 제가 여기에 쓴 예나 Vladimir Perervenko의 기사에서와 같이 뉴런의 매개변수는 교차 검증을 통해 선택해야 합니다.


내가 거기에 쓴 것을 다시보십시오 - https://www.mql5.com/ru/forum/86386/page753#comment_6821981
해당 코드의 설명에 따라 데이터를 대체하고 실행하십시오. 예측 변수를 모두 연속으로 선택하고 제거하지 않으면 처음에는 모든 것이 나빠질 것입니다. 코드 실행 후 추가로 max(gaResult@fitness) 명령을 실행하면 유전학에서 찾은 최상의 모델의 점수가 R2에 표시됩니다. 점수가 1에 가까우거나 약간 낮으면 양호, 0에 가까우거나 심지어 음수이면 불량입니다.

그런 다음, PREDICTOR_COLUMNS에서 정의한 특정 열 번호를 양호로 지정하고 코드를 다시 실행하면 모델이 이러한 예측자에 대해서만 학습합니다. 이상적으로, 발견된 유전학에 의한 최상의 모델의 점수는 1에 가까워야 하고 훈련 및 테스트 플레이트의 정확도는 1.00이어야 합니다.

테스트 테이블 - 마치 이 모델이 이미 시장에서 거래되고 있는 것처럼 훈련 데이터 이후에 정확히 시간 내에 있어야 합니다.

해당 코드에서 아무 일도 일어나지 않으면( KFOLDS=10 인 경우에도) - 그것은 운명이 아닙니다. 문제가 해결되면 Reshetov 모델에 대한 좋은 대안이 있으며 이 코드를 추가로 처리하고 모델을 mql로 전송할 수 있습니다.

사실, Train1과 Test1의 두 섹션만 있습니다.

네트워크 A는 Train1에서 학습하고 Test1에서 선택됩니다.

Test1에 대한 SetB 연구 및 Train1에 대해 선택됨

두 부분을 접을 때. NetworkA Test1의 경우 NetworkB Train1의 경우 전체 교육 섹션에 걸쳐 교육 결과를 얻을 수 있지만 이 섹션은 테스트 결과입니다. 이것이 Reshetov의 의미입니다. 어떻게 확인하라고 건의하셨는지 모르겠네요..... kFold가 어떻게든 분할해서 .... 불명확.....

 

나는 Reshetov의 결과를 반복하고 싶지 않고 그의처럼 AI를 조직하고 싶습니다. 그가 위원회를 코칭하는 방식. 교육 자체가 이미 사용 가능한 수단이라는 것은 분명하지만 조직이 중요한 역할을 할 수 있습니다....

내 데이터에서 스크립트를 실행하려고 합니다. 무슨 일이 일어나는지 봅시다...

 

알겠습니다. 거의 동일합니다. Reshetov에서 라인은 하나(짝수에 대한 교육, 홀수에 대한 테스트)를 통해 취해지며 내 예에서 라인은 연속적으로 그룹으로 나뉩니다(1-100행에 대한 교육, 101-200행에 대한 테스트). Forex의 경우 적어도 모델이 알려지지 않은 다른 시간 간격으로 작동할 수 있는지 확인하는 방법이 더 좋습니다.

Reshetov 스타일 분할도 수행한 다음 elemnn_kfold 함수에서 삭제할 수 있습니다.

split2 <- function(x,n) split(x, cut(seq_along(x), n, labels = FALSE )) #функция которая поделит строки таблицы на число кусков согласно KFOLDS
folds <- split2( 1 :nrow(x), KFOLDS) #номера строк для обучения в каждом фолде

대신 넣어

folds <- list()
folds[[ 1 ]] <- c(which(y== 1 )[c(T,F)], which(y== 0 )[c(T,F)])
folds[[ 2 ]] <- c(which(y== 1 )[c(F,T)], which(y== 0 )[c(F,T)])

코드 시작 부분에서 접기 수를 2로 변경하십시오 - KFOLDS=2, 그렇지 않으면 일부 오류가 나타납니다

 

Crossvalidation cfold 내부의 "training"과 "test"는 말 그대로 중첩된 검사라는 것을 이해하면 됩니다. 여러 부분으로 나누어진 하나의 학습 테이블이 있으며 이러한 부분은 학습 또는 테스트가 될 것이며 주기의 모델은 한 부분에서 학습하고 다른 부분을 예측하여 이러한 매개변수를 사용하여 모델이 학습하고 학습할 수 있는지 확인합니다. 데이터에 대해 새로운 것을 예측합니다.

그리고 이 교차 검증에 더 이상 참여하지 않는 별도의 테스트 테이블이 있습니다. 실제 거래를 시뮬레이션하는 워크 포워드 테스트와 같이 모델이 테스트를 위해 완전히 훈련될 때까지 대기합니다.
그리고 롤포워드가 훈련과 테스트 윈도우가 시간적으로 이동했을 때 각 테스트에서 정상적인 결과를 제공한다면, 가장 최근에 훈련된 모델은 더 이상 별도의 테스트 플레이트에서 테스트되지 않고 터미널로 교환됩니다.

 
맞습니다. CAB의 플롯일 수 있는 대조군 샘플입니다. 훈련, 테스트. 거래를 중지했습니다. 제 개인적인 생각은....
 
마이클 마르쿠카이테스 :
맞습니다. CAB의 플롯일 수 있는 대조군 샘플입니다. 훈련, 테스트. 거래를 중지했습니다. 제 개인적인 생각은....

하지만 여기서 질문이 나옵니다. 관리도가 없는 모델을 선택하는 방법. 우리는 훈련하고 교차 검증 결과를 얻었습니다. 그들은 이것이 얻을 모델이라고 말했습니다. 실제에 적용하십시오 !!!!!

원칙적으로 1일 안에 컨트롤 섹션을 하고, 3~4개의 신호입니다..... 2주 동안 일을 해야 한다는 점을 감안하면 손실이 크지 않습니다.......

 
지정된 변경 사항으로 스크립트를 시작했습니다. 오류가 발생하지 않고 거기에서 무언가를 훈련시키기도 하지만 학습 과정에서 그래프를 표시하지 않습니다. 어떻게 든 결과를 오류로 봅니다. 모델을 다시 만든 다음 이 스크립트로 돌아갑니다. 훈련 세트가 형성되는 즉시 우리는 그곳에서 계속할 것입니다 ....
 

받는 사람: 박사 상인.

대본을 자세히 분석하지 않았고, 당신은 매우 "조잡하게" 씁니다. 뭐, 각자의 스타일이 있죠. 그러나 몇 가지 중요한 메모가 있습니다. ELM에는 다음과 같은 다양한 애플리케이션 기능이 있습니다.

  • 훈련 중에 ELM에 더 많은 예제를 제공할수록 노이즈에 덜 민감합니다(최소한 2000년의 경험에서).
  • ELM 신경망의 앙상블에는 정상적인 결과를 위해 100개 이상이 있어야 합니다(경험상 여유를 두고 제거하는 것이 좋습니다).
  • 단순 투표로 사용하는 조합은 평균보다 더 나쁜 결과를 제공합니다. 이것은 개발자의 재량에 달려 있지만.
  • seet.seed는 하이퍼파라미터를 최적화할 때 원하는 반복성과 다양성을 제공하지 않습니다. 기사의 댓글 을 참조하세요. 그곳에서 elibrarius는 실험을 통해 이 아이디어를 테스트했습니다. 신경망을 초기화할 때마다 RNG를 제어된 상태로 만드는 것만이 유효한 최적화 결과를 제공합니다. 제 생각에는 베이지안 최적화를 사용하는 것이 좋습니다. 하이퍼파라미터를 잘 선택합니다.
행운을 빕니다

 

댓글 감사합니다 참고하겠습니다.

elmNN을 좀 더 진지하게 다루고 싶어하는 당신의 마지막 기사에 대한 링크를 텍스트 끝에 추가했습니다. 기사를 바로 읽게 하는 것이 좋습니다.


블라디미르 페레르벤코 :

단순 투표로 사용하는 조합은 평균보다 더 나쁜 결과를 제공합니다. 이것은 개발자의 재량에 달려 있습니다.

앙상블 예측에는 실제로 두 가지 방법이 있습니다.

1) elemnn_kfold_predict() 함수 - 각 모델의 회귀 결과에 대한 산술 평균을 계산합니다.

2) elemnn_kfold_predict_reshetovstyle() 함수 - Mikhail의 실험을 위해 이것을 추가했습니다. 앙상블 결과를 결합하는 이 방법은 Reshetov 뉴런에서 사용됩니다. 분류만. 거기에서 모든 모델의 결과를 비교하고 모든 모델이 동일한 예측을 제공한 경우에만 특정 클래스로 답변을 제공합니다. 하나 이상의 모델이 다른 모델과 다른 예측을 제공한 경우 함수는 "모름" 예측을 반환합니다.

 
글쎄, 결과는 이미 무엇입니까? 고문은 어디에 있습니까?
사유: