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

 
이 코드를 스크립트에 작성하고 여러 번 실행했는데 결과가 때때로 약간씩 달랐습니다...
 
마법사_ :

세트 시드(1234)

그것은 무엇이며 어디에서 밀어야합니까??

 
마이클 마르쿠카이테스 :

, 그렇다면 이것은 전투의 절반 이상입니다 ... 그래서 ....

90%, 모델은 기술의 문제이며 캐럿은 적절한 하네스와 함께 이 장점으로 가득합니다.

 

다음은 동시에 vtreat를 사용한 예입니다.

일반적으로 데이터 전처리이지만 대상과 관련하여 각 예측 변수에 대한 평가로 사용할 수 있습니다. 패키지가 예측 변수의 상호 작용을 고려하지 않는 것이 마음에 들지 않습니다. 대상에 대해 예측 변수를 한 번에 하나씩 평가해야 하는 경우에만 코드를 사용하십시오.

forexFeatures <- read.csv2( "Qwe.txt" , dec="." )
forexFeatures <- forexFeatures[,- 1 ]

library (vtreat)


#designTreatments C подходит только для классификации с двумя классами
treatmentsC <- designTreatmentsC(dframe = forexFeatures,
                                 varlist=colnames(forexFeatures)[-ncol(forexFeatures)], #названия колонок с предикторами (тут - все кроме последней колонки)
                                 outcomename = colnames(forexFeatures)[ncol(forexFeatures)], #названия колонок с таргетом (тут - последняя колонка)
                                 outcometarget = "1" ) #текст или цифра одного из классов
#обработка, сортировка результата
treatmensC_scores <- treatmentsC$scoreFrame[order(treatmentsC$scoreFrame$sig),]
treatmensC_scores <- treatmensC_scores[!duplicated(treatmensC_scores$origName),]
treatmensC_scores <- treatmensC_scores[,c( "origName" , "sig" )] 
treatmensC_scores$is_good <- treatmensC_scores$sig <= 1/nrow(forexFeatures)
treatmensC_scores #вывод на экран таблички результатов. Лучшие предикторы вверху таблицы. Чем оценка sig меньше тем лучше. Желательно (колонка is_good==TRUE) чтоб sig была меньше чем 1/nrow(forexFeatures), всё что больше - плохо 


#designTreatments N подходит для регрессии или если больше двух классов. Если всего два класса то предпочтительнее использовать C функцию, она вроде как и коррелирующие предикторы убирает заодно.
treatmentsN <- designTreatmentsN(dframe = forexFeatures,
                                 varlist=colnames(forexFeatures)[-ncol(forexFeatures)], #названия колонок с предикторами (тут - все кроме последней колонки)
                                 outcomename = colnames(forexFeatures)[ncol(forexFeatures)]) #названия колонок с таргетом (тут - последняя колонка)
#обработка, сортировка результата
treatmensN_scores <- treatmentsN$scoreFrame[order(treatmentsN$scoreFrame$sig),]
treatmensN_scores <- treatmensN_scores[!duplicated(treatmensN_scores$origName),]
treatmensN_scores <- treatmensN_scores[,c("origName","sig")] 
treatmensN_scores$is_good <- treatmensN_scores$sig <= 1/nrow(forexFeatures)
treatmensN_scores #вывод на экран таблички результатов. Лучшие предикторы вверху таблицы. Чем оценка sig меньше тем лучше. Желательно (колонка is_good==TRUE) чтоб sig была меньше чем 1/nrow(forexFeatures), всё что больше - плохо

 
마이클 마르쿠카이테스 :
그것은 무엇이며 어디에서 밀어야합니까??

set.seed는 난수 생성기의 초기 시드를 설정합니다. 코드를 실행하기 전에 동일한 상태(예: 1234)에 넣으면 후속 코드는 모든 경우에 동일한 방식으로 실행됩니다.

read.csv2(.. 등
세트 시드(1234)
보루타(TargetProf... 등)

그러나 알고리즘은 더 많은 반복을 필요로 합니다(예: maxRuns = 1000000). 기본적으로 그렇게 작은 숫자에 맞지 않고 중간에 멈춥니다.

 

회귀분석을 해봤는데...
Fin으로의 회귀 시장, 부드러운 기능이 아니라 1pt의 단계가 있는 계단형 기능입니다. (교사와 예측 모두). 예를 들어 이동이 +/- 100포인트로 제한되는 경우 200개 클래스에 대한 분류와 유사합니다. 저것들. 출력에서 가장 가능성이 높은 클래스(예: +22pt)를 예측합니다.
이것은 좋은 결과를 얻으려면 회귀에 대한 모델의 구조/복잡도(뉴런 수)가 200배 커야 한다는 것을 의미하지 않습니까? 음, 단계를 5pt로 늘리고 40배로 늘리면 정확도가 떨어지기 때문에 조금 더 경제적입니다.

 
나는 vtreat에서 파일을 실행했지만 많이 고백하지 않습니다. 4개의 입력만 선택되었습니다. 팁 감사합니다....계속하겠습니다....
 
마법사_ :

이제 상자 그림을 기억하고 입력으로 해당 스레드를 만들고 다시 실행하십시오.

set.seed 매개변수는 두 경우 모두 동일합니다.

입력으로 무엇을해야합니까 ???

흠..... 나는 내 입력에서 더 나은 것을 기대했다고 고백합니다. 어쨌든, 나는 더 중요한 것들이 있을 것이라고 생각했습니다. 글쎄요, 확실히 100개 중 4개는 아닙니다. 그런 수의 입력에서 모델은 고통스러울 정도로 매우 작은 것으로 밝혀졌습니다. 모델, 더 잘 작동합니다. 그리고 결과 모델을 보고 내 테스트를 실행하면서 이 작은 새끼가 정말 좋다는 것을 이해합니다..... 결론을 내리기에는 너무 이르고 더 많은 테스트가 필요합니다. 계속 파는데...

 
내가 글을 쓰던 곳마다
forexFeatures <- read.csv2( "Qwe.txt" )

정말 필요한
forexFeatures <- read.csv2( "Qwe.txt" , dec= "." )

죄송합니다. 파일 형식을 간과했습니다. 오래된 글 수정하겠습니다. 코드를 다시 실행하면 결과가 더 좋아질 것입니다. 그렇지 않으면 소수가 포함된 모든 숫자가 제대로 처리되지 않았습니다.
 
마이클 마르쿠카이테스 :

입력으로 무엇을해야합니까 ???

예를 들어, jPrediction은 간격 [-1; 1]에서 데이터의 크기를 조정하고 이 숫자에 대해 이미 훈련되어 있습니다. R에서 입력을 평가하기 전에 동일한 간격으로 확장하는 것도 가능합니다.

forexFeatures <- read.csv2( "Qwe.txt" , dec= "." )

for (i in 1 :(ncol(forexFeatures)- 1 )){
  forexFeatures[,i] <- (forexFeatures[,i] - min(forexFeatures[,i]))/(max(forexFeatures[,i])-min(forexFeatures[,i]))* 2 - 1
}

vtreat, Boruta, etc,...

트리 기반 추정 방법은 아마도 결과를 변경하지 않을 것입니다. 데이터가 제공된 간격이 있는 숲에 대해서는 특별히 중요하지 않지만 확인하는 것이 좋습니다. vtreat는 간격에 대해서도 까다롭지 않습니다.


그러나 일반적으로 그는 입력이 뉴런에 입력되기 전에도 입력의 비선형 변환에 대해 이야기합니다. 뉴런은 입력에 매우 민감하며 입력 데이터를 특별한 방식으로 어떻게든 처리하면 결과가 향상될 수 있습니다. 예를 들어, Sigmoid를 통해 입력을 변환하는 그런 트릭을 들었습니다.

사유: