기고글 토론 "행렬에서 모델로: MQL5에서 머신러닝 파이프라인을 구축하고 ONNX로 내보내는 방법"

 

새로운 기고글 행렬에서 모델로: MQL5에서 머신러닝 파이프라인을 구축하고 ONNX로 내보내는 방법 가 게재되었습니다:

이 글에서는 MetaTrader 5에서 역할 분리를 통해 조정된 머신러닝 파이프라인을 구성하는 방법을 설명합니다: Python은 모델을 학습시키고 ONNX 형식으로 내보내며 MQL5는 행렬/벡터를 통해 정규화 및 PCA를 수행하고 추론을 실행합니다. 이러한 접근 방식을 통해 모델의 입력값을 안정적이면서 검증 가능하게 만들 수 있으며 MetaTrader 5 전략 테스터는 시스템 동작을 분석하기 위한 메트릭을 제공합니다.

머신러닝(ML)이 터미널에서 위압적으로 보이는 이유는 모델 자체라기보다는 그 주변의 모든 것들 때문입니다. 보기에는 별도의 기술 스택, 파이썬 스크립트, 복잡한 통합 없이는 작업이 불가능해 보일 수도 있습니다. 결과적으로 우리는 MLMetaTrader 5와 관련해서 보면 별개의 외부적인 요소라는 느낌을 받게 됩니다.

하지만 불필요한 층들을 제거하고 나면 그림이 훨씬 선명 해집니다. 모든 머신러닝 파이프라인은 다음과 같은 기본 작업들의 연속입니다: 피처 생성, 스케일링, 중복 제거, 그리고 결과를 모델에 전달하는 것. 이것은 신경망의 마법이 아니라 일반적인 선형대수입니다.

이 글에서는 행렬과 벡터를 주요 도구로 사용하여 불필요한 이론 없이 순차적으로 이 과정을 살펴보겠습니다. 핵심은 훈련 환경과 실제 트레이딩 환경 모두에서 재현 가능한 결과를 얻는 방법에 있습니다.

ML 파이프라인


작성자: MetaQuotes

 
제 생각에는, 전체 데이터 세트에 대해 정규화 및 PCA 계산을 수행한 뒤, 그 후에야 훈련 집합과 검증 집합으로 나누는 것은 미래를 예측하는 것과 같습니다. 온라인으로 작업할 때는 최신 데이터를 반영하여 정규화를 변경하거나 PCA를 조정할 수 없습니다. 정직한 실험이라면, 처음에 데이터를 두 집합으로 나누고, 인-샘플(in-sample) 부분에만 정규화 및 PCA를 적용한 다음, 도출된 메타파라미터를 사용하여 아웃-오브-샘플(out-of-sample) 데이터에 변환을 적용하는 것이 될 것입니다.
 
Stanislav Korotky #:
제 생각에는, 전체 데이터 세트에 대해 정규화와 PCA 계산을 먼저 수행한 뒤, 그 후에야 훈련 데이터와 검증 데이터로 나누는 것은 미래를 미리 예측하는 것과 같습니다. 온라인으로 작업할 때는 최신 데이터를 반영하여 정규화를 변경하거나 PCA를 조정할 수 없습니다. 정직한 실험이라면, 처음에 데이터를 두 세트로 나누고, 인-샘플(in-sample) 부분에만 정규화 및 PCA를 수행한 뒤, 도출된 메타파라미터를 사용하여 아웃-오브-샘플(out-of-sample) 데이터에 입력 데이터를 변환하는 것이 될 것입니다.
참고로, 모든 채팅방에서도 이 문제를 범하고 있는데, 특히 웨이블릿 분해 후 후속 처리 및 학습 과정에서 그러합니다.

그 결과, 평범한 화살표 지표조차도 "가장 극단적인 지점"을 가리키게 됩니다.

위험한 일인데, 한눈에 어디에 함정이 있는지 알아차리기 어렵습니다.