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

 
Dr.Trader :

당신 자신이 이것을 많이 알고 있고 해냈지만, 나는 우리가 같은 방식으로 말하지만 다르게 하는 몇 가지 가정을 배제하기 위해 더 완전히 쓸 것입니다.


이 포럼의 모든 조언과 경험.

고맙습니다.

차근차근 답변드리겠습니다.

모델의 매개변수를 추정하려면 주의 깊게 연마된 적합성 함수가 필요합니다. 함수가 높은 점수로 특정 모델 매개변수 및 선택된 예측자를 평가하는 경우 새 데이터에 대한 테스트에서 좋은 결과가 있어야 합니다.
(더 높을수록 더 좋다는 평가를 염두에 둘 것입니다)

그런 기능이 있습니다. 나는 R^2가 필요하지 않습니다(내 초기 목표는 회귀 측면에서 시장이 어리석게 예측 가능하다는 것을 확인하는 것이었지만). 나는 스프레드가 있는 핍의 합과 MO를 추정하는 장외 기능을 사용하고 있습니다. 이 함수는 CV 루프 내에서 작동하며 모델 훈련에 가장 적합한 매개변수를 선택합니다.

루프의 피트니스 함수는 최소 50회 반복해야 합니다.
1) 데이터를 50%/50%의 두 부분으로 나눕니다. 샘플을 사용하는 무작위 선택과 순차 선택이 모두 있어야 합니다(훈련용 조각은 중간 어딘가에 있고 검증용 - 소스 데이터의 시작과 끝에서 그것을 둘러싸는 부분). 교육이 테이블의 전반부에 있고 검증이 마지막에 있고 그 반대의 경우도 마찬가지인 극단적인 옵션을 포함합니다. 순차적으로 선택된 예시와 무작위 예시를 모두 갖도록 훈련하는 것이 중요하다고 생각합니다. 그림은 무작위로 순차적으로 분할하는 몇 가지 예를 더 명확하게 보여줍니다. 녹색 선은 훈련용, 노란색 선은 검증용입니다.

이것은 완전히 명확하지 않습니다. 무슨 말인지 이해가 안가네요.

나는 다시 99개의 훈련 세트(각각 10년)를 가지고 있습니다. 각 세트는 예의 측면에서 고유하지만 모두 동일한 "이전" 기간에 있습니다.

각 세트에서 CV를 실행합니다. 여기서 2~10번 접습니다(저도 반복).

그러나 나는 엄격하게 모든 주름을 시간으로 구분합니다. 부인할 수 없는 올바른 방법이라고 생각합니다.

따라서 99 * CV 매개변수 조합 수(백) = 검증 폴드에서 최고의 품질 메트릭을 보여주는 수백 개의 훈련된 모델입니다.

그런 다음 "이후" 기간(5년)에서 가져온 동일한 수의 지연된 샘플이 있습니다. 그들은 또한 독특합니다. 중첩 CV를 수행합니다. 지연 샘플링에 대한 경험을 통해 CV에서 수신된 각 모델을 확인합니다. CV와 지연 샘플링의 두 가지 품질 메트릭 값 벡터가 나타납니다.

감정가를 위한 질문:

일관된 데이터와 적합한 모델(패키지)이 있는 경우 지연된 가져오기에서 무엇을 받을 것으로 예상합니까?

답변: 지연된 샘플의 품질 메트릭(MO)은 검증 폴드의 품질 메트릭과 상관 관계가 있어야 합니다.

실제로 이것을 달성하는 것은 큰 문제입니다.

이것이 왜 필요한가? 내 교차 검증에만 의존하여 최고의 모델을 자신있게 선택할 수 있습니다. 나는 그것이 미래와 일관된 결과를 제공한다는 것을 이미 확인했기 때문에.

위원회 및 기타 상위 수준 모델은 어떠한 방식으로도 훈련되지 않은 지연된 샘플에 대한 적합성 테스트를 통과해야 합니다.

 
트레이더 박사 :


2) 훈련 샘플에서 모델을 훈련합니다(주기 전체에 걸쳐 사용되는 모델 매개변수와 예측자는 동일하며 평가하려는 매개변수임). 그런 다음 이 모델로 바로 이 데이터를 예측하고 예측을 평가합니다. 정확도, r ^ 2 또는 다른 것. 예를 들어 회귀 결과를 클래스로 반올림하고 추정을 위해 Cohen의 Kappa 함수를 사용합니다. 캐럿에서 가져온 것이므로 분류 정확도나 회귀 정확도보다 더 좋았습니다. 그러나 두 클래스에서만 작동합니다. 3개의 클래스에 대해 아무것도 제공하기 어렵다고 생각합니다. 평가는 각 클래스의 정확도를 개별적으로 고려하고 이를 기반으로 일종의 전체 평가를 제공하는 것이 중요합니다.
3) 훈련된 모델을 적용하여 검증 세트의 데이터를 예측하고 동일한 기능으로 예측을 평가합니다.
4) 두 평가(교육 및 검증)는 서로 가깝고 동시에 가능한 한 높아야 합니다. 최종 점수에 이 코드를 사용합니다. - (min(score1,score2) - (max(score1,score2)-min(score1,score2))) - 최소값에서 델타를 뺍니다.

각 반복이 끝나면 일부 점수가 얻어지며 데이터의 무작위 분할로 인해 -1에서 1까지(또는 사용된 함수에 따라 다른 간격으로) 달라질 수 있습니다. 평균값을 고려하고 그 결과로 피트니스 함수를 반환합니다. 또한 필요한 데이터 집합이 너무 큰 모델에 불이익을 주는 데 사용되는 각 예측 변수의 적합도 값에서 작은 수(0.0001)를 뺍니다.


교육을 설명하십시오. 교차 검증 폴드에 대한 평가를 의미합니까?

교육 평가 및 검증의 근접성 - 지연된 샘플링이 교차 검증 결과와 상관 관계가 있습니까?

그렇다면 우리는 모든 것을 바로 가까이에서 하고 있습니다.

 
알렉세이 버나코프 :

교육을 설명하십시오. 교차 검증 폴드에 대한 평가를 의미합니까?

교육 평가 및 검증의 근접성 - 지연된 샘플링이 교차 검증 결과와 상관 관계가 있습니까?

그렇다면 우리는 모든 것을 바로 가까이에서 하고 있습니다.

"correlation"은(는) 무슨 뜻인가요? "+1"? "-하나"? 무엇으로?

다음은 나에게 분명한 실행 결과 50개입니다. 50개의 결과에서 이미 통계를 적용하고 평균, 편차 및 가장 중요한 신뢰 구간 을 계산할 수 있습니다....

 
mytarmailS :

어제 거래의 결과를 볼 수 있습니까?

Y 완벽하다고는 할 수 없지만, 역시 모델은 80% 일반화 ....

 
산산이치 포멘코 :

"correlation"은(는) 무슨 뜻인가요? "+1"? "-하나"? 무엇으로?

다음은 나에게 분명한 실행 결과 50개입니다. 50개의 결과에서 이미 통계를 적용하고 평균, 편차 및 가장 중요한 신뢰 구간 을 계산할 수 있습니다....

아니, 당신은 이해하지 못했습니다, SS.

지연된 샘플의 품질 메트릭과 교차 검증의 품질 메트릭(예: 훈련된 모델을 평가하는 테스트 샘플)의 상관관계. 수백 개의 훈련된 모델이 있는 경우 품질 메트릭의 두 벡터를 얻습니다.

예: 교차 검증의 분류 정확도는 57%이고 지연 샘플링의 경우 50%입니다. 그리고 그러한 값의 수백(천)이 있습니다. 수백 수천 개의 훈련된 모델이 있습니다. 여기에도 질문이 있습니다.

 
알렉세이 버나코프 :

교육을 설명하십시오. 교차 검증 폴드에 대한 평가를 의미합니까?

교육 평가 및 검증의 근접성 - 지연된 샘플링이 교차 검증 결과와 상관 관계가 있습니까?

그렇다면 우리는 모든 것을 바로 가까이에서 하고 있습니다.

코드에서는 다음과 같습니다.

fitness <- function(inputTestPredictors, inputTestModelParams) {
    allScores <- c()
     for (i in 1 : 50 ){
        rowSampleTrain <- sample(nrow(trainData), round (nrow(trainData)* 0.5 ))
        rowSampleValidate <- setdiff( 1 :nrow(trainData), rowSampleTrain)
         #ещё нужно добавить с вероятностью 50 % - деление строк просто по порядку, без sample

        model <- TrainModel(target ~., data=trainData[rowSampleTrain, inputTestPredictors], p1 = inputTestModelParams$parameter1, p2 = inputTestModelParams$parameter2)
         #вместо TrainModel - какойто пакет из R - rf, gbm, nnet, lm, ...

        predictResultsForTrain <- predict(object = model, newdata=trainData[rowSampleTrain, inputTestPredictors])
        predictResultsForValidate <- predict(object = model, newdata=trainData[rowSampleValidate, inputTestPredictors])

        score1 <- CalcPreditionQuality(predictResultsForTrain, trainData[rowSampleTrain, "target" ]))
        score2 <- CalcPreditionQuality(predictResultsForValidate , trainData[rowSampleValidate, "target" ]))
        score_final <- min(score1,score2) - (max(score1,score2) - min(score1, score2))
        allScores <- c(allScores, score_final)
        # CalcPreditionQuality - функция для оценки качества прогноза относительно ожидаемых значений. Например точность, или F-score, или каппа
    }
    predictorCountPenalty <- sum(inputTestPredictors== TRUE ) * 0.0001
     return (mean(allScores) - predictorCountPenalty)
} 
 
기계 학습의 요소는 실제로 거래의 역사에 대한 학습이 아니라 "라이브"에서 특정 모델의 트리거링과 상호 연관시키기 위해 로봇 거래의 자체 세션 내에서 일련의 신호/옵션을 사용하는 역사에 적용되었습니다. " 특정 구성의 시장/시장 상황\ 신호.
 
Dr.Trader :

코드에서는 다음과 같습니다.

예, 한마디로 말하면 어떤 종류의 샘플을 비교하고 있습니까? 훈련이 있고 테스트가 있습니다(다중 훈련 및 테스트 = 교차 검증). 검증(지연 샘플링)이 있습니다.

세 개의 열이 있습니다.

모든 훈련. ---- 횡단 보도를 접습니다. ------ 지연된 관찰

0.7 0.65 0.55

... .... ....

학습이 테스트와 상관관계가 있다는 사실은 결과적으로 선택된 모델이 전체 세트에 대해 학습되고 그 일부가 테스트에 포함되기 때문에 말도 안되는 소리입니다.

그러나 시험 점수가 미결 점수와 상관관계가 있다는 사실이 저에게는 중요합니다.

 

귀하의 관점에서 저는 학습과 테스트를 비교하고 있습니다.
모델을 훈련할 때 검증(지연) 샘플이 없는 것으로 나타났습니다. 지연된 샘플은 모델이 훈련 후에 거래할 새 데이터가 됩니다.

학습이 시험과 상관관계가 있다는 사실은 넌센스입니다.

따라서 데이터의 다중 분할과 모델의 다중 학습을 다시 수행합니다. 모델 매개변수가 실패하면 테스트 샘플의 평균 결과가 훈련 샘플의 평균 결과보다 훨씬 낮습니다.

 
트레이더 박사 :

귀하의 관점에서 저는 학습과 테스트를 비교하고 있습니다.
모델을 훈련할 때 검증(지연) 샘플이 없는 것으로 나타났습니다. 지연된 샘플은 모델이 훈련 후에 거래할 새 데이터가 됩니다.

따라서 데이터의 다중 분할과 모델의 다중 학습을 다시 수행합니다. 모델 매개변수가 실패하면 테스트 샘플의 평균 결과가 훈련 샘플의 평균 결과보다 훨씬 낮습니다.

당신이하는 일에는 사이머스가 있습니다.

그러나 지연된 가져오기를 시도할 수도 있습니다. 클래식입니다. 훈련, 테스트, 검증.

그리고 절차를 더욱 복잡하게 만듭니다. 학습 및 테스트 측면에서 잘 수행되는 것으로 보이는 각 모델에 대해 이 모델을 X라고 부르고 백로그에서 유효성을 검사합니다. 이렇게 하면 훈련과 테스트만 사용하여 올바른 모델을 선택했는지 여부에 대한 아이디어를 얻을 수 있습니다. 다른 매개변수로 많은 모델을 만들고 가장 좋은 모델(10, 100, 1000)을 선택하십시오. 확인. "최상의" 측정항목이 향후 데이터에 반영되는지 여부를 이해할 수 있습니다. 그 후에야 전투에 참여하십시오.

사유: