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

 
로르샤흐 :

숲의 경우도 클러스터의 중요성을 알 수 있다. 캣버스트에서 이것은 아마도 plot_tree일 것입니다.

자료를 준비해서 올리겠습니다.

6열에 대한 테스트 버전을 만들고 11GB를 사용했습니다. 메모장++에서 파일이 너무 큽니다. SQLite용 BD 브라우저는 이미 20분 동안 중단되었습니다.

그것이 무엇인지 이해할 때까지 나무 덩어리가 어떻게 생겼는지 그림을 보여주십시오.

왜 열어? :) 디버깅을 위해 비슷한 구조로 미니 카피를 만들고 있습니다.

 
도서관 :

모든 데이터를 메모리에 저장하지 않고 어떻게 트리를 훈련하는지 궁금합니다. 테이블이 6GB이면 약 6GB의 메모리가 사용되어야 합니다. 트리는 각 열을 전체적으로 정렬해야 합니다. 모든 것을 메모리에 저장하지 않고 매번 디스크에서 데이터를 읽으면 속도가 느려집니다.
유일한 옵션은 데이터를 두 배로 유지하는 것이 아니라 메모리의 float 유형으로 유지하는 것이지만 정확도가 떨어집니다. 우리에게는 5자리의 정밀도로 이것이 무섭지 않을 수 있지만 catbust는 보편적인 소프트웨어이므로 물리적, 수학적인 문제는 배정밀도로 풀어야 한다고 생각합니다.

나는 코드를 공부하지 않았지만 논리적으로 생각한다면 CatBoost는 아마도 샘플 데이터 테이블을 변환하고 변환된 버전을 정확하게 저장하므로 빠르게 압축할 수 있습니다.

변환은 각 예측자의 양자화 그리드(6가지 알고리즘 사용 가능)에 따라 발생하며, 예를 들어 1000개의 서로 다른 변수 값 중 32개의 옵션이 남아(양자 그리드 범위에 해당) 이러한 데이터 벡터는 쉽게 압축되며, 게다가 숫자는 이미 정수일 뿐이며(그리드 크기 제한으로 판단 - ushort 데이터 유형 - 숫자당 2바이트) 양자화 테이블은 단순히 메모리에 있으며 나중에 코드에서 모델을 생성할 때 사용됩니다. 우리는 이미 크기를 상당히 줄였습니다. 그런 다음 평가를 위해 모든 예측자를 선택하는 것이 아니라 그 중 일부를 선택하여 볼륨을 줄일 수 있습니다. 이는 큰 샘플에 권장되는 반면 Randomizer 알고리즘을 사용하면 다른 트리에서 해당 예측자를 사용할 수 있습니다. "가방"에 즉시 빠지지 않기 때문에 훈련이 훨씬 빨라지지만 모델에 더 많은 나무가 있습니다. 물론 다른 트릭도 있지만 가장 중요한 것은 양자화입니다.

여기에서 양자화는 일반적으로 특별한 주의를 기울여야 합니다. 이상적으로는 각 예측자에 대해 자신의 그리드를 선택하고 그리드와 함께 훈련을 위해 데이터를 제출해야 합니다. 이렇게 하면 알고리즘을 수행할 수 있습니다.

따라서 샘플은 자체적으로 양자화될 수 있으며 잘 압축됩니다.

 
알렉세이 비아즈미킨 :

코드를 공부하지는 않았지만 논리적으로 생각하면 CatBoost가 샘플 데이터 테이블을 변환하고 변환된 버전을 정확히 저장하므로 빠르게 압축할 수 있습니다.

변환은 각 예측자의 양자화 그리드(6가지 알고리즘 사용 가능)에 따라 발생하며, 예를 들어 1000개의 서로 다른 변수 값 중 32개의 옵션이 남아(양자 그리드 범위에 해당) 이러한 데이터 벡터는 쉽게 압축되며, 게다가 숫자는 이미 정수일 뿐이며(그리드 크기 제한으로 판단 - ushort 데이터 유형 - 숫자당 2바이트) 양자화 테이블은 단순히 메모리에 있으며 나중에 코드에서 모델을 생성할 때 사용됩니다. 우리는 이미 크기를 상당히 줄였습니다. 그런 다음 평가를 위해 모든 예측자를 선택하는 것이 아니라 그 중 일부를 선택하여 볼륨을 줄일 수 있습니다. 이는 큰 샘플에 권장되는 반면 Randomizer 알고리즘을 사용하면 다른 트리에서 해당 예측자를 사용할 수 있습니다. "가방"에 즉시 빠지지 않기 때문에 훈련이 훨씬 빨라지지만 모델에 더 많은 나무가 있습니다. 물론 다른 트릭도 있지만 가장 중요한 것은 양자화입니다.

여기에서 양자화는 일반적으로 특별한 주의를 기울여야 합니다. 이상적으로는 각 예측자에 대해 자신의 그리드를 선택하고 그리드와 함께 훈련을 위해 데이터를 제출해야 합니다. 이렇게 하면 알고리즘을 수행할 수 있습니다.

따라서 샘플은 자체적으로 양자화될 수 있으며 잘 압축됩니다.

정확히는 기본적으로 1024 분할 옵션에 대한 그리드가 있는 것으로 기억합니다. 모든 데이터를 분할된 숫자로 대체하면 ushort 형식으로 저장할 수 있으며 이는 8, 4중 압축 대신 2바이트입니다. 분명히 6 대신 2GB가 있고 사용했기 때문입니다.
이제 이 그리드가 무엇에 사용되는지 이해했으며 압축에 사용되었습니다. 글쎄, 빨리 정렬하십시오.
Документация по MQL5: Основы языка / Типы данных / Целые типы / Типы char, short, int и long
Документация по MQL5: Основы языка / Типы данных / Целые типы / Типы char, short, int и long
  • www.mql5.com
Целый тип char занимает в памяти 1 байт (8 бит) и позволяет выразить в двоичной системе счисления 2^8 значений=256. Тип char может содержать как положительные, так и отрицательные значения. Диапазон изменения значений составляет от -128 до 127. uchar # Целый тип uchar также занимает в памяти 1 байт, как и тип char, но в отличие от него, uchar...
 
도서관 :
정확히는 기본적으로 1024 분할 옵션에 대한 그리드가 있는 것으로 기억합니다. 모든 데이터를 분할된 숫자로 대체하면 ushort 형식으로 저장할 수 있으며 이는 8, 4중 압축 대신 2바이트입니다. 분명히 6 대신 2GB가 있고 사용했기 때문입니다.

기본값은 254인데 그때 얼마로 설정했는지 기억이 안나네요. 아마도 2GB 미만의 메모리가 소비되었을 것입니다. 메모리가 너무 적다는 사실에 매우 놀랐던 기억이 있습니다.

어쨌든 이 접근 방식을 사용하면 샘플 자체를 포함하여 데이터를 상당히 압축할 수 있습니다. 신경망으로는 그렇게 할 수 없습니다.

도서관 :
이제 이 그리드가 무엇에 사용되는지 이해했으며 압축에 사용되었습니다. 글쎄, 빨리 정렬하십시오.
그리드는 값 범위를 사용하기 때문에 덜 적합할 수도 있습니다. 그러나 항상 좋은 것은 아닙니다. 이론적인 수준을 얻으려면 스스로 그물을 잘라야 한다고 생각합니다.
 
알렉세이 비아즈미킨 :

기본값은 254인데 그때 얼마로 설정했는지 기억이 안나네요. 아마도 2GB 미만의 메모리가 소비되었을 것입니다. 메모리가 너무 적다는 사실에 매우 놀랐던 기억이 있습니다.

그런 다음 uchar 사용할 수 있습니다. 1바이트입니다.

알렉세이 비아즈미킨 :
그리드는 값 범위를 사용하기 때문에 덜 적합할 수도 있습니다. 그러나 항상 좋은 것은 아닙니다. 이론적인 수준을 얻으려면 스스로 그물을 잘라야 한다고 생각합니다.


간단히 말해서 최대 값은 65,000입니다. 이러한 그리드를 설정하면 수동으로 증기 목욕을 할 수 없습니다.

 
막심 드미트리예프스키 :

https://www.mql5.com/en/articles/8385

좋은 구현이 있다는 사실이 아님)

러시아어로 나는 패스

나는 이것을 읽었다))) 계산에 많은 오류가 있고 네트워크는 다소 무작위적인 답변을 제공합니다

 
도서관 :

그런 다음 uchar 사용할 수 있습니다. 1바이트입니다.


간단히 말해서 최대 값은 65,000입니다. 이러한 그리드를 설정하면 수동으로 증기 목욕을 할 수 없습니다.

한계 크기는 65535이지만 코드의 변수에 영향을 줄 수는 없습니다.

그러나 최대 크기에 대해 - 아니요, 데이터 스트립에 대한 조정과 거짓말하는 것 근처에 패스가있을 수 있으므로 결과를 보장하지 않습니다.

일반적으로 범위(A>10 && A<=15)를 닫는 분할의 적절성을 항상 확인하는 학습 알고리즘을 갖는 것이 좋을 것입니다. 그렇지 않으면 일반적으로 다소 무작위로 발생합니다. 이러한 필수 조건은 없지만 때때로 재생산됩니다.

 
알렉산더 알렉세비치 :

나는 이것을 읽었다))) 계산에 많은 오류가 있고 네트워크는 다소 무작위적인 답변을 제공합니다

네트워크를 직접 작성하시겠습니까?

여기의 물에는 최소 단어와 최대 파이썬 코드가 있지만 영어도 있습니다.

https://datascience-매니아.com/DL/Building_a_Recurrent_Neural_Network-Step_by_Step_v1.html

Building a Recurrent Neural Network - Step by Step - v1
  • datascience-enthusiast.com
Building your Recurrent Neural Network - Step by Step
 
막심 드미트리예프스키 :

네트워크를 직접 작성하시겠습니까?

여기의 물에는 최소 단어와 최대 파이썬 코드가 있지만 영어도 있습니다.

https://datascience-매니아.com/DL/Building_a_Recurrent_Neural_Network-Step_by_Step_v1.html

예, 직접 원합니다) 모든 기사에서 활성화 함수의 예가 올바르게 고려되지 않기 때문입니다. 예를 들어, sigmoid는 모든 곳에서 1/1 + exp(-x)로 간주됩니다. 그리고 1.0/1.0+exp(-x)가 필요합니다. 그것은 같은 것을 쓴 것 같지만 터미널은 다른 계산을 제공합니다) 보기, 아마도 당신도 같은 방식으로 생각할 수 있음) 따라서 오류.
 
알렉산더 알렉세비치 :
예, 직접 원합니다) 모든 기사에서 활성화 함수의 예가 올바르게 고려되지 않기 때문입니다. 예를 들어, sigmoid는 모든 곳에서 1/1 + exp(-x)로 간주됩니다. 그리고 1.0/1.0+exp(-x)가 필요합니다. 그것은 같은 것을 쓴 것 같지만 터미널은 다른 계산을 제공합니다) 보기, 아마도 당신도 같은 방식으로 생각할 수 있음) 따라서 오류.
신경망 터미널에 쓰는 것은 전혀 선택 사항이 아닙니다. 거기, 어떤 f-I도 갑자기 예상대로 작동하지 않을 수 있습니다. 기성품 사용
사유: