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

 
알렉세이 비아즈미킨 :

흥미로운 말. 그런데 기존 트리 구성에서 오류를 줄이기 위해 후속 트리를 구축했는데 왜 샘플링을 안 했는지 이해가 안 가네요. 자세히 알려주세요. 뭔가 심오한게 이해가 안 가네요...

초기 데이터를 제공하여 숫자가 1보다 큰 나무를 부스팅한 잎을 조사하고 있습니까? 그렇다면 결과는 임의적이어야 합니다. 왜냐하면. 그 나무들은 원래 데이터가 아니라 오류에서 배웠습니다. 저것들. 당신은 나무와 그 잎사귀가 해결하도록 훈련되지 않은 문제를 해결하고 있습니다.
그 나무들이 케이스에서 나온 것이라면. 숲 - 그런 다음 그들은 모두 원래 데이터에 대해 훈련되고 사용할 수 있습니다(하지만 실수로 1개의 나무가 숲보다 훨씬 열등하기 때문에 아무 의미가 없습니다). 부스팅에서 - 아니, 왜냐하면. 다른 모든 것이 없는 1개의 나무는 고려하는 것이 의미가 없습니다.

 
도서관 :

초기 데이터를 제공하여 숫자가 1보다 큰 나무를 부스팅한 잎을 조사하고 있습니까? 그렇다면 결과는 임의적이어야 합니다. 왜냐하면. 그 나무들은 원래 데이터가 아니라 오류에서 배웠습니다. 저것들. 당신은 나무와 그 잎사귀가 해결하도록 훈련되지 않은 문제를 해결하고 있습니다.
그 나무들이 케이스에서 나온 것이라면. 숲 - 그런 다음 그들은 모두 원래 데이터에 대해 훈련되고 사용할 수 있습니다(하지만 실수로 1개의 나무가 숲보다 훨씬 열등하기 때문에 아무 의미가 없습니다). 부스팅에서 - 아니, 왜냐하면. 다른 모든 것이 없는 1개의 나무는 고려하는 것이 의미가 없습니다.

따라서 각각의 다음 알고리즘이 이전 알고리즘의 구성의 단점을 보완하려고 하는 순차적 개선 방법으로 부스팅의 정의에서도 마찬가지입니다.
 
도서관 :

네, 오차를 줄이기 위해 오차를 목표로 삼고 빼죠.

여기 부스팅 알고리즘이 있습니다. 저는 직접 공부하고 있습니다. https://neurohive.io/ru/osnovy-data-science/gradientyj-busting/


나는 이것이 고전적인 부스팅이라는 것을 이해합니다. 아마도 catbust에서 그들은 그들 자신의 무언가를 생각해 냈을 것입니다 ...

나는 기사를 보았다. 예, 내가 이해하는 한 실제로 트리가 구축되고 샘플에 적용되며 실제 타겟과 예측 타겟 사이의 델타가 계산된 다음 오류를 줄이기 위해 다음 트리가 구축됩니다. 즉, 델타를 예측합니다. 그러나 실제로 동일한 샘플에 새로운 트리가 만들어지고 새롭고 새로운 연결이 형성됩니다. 실제로 대상 하나만 변경됩니다. 그러나 이 접근 방식을 사용 하면 임의의 숲 으로 명확하지 않은 새로운 연결(잎)을 찾을 수 있으며 이러한 연결은 첫 번째 트리에 따라 달라지며 선택 항목(새롭지 않음)에 따라 달라지지만 CatBoost의 후속 트리 주어진 반복 횟수까지 또는 정지 신호까지 구축되며 이 기호는 테스트 샘플에 의해 결정됩니다. 기호는 모델의 품질을 평가하기 위한 계산된 지표입니다(다양한 지표 목록이 있음). 나는 한 번에 두 개의 샘플에서 개선을 얻고 싶기 때문에 특성을 기반으로 정확하게 학습을 중단하기로 선택했습니다. 그리고 그것이 훈련 하나에만 있다면 이것은 분명히 과적합입니다. 이러한 이유로 학습에 직접적인 영향을 미치는 표본의 크기에 대한 질문이 발생합니다. 훈련 샘플의 크기가 일정하더라도 테스트 샘플의 크기는 학습에 영향을 미칩니다.


도서관 :

초기 데이터를 제공하여 숫자가 1보다 큰 나무를 부스팅한 잎을 조사하고 있습니까? 그렇다면 결과는 임의적이어야 합니다. 왜냐하면. 그 나무들은 원래 데이터가 아니라 오류에서 배웠습니다. 저것들. 당신은 나무와 그 잎사귀가 해결하도록 훈련되지 않은 문제를 해결하고 있습니다.
그 나무들이 케이스에서 나온 것이라면. 숲 - 그런 다음 그들은 모두 원래 데이터에 대해 훈련되고 사용할 수 있습니다(하지만 실수로 1개의 나무가 숲보다 훨씬 열등하기 때문에 아무 의미가 없습니다). 부스팅에서 - 아니, 왜냐하면. 다른 모든 것이 없는 1개의 나무는 고려하는 것이 의미가 없습니다.

생각해보세요. 저는 잎을 연구하기 위한 플랫폼을 준비 중입니다(catboost에서는 이진 트리에 가깝습니다). 트리가 많은 경우 결과는 무시할 수 있지만 이론상으로도 첫 번째 트리의 리프에서 큰 오류 오류가 있고 네 번째 트리가 리프에서 이 오류를 수정했다면 가치 있는 연결이 있을 수 있습니다. 사실 새로운 연결은 논리적인 의미를 가지며 그 자체로 샘플을 올바르게 분류합니다. 기술적으로, catboost에는 각 이진 트리(잎)의 답변 결과가 포함된 배열이 있으며 이러한 답변이 합산되지만 트릭은 이진 트리(잎)의 작은 부분만이 샘플의 한 행. 따라서 이론적으로 예측 능력이 매우 낮은 이진 트리(잎)를 일반적으로 선택(제로 아웃)하는 것이 가능합니다. 이는 초기 오류가 있거나 (재훈련으로 인해) 약간의 조정이 있는 트리이기 때문입니다. 중요한 가치. 또 다른 방향은 이러한 연결을 사용하여 예측 변수의 중요성을 평가하는 것입니다. 여기서 최종 배열에 큰 가중치가 있는 경우 이러한 연결과 예측 변수는 중요하고 나머지는 임계값에 의해 덜 중요하므로 필터링해야 합니다. . 이러한 선별이 완료되면 모델은 먼저 더 중요한 예측 변수에 대해 훈련된 다음 덜 중요한 예측 변수에 대해 훈련할 수 있습니다. 덜 중요한 예측 변수는 더 안정적인 관계 구축을 방해하지 않고 학습 결과를 개선해야 하기 때문입니다. 가능하면 추가하십시오.

결과적으로 정크 이진 트리는 실제로 적합하지 않으며 총 가중치가 큰 마이크로 앙상블(2-3개의 이진 트리(잎)) 또는 단일 이진 트리도 매우 중요하며 분류에 별도로 사용할 수 있습니다.

불행히도, 나는 현재 개별 이진 트리(잎에 대한 일반적인 이해에서)를 추출하고 이를 일반적인 읽기 가능한 규칙으로 변환하는 메커니즘이 없으므로 현재로서는 모든 것이 이론에 불과하지만 협력을 위해 열려 있습니다.

 
알렉세이 비아즈미킨 :

불행히도, 저는 현재 개별 이진 트리(잎에 대한 일반적인 이해에서)를 추출하고 이를 일반적인 읽기 가능한 규칙으로 변환하는 메커니즘이 없으므로 지금은 모든 것이 이론에 불과하지만 협력을 위해 열려 있습니다.

그리고 MT5에서 모델을 어떻게 그리나요? 글쎄, 테스터에서 거래하거나 멀리 몰아가는 것. 나는 그것을 알아낼 때까지 최선의 방법에 대해 생각하고 있습니다. Python으로 완전히 전환하고 MT5와 연결하거나 catbust 바이너리를 사용하십시오.

 
막심 드미트리예프스키 :

그리고 MT5에서 모델을 어떻게 그리나요? 거기에서 무엇을 거래하거나 테스터에서 몰아가십시오. 나는 그것을 알아낼 때까지 최선의 방법에 대해 생각하고 있습니다. Python으로 완전히 전환하고 MT5와 연결하거나 catbust 바이너리를 사용하십시오.

C++용 모델은 MQL5로 변환됩니다. 실제로 배열만 사용되며 MQL에 이 모델의 인터프리터가 있습니다(코드는 내 것이 아님). 따라서 모델은 Expert Advisor에 로드되며, 이제 파일을 통해 수백 개의 모델을 즉시 로드하고 옵티마이저를 통해 드라이브를 포함하여 터미널에서 이미 볼 수 있습니다.

 
알렉세이 비아즈미킨 :

C++용 모델은 MQL5로 변환됩니다. 실제로 배열만 사용되며 MQL에 이 모델의 인터프리터가 있습니다(코드는 내 것이 아님). 따라서 모델은 Expert Advisor에 로드되며, 이제 파일을 통해 수백 개의 모델을 즉시 로드하고 옵티마이저를 통해 드라이브를 포함하여 터미널에서 이미 볼 수 있습니다.

글쎄, 기사는 일종의 프레임 워크와 아이디어로 작성 될 것입니다 (아이디어는 우주보다 작지 않아야 함), 어떤 종류의 도움이 필요한지, 또는 거기에 무엇을 협동

내가 이해하는 한 커뮤니티는 나누어져 있습니다. 일부는 끌어내고, 다른 일부는 일반화합니다. 예를 들어, 나는 이 접근 방식에 동의하지 않습니다. 어쩌면 인생이 그 아이디어를 완전히 이해하지 못했을 수도 있습니다.
 
막심 드미트리예프스키 :

글쎄, 기사는 일종의 프레임 워크와 아이디어로 작성 될 것입니다 (아이디어는 우주보다 작지 않아야 함), 어떤 종류의 도움이 필요한지, 또는 거기에 무엇을 협동

기사의 경우 깊은 이론적 지식이 없으며 다른 개념을 제시하고 기존 현상의 해석을 변경합니다. 이것은 학문적 접근이 아닙니다.

모델 인터프리터가 재미있을 것 같은데, 제가 작성한 코드가 아니기 때문에 공개할 수 없습니다.

그리고 (닫힌 클래스로 인해) 적용할 수 없는 코드와 함께 이론에 남아 있는 모든 것은 흥미롭지 않을 것이라고 생각합니다. 그리고 모델을 만들고 선택하는 과정은 모두가 결정한 것이고 거기에 대한 관심도 없는 것 같아요.

 
막심 드미트리예프스키 :

내가 이해하는 한 커뮤니티는 나누어져 있습니다. 일부는 끌어내고, 다른 일부는 일반화합니다. 예를 들어, 나는 이 접근 방식에 동의하지 않습니다. 어쩌면 인생이 그 아이디어를 완전히 이해하지 못했을 수도 있습니다.

그리고 저는 커뮤니티에 대해 잘 모릅니다. 다른 지역의 다른 사람들은 어떻게 하는지 몰라요?

내가 MO를 사용하여 인간 행동(또는 알고리즘)의 모델을 찾고 있기 때문에 데이터를 가져오는 것이 논리적으로 보입니다. 그러한 행동 패턴이 많이 있을 수 있고 독립적일 수 있으므로 가능한 한 많이 꺼내는 것이 합리적입니다. , 모든 것을 함께 일반화하는 방법은 불가능합니다. 그리고 일부의 경우 시장은 집합적인 마음의 작업 결과, 규칙이 없는 특정 투표 기관의 결과이며, 분명히 이 상황에 대해 올바르게 설명하는 하나의 모델을 찾고 있습니다. 유기체.

 
알렉세이 비아즈미킨 :

첫 번째 트리의 리프에 큰 오류 오류가 있고 네 번째 트리가 해당 리프에서 이 오류를 수정했다면 실제로 새 관계 는 논리적 의미를 가지며 자체적으로 샘플을 올바르게 분류합니다 .

나는 이것에 대해 확신하지 못합니다. 네 번째 나무는 잎으로 첫 번째 나무의 실수를 수정합니다. 나는 그들이 부부로서만 의미가 있다고 생각합니다. 하지만 내가 틀릴 수도 있습니다. 왜냐하면 나는 그런 것들을 실험하지 않았습니다.

 
도서관 :

나는 이것에 대해 확신하지 못합니다. 네 번째 나무는 잎으로 첫 번째 나무의 실수를 수정합니다. 나는 그들이 부부로서만 의미가 있다고 생각합니다. 노아가 틀릴 수 있습니다. 왜냐하면 나는 그런 것들을 실험하지 않았습니다.

매우 원시적이라면 첫 번째 트리는 샘플에 대한 응답이 없고 0을 반환하고 네 번째 트리는 이 응답을 갖고 "확률" 0.6을 고려합니다. 기술적으로 첫 번째 트리의 오류를 수정했지만 실제로는 이전에는 전혀 존재하지 않았던 연결이 드러났습니다. 모든 나무가 전체 샘플을 나눈다고 상상하더라도(그리고 이것은 사실이 아닌 것 같습니다), 0이 아니라 0.1로 하고 다음 나무는 0.5를 가지면 동일한 효과가 나타납니다. 그러나 확률은 그다지 확률이 아니며, 배열의 값은 활성화된 이진 트리의 모든 값을 추가한 후에야 확률과 유사한 것으로 변환됩니다.

사유: