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

 

Alexey, 예측자를 필터링하는 기능에 대한 또 다른 질문이 있습니다. 반환된 값의 범위는 어떻게 되어야 합니까? 무작위 입력 (fitness_f(runif(predictor_number, min = 0, max = 1)))을 사용하여 데이터에서 피트니스 함수를 실행했으며 0에서 0.03 사이의 결과를 보았습니다. 또한 코드에서 오류(0 입력)의 경우 함수도 0을 반환한다는 것을 알 수 있습니다. 여기에 문제가 있습니다. GenSA는 결과를 최소화하려고 합니다. 즉, GenSA가 끝나면 간단히 도달합니다. 0의 입력 및 정지. 그렇다면 gensa가 반대 방향으로 작용하도록 피트니스 함수 결과의 부호를 변경해야 할 필요가 있습니까?
최적화의 어느 시점에서 피트니스 함수가 음수를 반환하기 시작하고 음수가 낮을수록 더 좋습니다. 이제 모든 것이 정상입니다.

 
트레이더 박사 :

Alexey, 예측자를 필터링하는 기능에 대한 또 다른 질문이 있습니다. 반환된 값의 범위는 어떻게 되어야 합니까? 무작위 입력 (fitness_f(runif(predictor_number, min = 0, max = 1)))을 사용하여 데이터에서 피트니스 함수를 실행했으며 0에서 0.03 사이의 결과를 보았습니다. 또한 코드에서 오류(0 입력)의 경우 함수도 0을 반환한다는 것을 알 수 있습니다. 여기에 문제가 있습니다. GenSA는 결과를 최소화하려고 합니다. 즉, GenSA가 끝나면 단순히 0에 도달합니다. 입력 및 정지. 그렇다면 gensa가 반대 방향으로 작용하도록 피트니스 함수 결과의 부호를 변경해야 할 필요가 있습니까?
최적화의 어느 시점에서 피트니스 함수가 음수를 반환하기 시작하고 음수가 낮을수록 더 좋습니다. 이제 모든 것이 정상입니다.

질문이 좋습니다. 이해하다.

저는 이 방법에 대한 기사를 작성 중이며 여기에 발췌한 내용이 있습니다.


수정된 상호 정보 및 예측 변수의 하위 집합에 대한 확률적 검색을 기반으로 하는 알고리즘의 블록 다이어그램.


  • a) 알려진 방법 중 하나를 사용하여 데이터 세트를 범주형 형식으로 가져옵니다.
  • b) 행 수, 예측자, 예측자의 평균 수준 수(수준 수가 다른 경우)와 같은 데이터 세트 매개변수를 추정하고 이러한 데이터를 기반으로 최종 하위 집합입니다.
  • c) [0, 1] 범위에 균일하게 분포된 난수를 사용하여 세트의 입력 변수 수와 동일한 길이로 숫자 유형의 벡터를 초기화하고 값의 하한(0) 및 상한(1)을 설정합니다. 벡터의 - 이것은 SA 함수의 인수입니다.
  • d) 다중 정보 분위수, 상호 정보 분위수, 모든 계산을 결합하는 적합성 함수를 추정하기 위한 함수를 초기화합니다.
  • e) MI 및 VI 분위수를 추정하기 위해 Monte Carlo 시뮬레이션 수를 설정합니다. MI 및 VI의 노이즈 값에 대한 분위수(예: 0.9)를 설정합니다.
  • f) 알고리즘의 반복 횟수 또는 시간을 설정합니다. 클수록 좋습니다.
  • g) 알고리즘을 실행하고 결과를 기다립니다.


포인트 "b"는 설명이 필요합니다. 최적의 변수 수는 다음 공식에 의해 결정되는 조건부 값입니다.

optim_var_num <- log(x = sample_size / 100, base = round(mean_levels, 0))


직관은 입력 변수가 독립적이라는 가정 하에 최소 n개의 관측치가 각각, 여기서 n은 100입니다.

입력 집합에 대한 출력 변수의 종속성에 대한 통계적 결론을 내리기에는 입력 수준에 의한 관찰 빈도의 보수적 추정이 너무 작기 때문에 수준이 많은 입력 변수를 너무 많이 가질 수 없습니다.

동시에 입력 변수 수의 길이가 있는 벡터 값이 1(변수 인덱스 포함 플래그)로 변환되는 임계값을 설정하여 확률 계산을 수행합니다.

임계값 < - 1 - optim_var_num / predictor_number


그 본질은 계산 된 최적의 입력 수를 선택할 확률의 최대 값을 설정한다는 사실로 요약됩니다. 그리고 이 논리는 이항 분포를 사용하여 테스트됩니다.

예를 들어, 학습에 사용되는 전체 세트의 절반인 데이터를 가정해 보겠습니다.

17,973개의 행과 12개의 예측 변수가 있으며 각 예측 변수에는 5개 수준이 있습니다. 위의 공식을 적용한 결과 최적의 예측변수 개수는 3.226개임을 알 수 있다.

세트에 예측 변수를 포함하기 위해 임계값 공식을 적용하면 0.731이 됩니다.

이항 분포에서 얻을 수 있는 선택된 변수의 가장 가능성 있는 수는 무엇입니까?


최대값은 3개의 관찰에 해당합니다. 정확히 말하면 5 ^ 3.226은 평균 100개의 관찰을 수용할 수 있는 178개의 레벨을 제공합니다.
 
나는 계속한다. 함수의 출력에서 값 0은 가능한 최악의 최대값입니다. 벡터 par의 요소가 임계값을 벗어나지 않으면 값은 자동으로 0이 됩니다. 가장 좋은 값은 -1입니다. 입력의 하위 집합에서 출력의 완전한 결정성을 의미합니다.
 

예, 음의 적합도 값을 가진 예측 변수의 하위 집합이 있었습니다. 많은 예측 변수가 있었고 수천 개가 있었고 gensa를 2번의 반복으로 제한했습니다. 모든 것이 8시간 걸렸습니다. :) 피트니스 기능의 결과는 6%입니다. nnet을 사용하여 이러한 예측 변수에 대한 전면 테스트에서 45%의 오류가 발생했습니다. 이것으로 충분하지 않습니다. 고문이 수익성이 있다고 생각하지 않습니다. 더 나은 결과를 찾기 위해 다시 한도를 10회 반복으로 설정하고 시작했습니다. 하루를 기다렸습니다. 언젠가는 gensa가 끝나기를 바랍니다. 유전학 (GA 라이브러리)을 시도해야하며 여러 스레드로 작업하는 것이 더 빠를 것입니다 (GA는 결과를 최소화하고 최대화하지 않습니다. 즉, GA에 대한 적합성 기능의 결과는 부호를 변경해야 함). 더 실험하겠습니다.

주성분 모델에 대한 다양한 기사를 읽었으며 이제 R ^ 2를 측정하고 예측 변수를 선택하여 최대화하는 모델을 훈련할 뿐만 아니라 데이터 전면 테스트를 위해 모델을 실제로 테스트하려고 했습니다. 다소 모호한 것 같습니다. 한편으로는 상관관계가 있는 예측자 쌍(캐럿 라이브러리의 findCorrelation 함수)을 제거하여 모델의 R ^ 2 증가를 달성했지만, 결과적으로 데이터 전면 테스트를 위해 모델을 테스트할 때 R ^ 2 , 이 떨어집니다. 기적은 일어나지 않았으며 PCA 모델도 재학습됩니다. 실제 훈련과 검증을 위해 더 복잡한 예측자 평가(훈련 세트를 두 개로 분할)를 시도하고 싶습니다. PCA 모델을 훈련시킨 다음 검증 세트에서 즉시 테스트하고 최종 결과로 최소 R^2를 반환합니다. 이러한 함수를 사용하여 예측 변수 집합을 평가하고 이 값을 최대화하면 이론상으로는 훈련생과 새 데이터 모두에 대해 좋은 결과를 제공하는 예측 변수 집합이 정확히 있을 것입니다. 확인해야 합니다.

나는 또한 이 스레드의 PCA에 대한 첫 번째 기사의 텍스트를 분명히 오해했습니다. 변이의 95%를 설명할 수 있도록 구성 요소의 수를 선택해야 한다고 하는데 목표 변수를 예측하는 정확도를 말하는 것으로 생각했습니다. 그러나 모든 것이 그렇지는 않습니다. 일반적으로 주요 구성 요소는 대상 변수를 고려하지 않고 구축되며, 95%의 정확도는 이러한 동일한 구성 요소를 사용하여 초기 데이터를 얼마나 정확하게 기술하는지입니다. 예측 정확도는 관련이 없습니다.

 
Dr.Trader :

네, 음의 적합도 값을 가진 예측 변수의 하위 집합이 있었습니다. 많은 예측 변수가 있었고 수천 개가 있었고 gensa를 2번의 반복으로 제한했습니다. 모든 것이 8시간 걸렸습니다. :) 피트니스 기능의 결과는 6%입니다. nnet을 사용하여 이러한 예측 변수에 대한 전면 테스트에서 45%의 오류가 발생했습니다. 이것으로 충분하지 않습니다. 고문이 수익성이 있다고 생각하지 않습니다. 더 나은 결과를 찾기 위해 다시 한도를 10회 반복으로 설정하고 시작했습니다. 하루를 기다렸습니다. 언젠가는 gensa가 끝나기를 바랍니다. 유전학 (GA 라이브러리)을 시도해야하며 여러 스레드로 작업하는 것이 더 빠를 것입니다 (GA는 결과를 최소화하고 최대화하지 않습니다. 즉, GA에 대한 적합성 기능의 결과는 부호를 변경해야 함). 더 실험하겠습니다.

주성분 모델에 대한 다양한 글을 읽었는데 이제 R ^ 2를 측정하고 예측변수를 선택하여 최대화하는 모델을 훈련시키는 것뿐만 아니라 실제로 데이터 프론트 테스트를 위해 모델을 테스트하려고 했습니다. 다소 모호한 것 같습니다. 한편으로는 상관관계가 있는 예측자 쌍(캐럿 라이브러리의 findCorrelation 함수)을 제거하여 모델의 R ^ 2 증가를 달성했지만, 결과적으로 데이터 전면 테스트를 위해 모델을 테스트할 때 R ^ 2 , 이 떨어집니다. 기적은 일어나지 않았으며 PCA 모델도 재학습됩니다. 실제 훈련과 검증을 위해 더 복잡한 예측자 평가(훈련 세트를 두 개로 분할)를 시도하고 싶습니다. PCA 모델을 훈련시킨 다음 검증 세트에서 즉시 테스트하고 최종 결과로 최소 R^2를 반환합니다. 이러한 함수를 사용하여 예측 변수 집합을 평가하고 이 값을 최대화하면 이론상으로는 훈련생과 새 데이터 모두에 대해 좋은 결과를 제공하는 예측 변수 집합이 정확히 있을 것입니다. 확인해야 합니다.

나는 또한 이 스레드의 PCA에 대한 첫 번째 기사의 텍스트를 분명히 오해했습니다. 변이의 95%를 설명할 수 있도록 구성 요소의 수를 선택해야 한다고 하는데 목표 변수를 예측하는 정확도를 말하는 것으로 생각했습니다. 그러나 모든 것이 그렇지는 않습니다. 일반적으로 주요 구성 요소는 대상 변수를 고려하지 않고 구축되며, 95%의 정확도는 이러한 동일한 구성 요소를 사용하여 초기 데이터를 얼마나 정확하게 기술하는지입니다. 예측 정확도는 관련이 없습니다.

예, 그들이 이해하지 못한 것으로 나타났습니다.

SAR은 독립 실행형 도구로 사용할 수 있지만 이 기사에서는 이에 대해 논의하지 않습니다.

일부 대규모 예측 변수 집합에서 노이즈를 필터링하는 방법에 대해 설명합니다.

내 생각에 이것은 다음 단계로 수행됩니다.

1. Y 인식. 이것은 목표 변수에 따른 예측 변수의 스케일링입니다.

2. PCA 알고리즘을 사용하여 예측 변수 집합을 정렬하고 분산의 95%를 설명하는 부분을 선택합니다.

2. PCA 알고리즘을 사용하여 (직접 알아내지 못했습니다.) 새로운 예측 변수 세트가 생성되며, 원래 예측 변수에 계산된 계수(적재)를 곱하여 얻습니다. 주문한 세트입니다. 분산의 95%를 설명하는 이러한 새로운 벡터를 많이 사용합니다.

추신.

Y-aware가 노이즈 예측기 필터링 분야에서 새로운 삐걱거림이 있다는 간행물이 있었습니다.

성공

 
산산이치 포멘코 :

2. PCA 알고리즘을 사용하여 예측 변수 집합을 정렬하고 분산의 95%를 설명하는 부분을 선택합니다.

이것은 아직 이해하지 못했습니다. (이제 y 인식 접근 방식에 대해서만 작성하여 다른 접근 방식과 혼동하지 않도록 하겠습니다.) 기사 자체는 다음과 같습니다. http://www.r-bloggers.com/principal-components-regression-pt-2-y-aware-methods/

" princ <- prcomp(dmTrain, center = FALSE, scale. = FALSE) " 코드 뒤에 다음과 같은 상황이 발생합니다. 데이터를 읽고 Y로 크기를 조정하고 PC 구성 요소를 빌드합니다. 이 함수는 구성요소의 수를 제한하지 않습니다. 많은 구성요소가 예측자가 있는 만큼 구성되기 때문입니다. 첫 번째 단계는 그 중 일부만 선택하는 것입니다(변형의 95%를 설명할 수 있을 정도로 권장). 기사 자체에서 저자는 구성 요소에 대한 sdev 그래프(일부 지정되지 않은 편차)를 보고 그래프에서 눈에 띄기 때문에 2 또는 5로 충분할 것이라고 말했습니다. 어떻게 든 눈에 띄지 않고 그래프가 점차 감소합니다.

테이블 sdev가 있으며 항목 수는 구성 요소 수와 같습니다. 이것에서 얼마나 많은 구성 요소를 가져와야 하는지 계산할 수 있습니까? 모든 숫자의 합이 반드시 1로 제한되는 것은 아니며 6의 합을 본 적이 있으며 아마도 그 이상일 것입니다.

> princ$sdev
[ 1 ] 0.17585066 0.15322845 0.13818021 0.13090573 0.12177070 0.11854969
[ 7 ] 0.11176954 0.10910302 0.10616631 0.10265987 0.10056754 0.09441041
[ 13 ] 0.09343688 0.08832101 0.08620753 0.08235531 0.08132748 0.07992235
[ 19 ] 0.07800569 0.07575063 0.07463254 0.07311194 0.07210698 0.07032990
[ 25 ] 0.06907964 0.06763711 0.06634935 0.06544930 0.06451703 0.06260861
 
Dr.Trader :

이것은 아직 이해하지 못했습니다. (이제 y 인식 접근 방식에 대해서만 작성하여 다른 접근 방식과 혼동하지 않도록 하겠습니다.) 기사 자체는 다음과 같습니다. http://www.r-bloggers.com/principal-components-regression-pt-2-y-aware-methods/

" princ <- prcomp(dmTrain, center = FALSE, scale. = FALSE) " 코드 뒤에 다음과 같은 상황이 발생합니다. 데이터를 읽고 Y로 크기를 조정하고 PC 구성 요소를 빌드합니다. 이 함수는 구성요소의 수를 제한하지 않습니다. 많은 구성요소가 예측변수가 있는 만큼 구성되기 때문입니다. 첫 번째 단계는 그 중 일부만 선택하는 것입니다(변형의 95%를 설명할 수 있을 만큼 충분히 권장). 기사 자체에서 저자는 구성 요소에 대한 sdev 그래프(일부 지정되지 않은 편차)를 보고 그래프에서 눈에 띄기 때문에 2 또는 5로 충분할 것이라고 말했습니다. 어떻게 든 눈에 띄지 않고 그래프가 점차 감소합니다.

테이블 sdev가 있으며 항목 수는 구성 요소 수와 같습니다. 이것에서 얼마나 많은 구성 요소를 가져와야 하는지 계산할 수 있습니까? 모든 숫자의 합이 반드시 1로 제한되는 것은 아니며, 6의 합을 본 적이 있으며 아마도 그 이상일 것입니다.

나는 딸랑이를 실행하고 세 개의 테이블을 얻습니다.

  • 표준 편차: 여기에서 다양한 값은 총 = 1이 필요하지 않다고 말할 수 있습니다.
  • 회전: 새 벡터를 얻기 위해 원래 벡터를 곱하는 데 사용하는 el 계수
  • 구성 요소의 중요성. 논의되고 있는 것

후자의 경우 첫 번째 열은 PC1만 취하면 0.9761 변동성(누적 비율)이 설명되고 PC1과 PC2의 두 가지 구성 요소를 취하면 0.99996이 설명된다는 식입니다.

(표를 삽입할 수 없음)

구성 요소의 중요성:

PC1 PC2 PC3 PC4 PC5

표준편차 2.2092 0.34555 0.01057 0.008382 0.004236

분산의 비율 0.9761 0.02388 0.00002 0.000010 0.000000

누적 비율 0.9761 0.99996 0.99998 1.000000 1.000000

 

이 표를 오랫동안 찾고 있었는데 마침내 요약에서 찾았습니다. 실제로 가장 눈에 띄는 곳 :) , 보여 주셔서 감사합니다. 요약에는 무언가가 있지만 개체의 속성에는 없는 경우입니다.

summary(princ)$importance[ 3 ,]

그 기사에는 Y-aware를 위한 몇 가지 특별한 솔루션과 함께 구성 요소 선택 문제에 특별히 전념한 연속이 있는 것으로 나타났습니다. 아직 시도하지 않았습니다.

http://www.win-vector.com/blog/2016/05/pcr_part3_pickk/  

 
트레이더 박사 :

이 표를 오랫동안 찾고 있었는데 마침내 요약에서 찾았습니다. 실제로 가장 눈에 띄는 곳 :) , 보여 주셔서 감사합니다. 요약에는 무언가가 있지만 개체의 속성에는 없는 경우입니다.

그 기사에는 Y-aware를 위한 몇 가지 특별한 솔루션과 함께 구성 요소 선택 문제에 특별히 전념한 연속이 있는 것으로 나타났습니다. 아직 시도하지 않았습니다.

http://www.win-vector.com/blog/2016/05/pcr_part3_pickk/  

이 R에서는 어떤 객체를 얻자 마자 즉시 str과 summary를 설정하고 플롯합니다. 볼 수있는 놀라운 것들이 많이 있습니다. 사실 R의 "객체"는 많은 프로그래밍 언어보다 훨씬 더 복잡한 것입니다.
 
Dr.Trader :

예, 음의 적합도 값을 가진 예측 변수의 하위 집합이 있었습니다. 많은 예측 변수가 있었고 수천 개가 있었고 gensa를 2번의 반복으로 제한했습니다. 모든 것이 8시간 걸렸습니다. :) 피트니스 기능의 결과는 6%입니다. nnet을 사용하여 이러한 예측 변수에 대한 전면 테스트에서 45%의 오류가 발생했습니다. 이것으로 충분하지 않습니다. 고문이 수익성이 있다고 생각하지 않습니다. 더 나은 결과를 찾기 위해 다시 한도를 10회 반복으로 설정하고 시작했습니다. 하루를 기다렸습니다. 언젠가는 gensa가 끝나기를 바랍니다. 유전학 (GA 라이브러리)을 시도해야하며 여러 스레드로 작업하는 것이 더 빠를 것입니다 (GA는 결과를 최소화하고 최대화하지 않습니다. 즉, GA에 대한 적합성 기능의 결과는 부호를 변경해야 함). 더 실험하겠습니다.

주성분 모델에 대한 다양한 글을 읽었는데 이제 R ^ 2를 측정하고 예측변수를 선택하여 최대화하는 모델을 훈련시키는 것뿐만 아니라 실제로 데이터 프론트 테스트를 위해 모델을 테스트하려고 했습니다. 다소 모호한 것 같습니다. 한편으로는 상관관계가 있는 예측자 쌍(캐럿 라이브러리의 findCorrelation 함수)을 제거하여 모델의 R ^ 2 증가를 달성했지만, 결과적으로 데이터 전면 테스트를 위해 모델을 테스트할 때 R ^ 2 , 이 떨어집니다. 기적은 일어나지 않았으며 PCA 모델도 재학습됩니다. 실제 훈련과 검증을 위해 더 복잡한 예측자 평가(훈련 세트를 두 개로 분할)를 시도하고 싶습니다. PCA 모델을 훈련시킨 다음 검증 세트에서 즉시 테스트하고 최종 결과로 최소 R^2를 반환합니다. 이러한 함수를 사용하여 예측 변수 집합을 평가하고 이 값을 최대화하면 이론상으로는 훈련생과 새 데이터 모두에 대해 좋은 결과를 제공하는 예측 변수 집합이 정확히 있을 것입니다. 확인해야 합니다.

나는 또한 이 스레드의 PCA에 대한 첫 번째 기사의 텍스트를 분명히 오해했습니다. 변이의 95%를 설명할 수 있도록 구성 요소의 수를 선택해야 한다고 하는데 목표 변수를 예측하는 정확도를 말하는 것으로 생각했습니다. 그러나 모든 것이 그렇지는 않습니다. 일반적으로 주요 구성 요소는 대상 변수를 고려하지 않고 구축되며, 95%의 정확도는 이러한 동일한 구성 요소를 사용하여 초기 데이터를 얼마나 정확하게 기술하는지입니다. 예측 정확도는 관련이 없습니다.

왜 이렇게 오래 걸리는지 잘 이해가 되지 않습니다. optim_var_number는 얼마를 얻었습니까? 10초 이내여야 합니다. 1200초로 설정하면 뭔가 될 것입니다.
사유: