Alglib-a의 숲에서 이해할 수 없는 코드를 발견했습니다. dataanalysis.mqh의 교차 에트로피 계산 함수의 전체 코드:
//+------------------------------------------------------------------+ //| Average cross-entropy (in bits per element) on the test set | //| INPUT PARAMETERS: | //| DF - decision forest model | //| XY - test set | //| NPoints - test set size | //| RESULT: | //| CrossEntropy/(NPoints*LN(2)). | //| Zero if model solves regression task. | //+------------------------------------------------------------------+ static double CDForest::DFAvgCE(CDecisionForest &df,CMatrixDouble &xy, const int npoints) { //--- create variables double result=0; int i=0; int j=0; int k=0; int tmpi=0; int i_=0; //--- creating arrays double x[]; double y[]; //--- allocation ArrayResizeAL(x,df.m_nvars); ArrayResizeAL(y,df.m_nclasses); //--- initialization result=0; for(i=0;i<=npoints-1;i++) { for(i_=0;i_<=df.m_nvars-1;i_++) x[i_]=xy[i][i_]; //--- function call DFProcess(df,x,y); //--- check if(df.m_nclasses>1) { //--- classification-specific code k=(int)MathRound(xy[i][df.m_nvars]); tmpi=0; for(j=1;j<=df.m_nclasses-1;j++) { //--- check if(y[j]>(double)(y[tmpi])) tmpi=j; } //--- check if(y[k]!=0.0) result=result-MathLog(y[k]); else result=result-MathLog(CMath::m_minrealnumber); } } //--- return result return(result/npoints); }
빨간색으로 강조 표시된 코드 부분은 아래 코드에서 사용되지 않는 항목( tmpi )을 고려합니다. 그렇다면 왜 포함됩니까? 무언가가 완료되지 않았거나 코드가 완전히 정리되지 않았습니다. 일반적으로 나는 1개의 트리를 탐색하고 싶었기 때문에 이 f-ii를 이해하기 시작했습니다. 그리고 포리스트의 나무 수를 1로 설정하면 모든 오류가 0과 1 사이에 있고 이 오류는 100에서 300+까지 발생하는 것을 보았습니다. 누군가가 크로스 엔트로피를 이해합니다. 코드가 일반적으로 정확합니까, 아니면 미완성 상태로 남아 있습니까?
값은 일반적으로 무한대까지 가능합니다. 대수 손실을 계산할 때 올바른 클래스에 대해 0 확률이 예측되는 경우, 이를 제외한 다른 모든 클래스는 계수가 0인 공식에 포함되고 거기에서 이 글리치를 어떻게든 해결하려고 시도했습니다. 이 샘플에서 가장 높은 확률 값을 갖는 클래스, 아마도 그들은 그것을 공식에 추가하고 싶었지만 분명히 그들은 그것에 대해 생각하지 않았습니다 :)
이반 네그레쉬니 : 값은 일반적으로 무한대까지 가능합니다. 대수 손실을 계산할 때 올바른 클래스에 대해 0 확률이 예측되는 경우, 이를 제외한 다른 모든 클래스는 계수가 0인 공식에 포함되고 거기에서 이 글리치를 어떻게든 해결하려고 시도했습니다. 이 샘플에서 가장 높은 확률 값을 갖는 클래스, 아마도 그들은 그것을 공식에 추가하고 싶었지만 분명히 그들은 그것에 대해 생각하지 않았습니다 :)
tmpi는 5개 오류 중 1개 오류에서만 사용됩니다. 분명히 그것은 다른 기능을 위한 공백으로 사용되었지만 다른 사람들은 그것을 제거하는 것을 잊었습니다. 첫 번째 tmpi의 합계는 사용 중이고, 두 번째 tmpi에는 있지만 사용되지 않습니다. 일반적으로 이것은 작업에 영향을 미치지 않습니다.
도서관 : tmpi는 5개 오류 중 1개 오류에서만 사용됩니다. 분명히 그것은 다른 기능을 위한 공백으로 사용되었지만 다른 사람들은 그것을 제거하는 것을 잊었습니다. 첫 번째 tmpi의 합계는 사용 중이고, 두 번째 tmpi에는 있지만 사용되지 않습니다. 일반적으로 이것은 작업에 영향을 미치지 않습니다.
기본적으로 좋은 오류 계산 공식은 하나의 올바른 클래스가 아닌 모든 클래스에 대한 확률 분포 를 고려할 수 있음을 의미합니다.
이 지점에서 - 방문시. 순수 공유 기사 온
그건 그렇고, 이것은 정확히
포럼에 있는 바보들의 수를 감안할 때(당신이 가장 좋아하는 무도 마술사 .. 포함), 나는 이 주제를 더 이상 지원할 필요가 없다고 생각합니다.
맥심, 틀렸어! 작업을 공식화하고 표시하는 것 자체에 이점이 있습니다. 하지만 확신이 서지 않습니다.
맥심, 틀렸어! 작업을 공식화하고 표시하는 것 자체에 이점이 있습니다. 하지만 확신이 서지 않습니다.
음, 여기 임상 돌베가 살고 있다는 것을 알 수 있습니다. 이것은 포럼 마스크가 아니라 실제 임상 사례입니다. 각 메시지를 통해 한 마디만 하면 두 개를 줍니다.
Alglib-a의 숲에서 이해할 수 없는 코드를 발견했습니다. dataanalysis.mqh의 교차 에트로피 계산 함수의 전체 코드:
//+------------------------------------------------------------------+
//| Average cross-entropy (in bits per element) on the test set |
//| INPUT PARAMETERS: |
//| DF - decision forest model |
//| XY - test set |
//| NPoints - test set size |
//| RESULT: |
//| CrossEntropy/(NPoints*LN(2)). |
//| Zero if model solves regression task. |
//+------------------------------------------------------------------+
static double CDForest::DFAvgCE(CDecisionForest &df,CMatrixDouble &xy,
const int npoints)
{
//--- create variables
double result=0;
int i=0;
int j=0;
int k=0;
int tmpi=0;
int i_=0;
//--- creating arrays
double x[];
double y[];
//--- allocation
ArrayResizeAL(x,df.m_nvars);
ArrayResizeAL(y,df.m_nclasses);
//--- initialization
result=0;
for(i=0;i<=npoints-1;i++)
{
for(i_=0;i_<=df.m_nvars-1;i_++)
x[i_]=xy[i][i_];
//--- function call
DFProcess(df,x,y);
//--- check
if(df.m_nclasses>1)
{
//--- classification-specific code
k=(int)MathRound(xy[i][df.m_nvars]);
tmpi=0;
for(j=1;j<=df.m_nclasses-1;j++)
{
//--- check
if(y[j]>(double)(y[tmpi]))
tmpi=j;
}
//--- check
if(y[k]!=0.0)
result=result-MathLog(y[k]);
else
result=result-MathLog(CMath::m_minrealnumber);
}
}
//--- return result
return(result/npoints);
}
빨간색으로 강조 표시된 코드 부분은 아래 코드에서 사용되지 않는 항목( tmpi )을 고려합니다. 그렇다면 왜 포함됩니까?
Wikipedia 에 따르면무언가가 완료되지 않았거나 코드가 완전히 정리되지 않았습니다.
일반적으로 나는 1개의 트리를 탐색하고 싶었기 때문에 이 f-ii를 이해하기 시작했습니다. 그리고 포리스트의 나무 수를 1로 설정하면 모든 오류가 0과 1 사이에 있고 이 오류는 100에서 300+까지 발생하는 것을 보았습니다.
누군가가 크로스 엔트로피를 이해합니다. 코드가 일반적으로 정확합니까, 아니면 미완성 상태로 남아 있습니까?
값은 일반적으로 무한대까지 가능합니다. 대수 손실을 계산할 때 올바른 클래스에 대해 0 확률이 예측되는 경우, 이를 제외한 다른 모든 클래스는 계수가 0인 공식에 포함되고 거기에서 이 글리치를 어떻게든 해결하려고 시도했습니다. 이 샘플에서 가장 높은 확률 값을 갖는 클래스, 아마도 그들은 그것을 공식에 추가하고 싶었지만 분명히 그들은 그것에 대해 생각하지 않았습니다 :)
첫 번째 tmpi의 합계는 사용 중이고, 두 번째 tmpi에는 있지만 사용되지 않습니다.
일반적으로 이것은 작업에 영향을 미치지 않습니다.
tmpi는 5개 오류 중 1개 오류에서만 사용됩니다. 분명히 그것은 다른 기능을 위한 공백으로 사용되었지만 다른 사람들은 그것을 제거하는 것을 잊었습니다.
첫 번째 tmpi의 합계는 사용 중이고, 두 번째 tmpi에는 있지만 사용되지 않습니다.
일반적으로 이것은 작업에 영향을 미치지 않습니다.
기본적으로 좋은 오류 계산 공식은 하나의 올바른 클래스가 아닌 모든 클래스에 대한 확률 분포 를 고려할 수 있음을 의미합니다.
동시에 샘플 중 하나에서 올바른 클래스의 확률이 0이면 모든 것이 무한대로 날아갑니다.
이것이 내가 2차 오류 회귀를 선호하는 이유일 것입니다. :)
기본적으로 좋은 오류 계산 공식은 하나의 올바른 클래스가 아닌 모든 클래스에 대한 확률 분포를 고려할 수 있음을 의미합니다.
이제 투자자들이 수리한 Kesha(SanSanych의 손자)와 Alyosha가 지점을 이끌게 하십시오. 공정할 것입니다.
이 주제를 삭제하고 다른 관련 주제로 더 적절하고 새로운 주제를 시작하는 것이 더 논리적입니다.
그건 그렇고, 나는 가격에서 정규 분포를 찾았습니다. 이미 TIP에 "잘못된" 데이터 처리로 인한 모든 이상은 스스로 가져오는 것이라고 썼습니다.)
요즘에는 Python 주제에 대해 설명하겠습니다.
이 주제를 삭제하고 다른 관련 주제로 더 적절하고 새로운 주제를 시작하는 것이 더 논리적입니다.
그건 그렇고, 나는 가격에서 정규 분포를 찾았습니다. 이미 TIP에 "잘못된" 데이터 처리로 인한 모든 이상은 스스로 가져오는 것이라고 썼습니다.)
요즘에는 Python 주제에 대해 설명하겠습니다.
아아, 수학, North Wind 및 Halt 수준의 포럼에 사람들이 없기 때문에 이러한 모든 주제에는 미래가 없습니다. 임호.