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

 
트레이더 박사 :

이 패키지는 대상 변수를 예측할 수 있는 모델을 만들기에 충분하지 않은 것 같습니다. 도움말에서 찾은 것은 예측 변수를 기반으로 PCA 모델을 구축하는 것뿐이며 거기에는 대상 변수가 전혀 없습니다.


안녕하세요! 당신은 잘못된 기능을 사용했습니다, 당신은 내가 준 사이트에 표시된대로 " nlPca "를 사용해야했습니다. 그렇지 않으면 내 잘못입니다. 더 자세한 정보를 제공해야합니다 ...

여기에서 예측 대신 시도하십시오. 성공할 수 있습니다.

source( "https://bioconductor.org/biocLite.R" )
biocLite( "pcaMethods" )        

#создание pca объекта
library (pcaMethods)

## Data set with three variables where data points constitute a helix
data(helix)
helixNA <- helix
## not a single complete observation
helixNA <- t(apply(helix, 1 , function(x) { x[sample( 1 : 3 , 1 )] <- NA; x}))
## 50 steps is not enough, for good estimation use 1000
helixNlPca <- pca(helixNA, nPcs= 1 , method= "nlpca" , maxSteps= 50 )
fittedData <- fitted(helixNlPca, helixNA)
plot(fittedData[which(is.na(helixNA))], helix[which(is.na(helixNA))])
		
 
Dr.Trader :

이 패키지는 대상 변수를 예측할 수 있는 모델을 만들기에 충분하지 않은 것 같습니다. 도움말에서 찾은 것은 예측 변수를 기반으로 PCA 모델을 구축하는 것뿐이며 거기에는 대상 변수가 전혀 없습니다.

이것은 metaboliteDataComplete 테이블을 구문 분석하기 위해 5개의 주요 구성 요소가 있는 resNipals(반복 부분 최소 제곱에 의한 비선형 추정) 개체를 생성합니다. metaboliteDataComplete 대신 자체 테이블을 예측 변수로 대체할 수 있습니다. 여기에 대상 변수를 제공하지 않는 것이 중요합니다. 나중에 사용됩니다.

그러나 이것은 다른 차트를 검토하여 변수 간의 관계를 분석하기에 충분합니다. 예측 모델을 생성하기 위해 주성분 PC1, PC2, PC3, PC4, PC5를 입력 변수(x1,x2,x3,...)로 사용하는 선형 회귀 모델이 구축됩니다. 그리고 목표 변수 Y는 이미 필요한 결과로 선형 모델에 공급됩니다. 문제는 resNipals가 pcaMethods 패키지의 일종의 "pcaRes" 클래스 개체라는 것입니다. 그와 함께이 모든 것을 수행하는 방법은 도움말에서 찾지 못했습니다.

캐럿 패키지의 PCA 모델이라면 다음과 같을 것입니다.

그러나 이것은 resNipal에서는 작동하지 않습니다. 이론적으로 pcaMethods 패키지에는 이 개체를 사용하기 위한 자체 기능이 있어야 하지만 아무 것도 찾지 못했습니다.

처음에 RSA는 다음 두 가지 문제를 해결하기 위한 것이었습니다.

1. 적은 수의 관측치와 함께 매우 많은 수의 예측 변수가 있습니다. 이것은 유기 화학, 유전학에 일반적입니다.. 우리는 예를 들어 연간 단위와 같은 대규모 기간에 대한 거시 경제 데이터를 사용합니다.

2. 예측 변수 간에 상관 관계가 있습니다.

따라서 SAR 알고리즘은 다음 두 가지 주요 작업을 해결합니다.

1. 새롭고, 종종 근본적으로 더 적은 수의 예측 변수로 원래 예측 변수의 수를 줄입니다. 동시에 알고리즘은 이 작은 숫자가 원래 예측 변수 집합의 변동성의 특정 백분율(예: 95%)을 설명할 수 있음을 보장합니다. 이 값은 연구원이 선택합니다.

2. 새로운 예측 변수 집합 사이에는 상관 관계가 0입니다.

이로부터 우리에게 PCA는 모델링을 위한 초기 데이터의 예비 준비를 위한 알고리즘 중 하나 이지만 대상 변수를 예측하기 위한 모델링을 대체할 수는 없습니다.

RSA의 다양한 세부 사항에 대한 논의 중 이 문제에 대한 내 진술의 의미를 잃어버린 것 같습니다. 그러므로 나는 당신에게 상기시켜 주겠다: 나는 초기 예측변수의 수가 감소되었을 뿐만 아니라 목표변수에 대한 잡음이었던 예측변수도 제거된 PCA의 그러한 사용에 대한 링크 를 주었다. 이 스레드에서 논의됩니다.

따라서 나는 예측자 간의 잡음 문제와 이 문제를 해결하기 위해 SAR을 사용하는 매우 구체적인 아이디어의 가능한 사용으로 돌아갈 것을 제안합니다.

 
트레이더 박사 :

이것은 metaboliteDataComplete 테이블을 구문 분석하기 위해 5개의 주요 구성 요소가 있는 resNipals(반복 부분 최소 제곱에 의한 비선형 추정) 개체를 생성합니다. metaboliteDataComplete 대신 자신의 테이블을 대체할 수 있습니다.............

시도한 것은 Nipals입니다. 사이트의 두 번째 사진에 표시되어 있으며 실제로 분리되지도 않습니다. 신경망 PCA의 세 번째 사진에 있는 사진을 가져와야 합니다.

===========================

주제에서 약간 벗어나지만 코드에 대한 도움이 필요합니다....

열에 예측 변수가 있습니다. 모든 예측 변수와 모든 예측 변수의 차이를 계산하고 모든 조합을 정렬하고 싶습니다. 슬픔을 깨달았습니다. 이제 각 조합의 이름을 적절하게 지정하여 무엇이 무엇인지 이해할 수 있어야 한다는 것입니다.

예측 "A", "B", "C"가 있는 열이 있다고 가정해 보겠습니다.

차이점의 조합 만들기

1) 가 - 나

2) A - C

3) C - B

질문: "a_minus_b" , "a_minus_c"와 같은 새로 수신된 열 이름을 어떻게 지정합니까?

나는 단지 "R"과 프로그래밍을 일반적으로 배우고 있으므로 그러한 트릭에 전혀 익숙하지 않습니다.

이 코드에 무엇을 추가해야 합니까?

a <- 1 : 5
b <- 6 : 10
c <- 11 : 15
d <- 16 : 20
dt <- data.frame(a,b,c,d) 
dt

# все комбинации индексов между двумя переменными
# еще транспонирую(переворачиваю матрицу) мне так удобней воспринимать
combi <- t(  combn( 1 :ncol(dt), 2 )  )  
combi  

# пустая фрейм куда буду записывать результат вычислений с комбинацыями
res.dt <- as.data.frame(  matrix(nrow = nrow(dt) , ncol = nrow(combi))   )
res.dt

for (i in 1 :ncol(res.dt)){
   # буду проводить вычитание одной перем из другой во всех комбинацыях
   # и записывать в res.dt
  ii <- combi[i, 1 ]
  jj <- combi[i, 2 ]
  
  res.dt[,i] <- dt[,ii] - dt[,jj]
}
res.dt
 
mytarmails :

시도한 것은 Nipals입니다. 사이트의 두 번째 사진에 표시되어 있으며 실제로 분리되지도 않습니다. 신경망 PCA의 세 번째 사진에 있는 사진을 가져와야 합니다.

===========================

주제에서 약간 벗어나지만 코드에 대한 도움이 필요합니다....

열에 예측 변수가 있습니다. 모든 예측 변수와 모든 예측 변수의 차이를 계산하고 모든 조합을 정렬하고 싶습니다. 슬픔을 깨달았습니다. 이제 각 조합의 이름을 적절하게 지정하여 무엇이 무엇인지 이해할 수 있어야 한다는 것입니다.

예측 "A", "B", "C"가 있는 열이 있다고 가정해 보겠습니다.

차이점의 조합 만들기

1) 가 - 나

2) A - C

3) C - B

질문: "a_minus_b" , "a_minus_c"와 같은 새로 수신된 열 이름을 어떻게 지정합니까?

나는 단지 "R"과 프로그래밍을 일반적으로 배우고 있으므로 그러한 트릭에 전혀 익숙하지 않습니다.

이 코드에 무엇을 추가해야 합니까?

다소 이렇습니다.

colnames() <- c("..", "..")

이름 도 있다

도움말을 참조하십시오.

 
산산이치 포멘코 :

처음에 RSA는 다음 두 가지 문제를 해결하기 위한 것이었습니다.

PCA는 원래 원래 시리즈 의 차원을 줄이기 위한 것이었습니다. 그게 다야 예측 변수를 선택하는 데 사용하는 것은 망상적인 넌센스입니다.
 
산산이치 포멘코 :

다소 이렇습니다.

colnames() <- c("..", "..")

이름 도 있다

도움말을 참조하십시오.

)) 예, 이것은 생각할 필요가 없지만 1000개의 변수가 있는 경우 수동으로 각각 작성하시겠습니까?
 

Dr.Trader :

...

데이터는 eurusd d1, 클래스 0 또는 1에서 가져옵니다 - 다음 막대의 가격 하락 또는 상승. 모델이 10개 중 6개 이상의 경우에 test.csv에 대한 결과를 올바르게 예측했다면 이미 Forex에서 거래를 시도할 수 있으며 원칙적으로 병합되지 않지만 큰 이익도 기대해서는 안됩니다. 10개 중 7개(및 그 이상)의 경우에 이미 올바르게 예측하는 경우 - 이것이 성배에 이르는 올바른 방법이며, 다른 연도 및 월에 모델을 훈련하고 테스트해야 하며, 모든 곳에서 동일하다면, 매우 우수합니다.

...


더 구체적으로 보고서 파일에서:

/**
* 샘플 외의 모델링 품질:
*
* 트루포지티브: 182
* 트루네거티브: 181
* 거짓양성: 1
* 거짓음성: 1
* 통계가 있는 샘플 중 총 패턴: 365
* 샘플 외의 총 오류: 2
* 일반화 능력의 감도: 99.4535519125683%
* 일반화 능력의 특이도: 99.45054945054946%
* 일반화 능력: 98.90410136311776%
* Reshetov의 표시기: 8.852456238401455
*/


이제 팀을 구성하고 mql5 및 Java에서 이 비즈니스를 위한 자동화된 복합물인 오픈 소스 프로젝트를 만들 시간입니다. 조금 후에 모델을 훈련하는 방법과 사용 방법에 대한 지침을 작성하고 Java의 이진 분류자에 대한 소스 코드와 훈련 모델을 위한 샘플을 생성하는 MQL5 스크립트를 작성할 것입니다.

단지가 어떻게 작동하는지에 대한 대략적인 계획:

  1. 모든 금융 악기의 경우 차트에 별도의 로봇이 있습니다. 이 로봇 봉의 시가에서 작동하고 패턴을 파일로 덤프합니다.
  2. Java의 Pribluda(이진 분류기)는 각 도구에 대한 모델을 1초 간격으로 로드합니다. 1단계에서 로봇의 파일이 나타날 때까지 기다립니다. 기기의 티커와 패턴을 파일에서 읽습니다. 그런 다음 패턴이 있는 읽기 파일을 디스크에서 삭제합니다. 스트레이 패턴에 따라 거래 신호를 상품에 적합한 모델로 분류하여 파일에 기록합니다.
  3. 한 로봇은 2단계에서 스트레이에서 파일을 기다립니다. 이러한 파일을 찾으면 로봇은 해당 파일에서 기호와 신호를 읽고 이중 카운터 거래를 열거나 뒤집습니다. 신호에 따라 악기. 읽은 파일이 삭제됩니다.

프로젝트에 참여하고 Java 또는 MQL5로 프로그래밍하는 방법을 알고 있는 사람들이 있다면 이 스레드에서 구독을 취소하세요.

 
mytarmailS :

안녕하세요! 잘못된 기능을 사용하셨군요, 제가 알려드린 사이트에 표시된 대로 " nlPca "를 사용했어야 하는군요. 그렇지 않으면 제 잘못입니다. 더 자세한 정보를 제공해야 합니다...

여기에서 예측 대신 시도하십시오. 성공할 수 있습니다.

이 예는 불행히도 다른 주제에서 가져온 것입니다. 예를 들어 Forex에서는 항상 데이터의 100%를 추출할 수 있으며 데이터가 실험적으로 획득되는 다른 영역에서는 항상 공백, 누락된 값이 있습니다. 이 예에서 PCA는 예측자 자체에서 결측값을 재구성하는 데 사용됩니다. 예에서 세 열 중 하나의 값이 무작위로 지워지고 pca 모델이 생성되고 누락된 값이 도움을 받아 재생성됩니다.

나는 이것을 시도한 적이 없지만 기술적으로 목표 변수를 pca 모델에 포함시켜 예측 변수로 고려하는 것이 가능합니다. 그런 다음 새 데이터에서 해당 값을 각각 알 수 없으며 pca는 이러한 누락된 값을 채울 수 있습니다.

source( "https://bioconductor.org/biocLite.R" )
biocLite( "pcaMethods" )        

#создание pca объекта
library (pcaMethods)

## Data set with three variables where data points constitute a helix
#trainData - таблица с обучающими примерами. Целевая переменная тоже должна быть в этойже таблице. Пример колонок: Close , Hour ,MA30,target. (target - целевая переменная, со значениями например 0 или 1 обозначающими падение/рост цены)
## 50 steps is not enough, for good estimation use 1000
NlPca <- pca(trainData, nPcs= 1 , method= "nlpca" , maxSteps= 50 )
#newData - таблица с новыми данными, для проверки модели. Колонки должны быть теже Close , Hour ,MA30,target
newData[, "target" ] <- NA   #целевая переменная на новых данных не должны быть известна модели, и в случае NA - функция fitted должна подставить туда подходящие значения
fittedNewData <- fitted(NlPca, newData)
fittedNewData[, "target" ] # ваш результат предсказания
Я не могу начать новую нормальную строку :/ В общем можно сделать как я написал выше, но это не предсказание а реконструкция. PCA модель может просто найти некие значения которые "подойдут". Гарантий никаких нет, я предполагаю что ошибка будет 50%
 
결합기 :
PCA는 원래 원래 시리즈의 차원을 줄이기 위한 것이었습니다. 그게 다야 예측 변수를 선택하는 데 사용하는 것은 망상적인 넌센스입니다.

아니요, 모든 것이 좋습니다. 사용된 예측 변수는 각 주요 구성 요소에 대해 알려져 있으므로 주요 구성 요소에서 사용되지 않는 예측 변수를 안전하게 필터링할 수 있습니다. 읽어보세요. 마음에 들었습니다. http://www.win-vector.com/blog/2016/05/pcr_part2_yaware/ 거기에는 데이터에 5개의 좋은 예측 변수와 수십 개의 노이즈가 포함되어 있습니다. 노이즈는 분석을 통해 필터링됩니다. 이 스레드에서 볼 수 있는 다른 예제에 대해 동일한 코드를 사용했는데 일반적으로 작동합니다. 그러나 더 어려운 것은 외환입니다. 나는 지표에 아름다운 그림을 얻지 못했습니다. 더 똑똑한 것을 생각해 내야합니다.

 
트레이더 박사 :

이 예는 불행히도 다른 주제에서 가져온 것입니다. 예를 들어 Forex에서는 항상 데이터의 100%를 추출할 수 있으며 데이터가 실험적으로 획득되는 다른 영역에서는 항상 공백, 누락된 값이 있습니다. 이 예에서 PCA는 예측자 자체에서 결측값을 재구성하는 데 사용됩니다. 예에서 세 열 중 하나의 값이 무작위로 지워지고 pca 모델이 생성되고 누락된 값이 도움을 받아 재생성됩니다.

나는 이것을 시도한 적이 없지만 기술적으로 목표 변수를 pca 모델에 포함시켜 예측 변수로 고려하는 것이 가능합니다. 그런 다음 새 데이터에서 해당 값을 각각 알 수 없으며 pca는 이러한 누락된 값을 채울 수 있습니다.

젠장, 나는이 "NA"-shki가 날짜에 던져진 것이 우연이 아니라고 생각했지만 설명서를 읽었습니다. 신경망이있는 PCA가 분명히 있지만 사이트의이 사람이 어떻게되었는지 여전히 명확하지 않습니다. 수업을 잘 나누면서 이 아름다운 사진을 얻었습니다.
사유: