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

 
Maxim Kuznetsov #:

작동하나요?

바퀴벌레 ( 다리와 눈이 있는 원)에 대한 데모, 규칙 " 더 간단한 것으로 시작하겠습니다. 9개의 눈이 전방 각도를 가리키고 각 눈이 방향에 따라 (특정 최대 가시 거리까지) 벽까지의 거리, 녹색 물체까지의 거리, 빨간색 물체까지의 거리 등 3가지 값을 감지하는 2D 에이전 트입니다. 에이전트는 5가지 동작 중 하나를 사용하여 각도를 달리하여 탐색합니다. 빨간색은 사과이며 에이전트는 사과를 먹으면 보상을 받습니다. 초록색은 독이며 에이전트는 이를 먹으면 마이너스 보상을 받습니다. 현재 매개변수 설정으로 훈련하는 데 수십 분이 걸 립니다."

학습 시작...학습 중지를 클릭할 수 있습니다.....

바퀴벌레는 녹색 점을 피하기 위해 빨간색 점을 선호하고 달려야 합니다...

실제로 : 학습을 중지 한 후에는 마지막 이동 패턴을 어느 정도 따르고 빨간색과 녹색을 구별하지 않습니다. 또는 나는 비정상적으로 멍청한 바퀴벌레가 있습니다 :-)

학습이 완료되기 전에 학습 중지를 누르면 안되기 때문입니다.

 
mytarmailS #:

학습이 완료되기 전에 학습 중지를 누르지 않기 때문입니다.

만세! 성공했습니다... 3시간의 학습을 거의 잊을 뻔했습니다.

이제 바퀴벌레는 녹색 바퀴벌레를 피하고 빨간색 바퀴벌레를 먹으려고 (거의) 정상적으로 달립니다.

분명히 "필러"가 하나 덜 훈련 된 것이 그렇게 일어났습니다 :-) 즉, 페널티 그린이 특정 쪽에 있으면 즉시 먹게 됩니다. 반대로 특정 트래버스에서 빨간색은 피합니다.

그러나 이것은 아마도 시스템 오그리치 일 것입니다.

 
Aleksey Nikolayev #:

이것은 독립적 인 기능의 경우에만 작동하며 동일한 가격으로 계산되므로 불가능합니다. 의존성의 경우 훨씬 더 복잡합니다. 단변량 분포는 항상 동일하지만 동시에 이변량 분포가 매우 다를 수 있는 코퓰라를 예로 들 수 있습니다.

같은 R에 해결책이 있을 수도 있지만, 찾아보기만 하면 되나요?

알렉세이 니콜라예프 #:

무거운 열거 계산에 대한 선호도가 있습니다.) 기능 유형별로 그리고 확실히 기능 매개 변수별로 (이미 상당한 양의 열거에) 열거를 추가해야 할 것입니다.

그럼에도 불구하고 귀하의 접근 방식에는 합리적인 곡물이있는 것 같으며 고려해야 할 사항이 있습니다.

예, 분명히 저는 실험없이 결과를 예측하는 데 서툴기 때문에 단계 중 하나에서 오류가 발생할 수있는 다단계 논리적 계산을 구축하는 것보다 테스트하고 종종 실망하는 것이 좋습니다.

샘플을 하위 샘플로 나누는 방법을 배웠더라도 다음 질문은 현재 샘플을 올바르게 분류하고 필요한 모델을 적용하는 방법입니다.

 
mytarmailS #:
표본 동질성이라는 통계적 기준 대신 동적으로 모델의 특징 중요도 변화를 (슬라이딩 창에서) 관찰할 수도 있습니다.

현재 상태와 이전 상태 사이에 큰 차이가 있다면 이미 다른 샘플에 있다는 뜻입니다....

장점:
1. 통계를 프로그래밍할 필요가 없습니다. 테스트, 모든 것이 즉시 준비되어 있습니다.
2. 샘플링 시간의 변화뿐만 아니라 목표의 변화도 고려하는데, 이는 그다지 중요하지 않다고 생각합니다.

어떤 순간에, 훈련의 순간에 볼 수 있습니까? 그리고 역학에서 보는 방법, 구현 방법은 어떻게 제안합니까?

역학에서 모델의 잎의 활성화를 보여주는 스크립트가 있습니다. 즉, 어떤 잎이 트리거되는지 확인할 수 있습니다. 훈련 세그먼트에서 평균 활성화 빈도를 계산한 다음 테스트 세그먼트에서 편차를 살펴봐야 할까요? 이런 식으로 적어도 이론적으로는 모델 효율성의 감소를 모니터링할 수 있습니다.

 
Aleksey Vyazmikin #:

어떤 순간에, 훈련의 순간에 시청해야 할까요? 그리고 역동적으로 시청하는 방법, 실현하는 방법은 어떻게 제안합니까?

모델의 잎사귀 활성화를 동적으로 보여주는 스크립트가 있습니다. 즉, 어떤 잎사귀가 활성화되었는지 확인할 수 있습니다. 훈련 세그먼트에서 평균 활성화 빈도를 계산한 다음 테스트 세그먼트에서 편차를 살펴봐야 할까요? 이런 식으로 적어도 이론적으로는 모델 효율성의 감소를 모니터링할 수 있습니다.

이전 모델을 살펴보는 것은 의미가 없으며 시장의 변화를 포착하지 못합니다....

제안대로 구현할 것을 제안합니다))))))
슬라이딩 창에서 모델을 재교육하고 표지판의 중요성을 보거나 좋은 표지판의 결정자를 가져 와서 슬라이딩 창에서보십시오. 창


다음은 무작위로 생성된 5개의 특징과 1개의 이진 타깃으로 구성된 샘플에 대한 예제입니다.

포레스트 및 피시 셀렉터

X <- matrix(rnorm(1000),ncol = 5)
Y <- as.factor(sample(0:1,nrow(X),replace = T))

head(X)
head(Y)

#install.packages("randomForest")
library(randomForest)
rf_imp_mat <- matrix(ncol = ncol(X),nrow = nrow(X))
for(i in 30:nrow(X)){
  ii <- (i-29):i
  rf <- randomForest(Y[ii]~.,X[ii,],ntree=100)
  rf_imp_mat[i,] <- importance(rf)[,1]
}

#install.packages("FSelectorRcpp")
library(FSelectorRcpp)
fs_imp_mat <- matrix(ncol = ncol(X),nrow = nrow(X))
for(i in 30:nrow(X)){
  ii <- (i-29):i
  infg <- information_gain(y = Y[ii],x = as.data.frame(X[ii,]))
  fs_imp_mat[i,] <-  infg$importance
}

par(mfrow=c(1,2))
matplot(rf_imp_mat , t="l",lty=1,main="rf_var_imp")
matplot(fs_imp_mat , t="l",lty=1,main="fs_var_imp")


물론 R-ka에서는 필요하지 않은 경우 주기로 작성하는 것이 일반적이지 않지만이 스타일은 신규 이민자를 혼란스럽게하고 저와 같은 중개인도 혼란스러워합니다....

하지만 이렇게 작성하면 코드가 3 배 줄어들고 결과는 동일합니다.

X <- matrix(rnorm(1000),ncol = 5)
Y <- as.factor(sample(0:1,nrow(X),replace = T))
idx <- embed(1:nrow(X),dimension = 30)[,30:1]

library(randomForest)
rf_imp_mat <- t(apply(idx,1,function(i) importance(randomForest(Y[i]~.,X[i,]))[,1]))
library(FSelectorRcpp)
fs_imp_mat <- t(apply(idx,1,function(i) information_gain(y=Y[i],x=as.data.frame(X[i,]))$importance))

par(mfrow=c(1,2))
matplot(rf_imp_mat , t="l",lty=1,main="rf_var_imp")
matplot(fs_imp_mat , t="l",lty=1,main="fs_var_imp")


또한 취향에 따라 다양한 선택기를 사용할 수 있으며, 아마도 R-ka에서 사용할 수 있는 것의 5% 정도입니다.

GitHub - FrancisArgnR/R-FeatureSelection-Packages: Brief guide to feature selection packages in R
GitHub - FrancisArgnR/R-FeatureSelection-Packages: Brief guide to feature selection packages in R
  • FrancisArgnR
  • github.com
Feature selection or variable selection in machine learning is the process of selecting a subset of relevant features (variables or predictors) for use in model construction. Packages FSinR Boruta caret spFSR varSelRF CORElearn FSelector
 

또는 두 개 또는 세 개 통화의 창을보고 세 번째 통화를 지연하여 거래합니다.

즉, 하루 후반의 EUR,CHF에서 USD CAD를 보고 아침 일찍 JPY(AUD,NZD)를 오픈하여 시스템이 USD의 추세를 파악하고 "썩지 않았다"고 판단하기 전에 매수할 시간을 갖도록 하는 것이죠.

한 마디로 "모든 경로를 여행했다"고 할 수 있고 사용 가능한 방법으로는 물고기를 잡을 수 없다는 것이 두렵습니다.

 
무언가를 발명하려면 연구 대상을 정의한 다음 그 속성을 결정해야하며 원숭이와 안경과 같지 않을 것입니다.
 
Maxim Dmitrievsky #:
무언가를 발명하려면 연구 대상을 정의한 다음 그 속성을 정의해야 원숭이와 안경과 같지 않을 것입니다.

연구 대상과 그 속성을 정의하기에는 너무 이르며 포럼은 이제 겨우 6 년이되었습니다. 너무 심하게 굴지 마세요!

 
Evgeny Dyuka #:

연구 대상과 그 특성을 정의하기에는 너무 이르며 포럼은 6 년 밖에되지 않았습니다. 너무 심하게 말하지 마세요!

시세를 시계열로 연구하기 시작하면 다른 시계열에서는 볼 수 없는 몇 가지 특징을 발견할 수 있습니다. 아마도 이러한 특징에는 패턴이 있을 것입니다. 예, 지연 기능을 사용하여 직접 자동 회귀 및 분류로 모든 것을 끌어낼 수 있는 것은 아니지만 독창성을 추가하면 다음과 같이 할 수 있습니다.
 
Maxim Kuznetsov #:

(코드베이스 링크 : https://www.mql5.com/ru/code/36558)

는 징후를 예측하는 데 유용할 수 있습니다 - 예측해도 좋습니다 :-) 표시기는 "블랙/화이트" 징후를 표시하고 요약할 뿐입니다.

여기에 막대 표시를 보여 드리겠습니다.

저의 소박한 개발 아카이브를 파헤쳐서 게시하겠습니다.

물론 흥미롭긴 하지만 거기에도 비고정성이 있습니다.

그래서 1보다 약간 낮은 확률로 예측되는 것입니다.

하지만 기본적으로 지금 막대가 올라가면 다음 막대는 내려갈 겁니다.

그리고 이런 젊은 TFM의 움직임은 오래된 TFM에 반영됩니다.

따라서 추세는 직선이 아니라 많은 하락이 있고, 지속 시간과 막대 크기가 젊은 것의 여러 배입니다.

그러나 푸리에를 적용하여 이러한 파동을 찾을 수있을 것 같지만 그렇지 않습니다.

시간 척도가 앞뒤로 같은 방식으로 변조되기 때문입니다.

이 기적을 이해하기란 쉽지 않고, 정면으로 부딪히면 많은 의문이 생깁니다.

예를 들어 왼쪽에서 오른쪽으로 또는 오른쪽에서 왼쪽으로 가격 움직임이 반드시 오른쪽 가장자리에서 시작하지 않는다고 생각할 수 있습니다.

따라서 앞뒤로, 위아래로 움직일 수 있습니다.

사유: