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

 
막심 드미트리예프스키 :
catbust와 비교 - 일반적으로 반환, 일반적으로 테스트에서> 0.5 .. 평소와 같이

캣버스트에서 1그루 나무의 숲을 확인하셨나요? 일반적으로 catbust는 출력 또는 다른 오류에서 교차 엔트로피를 제공합니까?

Alglib는 5가지 다른 오류를 제공합니다.

경고: 훈련 세트 오류 추정 보고서: relclserror=0.267; 평균=184.207; ms오류=0.516; 평균 오류=0.267; 평균 오류 = 0.267;

 

아니요, 부스팅은 다르게 구축됩니다. 엔트로피가 떨어지는 동안 트리 수를 증가시킵니다. n 반복 동안 증가하기 시작하면 모델을 지나치게 복잡하게 만들지 않도록 중지합니다.

엔트로피 및 모든 사용자 정의 메트릭을 제공하지만 엔트로피를 기반으로 합니다.

영어로. alglib 사이트의 버전은 더 빠르고 새로운 포리스트를 게시했습니다. 그건 그렇고 .. 그것을 파악하고 다시 작성하고 싶었지만 손이 닿지 않았습니다)

 
xgboost 문서를 살펴보았습니다 . 출력에서 교차 엔트로피가 없지만
error - 이진 분류 오류율. (# 잘못된 경우) / (# 모든 경우)로 계산됩니다.
기본적으로 예측 값에 대해 0.5 임계값을 사용하여 음수 및 양수 인스턴스를 정의합니다.
다른 임계값(예: 0.)은 "error@0"으로 지정할 수 있습니다.
 
도서관 :
xgboost 문서를 보았습니다. 출력에서 교차 엔트로피가 없지만
error - 이진 분류 오류율. (# 잘못된 경우) / (# 모든 경우)로 계산됩니다.
기본적으로 예측 값에 대해 0.5 임계값을 사용하여 음수 및 양수 인스턴스를 정의합니다.
다른 임계값(예: 0.)은 "error@0"으로 지정할 수 있습니다.

네, 하지만 여기서는 분류 오류가 기본적으로 사용됩니다. 분명히

그러나 구별해야합니다. 부스팅은 오류를 사용하여 중지하고 숲은 사실을 알고 나서 완전히 깊이 나무를 만듭니다.
 
막심 드미트리예프스키 :

아니요, 부스팅은 다르게 구축됩니다. 엔트로피가 떨어지는 동안 트리 수를 증가시킵니다. n 반복 동안 증가하기 시작하면 모델을 지나치게 복잡하게 만들지 않도록 중지합니다.

엔트로피 및 모든 사용자 정의 메트릭을 제공하지만 엔트로피를 기반으로 합니다.

영어로. alglib 사이트의 버전은 더 빠르고 새로운 포리스트를 게시했습니다. 그건 그렇고 .. 그것을 파악하고 다시 작성하고 싶었지만 손이 닿지 않았습니다)

그리고 새로운 allib는 어디에 있습니까? 포럼에서 볼 수있는 곳은 무엇입니까? 이 함수의 코드를 비교하는 것은 흥미롭습니다.

 
도서관 :

그리고 새로운 allib는 어디에 있습니까? 포럼에서 볼 수있는 곳은 무엇입니까? 이 함수의 코드를 비교하는 것은 흥미롭습니다.

아니요, C++ 또는 C#으로 되어 있습니까?

http://www.alglib.net/arcnews.php#date_16_06_2018

  • 개선된 랜덤 포레스트 구성 알고리즘은 이전 버전보다 2배에서 10배 빨라지고 훨씬 더 작은 포리스트를 생성합니다.
NEWS Archive
  • www.alglib.net
The news archive contains the list of all news, 44 in total. The latest news are at the news page.
 
막심 드미트리예프스키 :

아니요, C++ 또는 C#으로 되어 있습니까?

http://www.alglib.net/arcnews.php#date_16_06_2018

  • 개선된 랜덤 포레스트 구성 알고리즘은 이전 버전보다 2배에서 10배 더 빠르고 훨씬 더 작은 포리스트를 생성합니다.

고맙습니다!

 
도서관 :

고맙습니다!

이해했다면 비교하고 작성하십시오 :) 쓰레기가 많지 않으면 다시 작성할 수 있습니다. 현재 포리스트의 파일이 너무 크므로 줄이는 것이 좋습니다. 그리고 가속도 보너스입니다.

 

Maxim의 이니셔티브 덕분에 차단이 해제되었습니다! 맥심 감사합니다.

내가 목욕하는 동안 나뭇잎에 대한 Expert Advisor를 시작했는데, NG 이전에 썼던 것입니다. 지금까지는 결과가 부정적이지만 더 시간을 주어야 한다고 생각합니다. 작업 고문 시작시 발생하지 않은 연도의 움직임.

지금은 풍부한 역사와 안타까운 경험을 가진 계정으로 최소한의 테스트를 수행하고 있으므로 공개 신호가 없을 것이며 나중에 통계가 축적되면 보고서를 게시하겠습니다. 내 접근 방식이 수익성이 있는지 여부에 관심이 있는 사람을 위해 이 작업을 수행합니다.

CatBoost와 관련하여 내 모델은 각각 약 1-30그루의 나무로 매우 작기 때문에 테스트(모델이 선택됨)와 테스트(독립적인 테스트가 수행되는) 샘플이 매우 좋은 재무 결과를 보여줄 수 있는 상황이 발생했습니다. , 그러나 훈련 샘플의 결과는 매우 약합니다. 따라서 이제 세 가지 샘플 모두에서 모델을 확인하고 나에게 적합하면 선택합니다. 따라서 훈련 샘플도 보는 것이 좋습니다. 테스트 샘플에서 나무의 잎(나의 대안적 접근 방식, 잎만 선택한 경우) 또는 숲에서와 동일한 효과를 기대했기 때문에 이 작업을 수행하지 않았습니다. 모델은 확실히 잘 작동하지만 항상 그런 것은 아닙니다.

모델 선택 기준에 대한 질문은 열려 있지만 좋은 모델을 훈련하기 위한 샘플에 대한 테스트(여러 재무 지표 및 모델 기준에 따라) 후 100,000개 중 10-30개 이하의 조각이 있습니다. 물론 충분하지 않습니다. Toli는 기준을 과소평가하거나 더 많은 모델을 만듭니다. Catboost에는 다양한 매개변수가 있으므로 많은 모델을 리벳팅할 수 있습니다.

반면에, 나는 비디오 카드의 도움으로 훈련을 정말로 원했지만 1060에서 거의 의미가 없다는 것이 밝혀졌습니다. 지금까지 실험에 따르면 G3900 프로세서에서 200 모델을 훈련하는 데 20 분이 걸렸습니다. (실제로 LGA1151에서 가장 많은 슬래그) 6분밖에 걸리지 않았습니다! 동시에 프로세서는 지속적으로 50-60%로 로드되어 한 번에 2개 이상의 비디오 카드를 사용할 수 없으며 6개의 비디오 카드 리그에 대한 강한 희망을 가지고 있었습니다. 이론상 모든 것이 빨라야 하는데 왜 이런 일이 일어나는지 모르겠습니다. GPU 계산의 병목 현상은 RAM에서 그래픽 메모리로 또는 그 반대로 모델을 전송하는 것이지만 모두 매우 느리게 작동합니다. 아마도 각 반복 후에 그리고 이 브레이크 때문에 전송이 발생할 수 있습니다. 다른 사람이 GPU에서 실행을 시도했습니까?

 
막심 드미트리예프스키 :

이해했다면 비교하고 작성하십시오 :) 쓰레기가 많지 않으면 다시 작성할 수 있습니다. 현재 포리스트의 파일이 너무 크므로 줄이는 것이 좋습니다. 그리고 가속도 보너스입니다.

이에 비해 아래에는 동일한 사용되지 않은 코드 조각이 있습니다. (2009년에 서명됨, 즉 이 부분에 편집이 없음)


             Copyright 16.02.2009 by Bochkanov Sergey
        *************************************************************************/
        public static double dfavgce(decisionforest df,
            double[,] xy,
            int npoints,
            alglib.xparams _params)
        {
            double result = 0;
            double[] x = new double[0];
            double[] y = new double[0];
            int i = 0;
            int j = 0;
            int k = 0;
            int tmpi = 0;
            int i_ = 0;

            x = new double[df.nvars-1+1];
            y = new double[df.nclasses-1+1];
            result = 0;
            for(i=0; i<=npoints-1; i++)
            {
                for(i_=0; i_<=df.nvars-1;i_++)
                {
                    x[i_] = xy[i,i_];
                }
                dfprocess(df, x, ref y, _params);
                if( df.nclasses>1 )
                {
                   
                    //
                    // classification-specific code
                    //
                    k = (int)Math.Round(xy[i,df.nvars]);
                    tmpi = 0;
                    for(j=1; j<=df.nclasses-1; j++)
                    {
                        if( (double)(y[j])>(double)(y[tmpi]) )
                        {
                            tmpi = j;
                        }
                    }

                    if( (double)(y[k])!=(double)(0) )
                    {
                        result = result-Math.Log(y[k]);
                    }
                    else
                    {
                        result = result-Math.Log(math.minrealnumber);
                    }
                }
            }
            result = result/npoints;
            return result;
        }

사유: