분할 모델 추정을 위한 튜닝 테이블: 결과모델 분할(트리, 부트스트랩, 부스트)에 대한 옵션은 튜닝 설계 테이블을 사용하는 것입니다. 결과는 각 설계점에 대한 검증 R-제곱 및 검증 RMSE뿐만 아니라 설계점을 포함하는 테이블로 시작됩니다. 해당 테이블에는 학습 R 제곱, 학습 RMSE, R 제곱 테스트 및 RMSE 테스트도 표시되어야 합니다. 여기에서 도움을 줄 수 있는 사람이 있나요? 스크립트로 가능할까요?
이러한 통계 등은 선택한 모델에 대한 표 아래에 표시되지만 모든 설계 포인트에 대해 이러한 통계가 필요합니다. 내 미친 방법은 다음과 같습니다. 예를 들어 학습률이 증가함에 따라 발생하는 과적합의 양을 보여주기 위해 학습률에 대한 검증 R2와 훈련 R2를 모두 보여주는 그래프를 생성할 수 있기를 원합니다.
Re: 분할 모델 추정을 위한 튜닝 테이블: 결과저는 JMP 스크립트인 Cameron에 대해 많은 것을 배우고 있습니다. 다시 한번 말하지만, 이것은 잘 작동합니다. 다시 한번 감사드립니다. 귀하의 도움에 진심으로 감사드립니다.
Re: 분할 모델 추정을 위한 튜닝 테이블: 결과NumberBox가 "<< Get"을 인식하지 못하는 것 같습니다.NumberBox의 스크립팅 인덱스를 확인하면 개체 유형이 인식할 수 있는 모든 메시지가 표시됩니다.그 중 하나는 << 텍스트 가져오기입니다. 그러나 이는 문자열을 반환합니다.num()을 사용하여 숫자로 변환할 수 있습니다.
num(report["Specifications"][NumberBox(1)] << Get Text);
Re: 분할 모델 추정을 위한 튜닝 테이블: 결과안녕하세요, 카메론:
귀하의 스크립트를 수정했지만(다시 한번 감사드립니다!) 마지막 문제가 남아 있습니다. 부스팅 트리의 RSq, RMSE 등 결과와 함께 이제 최종 레이어 수도 검색하고 싶습니다. 나는 이것이 원본 스크립트를 간단하게 수정하는 것이라고 생각했습니다. 맨 아래에서 13번째 줄을 참조하세요.
NL = report["Specifications"][NumberBox(1)] << Get;
분명히 작동하지 않습니다. 보고서의 "사양" 부분과 "전체 통계" 부분에 다른 점이 있는지 알고 계십니까?
dt = Data Table("C.jmp");
dt_pars = Data Table("table 3400.jmp");
//Get copy of pars table to store results
dt_results = dt_pars << Subset( All rows, Selected columns only( 0 ) );
dt_results << New Column("Seed");
dt_results << New Column("Final N Layers");
dt_results << New Column("Rsq Training");
dt_results << New Column("Rsq Validation");
dt_results << New Column("Rsq Test");
dt_results << New Column("RMSE Training");
dt_results << New Column("RMSE Validation");
dt_results << New Column("RMSE Test");
dt_results << New Column("N Training");
dt_results << New Column("N Validation");
dt_results << New Column("N Test");
for(i = 1, i<= N Row(dt_pars), i++,
SED = dt_pars: Seeds[i];
SPT = dt_pars:Splits Per Tree[i];
LR = dt_pars:Learning Rate[i];
RSR = dt_pars:Row Sampling Rate[i];
CSR = dt_pars:Column Sampling Rate[i];
MSS = dt_pars:Minimum Size Split[i];
NL = dt_pars:Number of Layers[i];
str = Eval Insert("\[report = (dt << Boosted Tree(
Y( :PR ),
X(
:Pe,
:To,
:Td,
),
Validation( :Name( "Train/Valid/Test" ) ),
Set Random Seed( ^SED^ ),
Method( "Boosted Tree" ),
Splits per Tree( ^SPT^ ),
Number of Layers( ^NL^ ),
Learning Rate( ^LR^ ),
Row Sampling Rate( ^RSR^ ),
Column Sampling Rate( ^CSR^ ),
Minimum Size Split( ^MSS^ ),
Go,
invisible
)) << Report;]\");
//Fit the boosted tree
Eval(Parse(str));
//Get the Rsq values and insert them into the results table
R2 = report["Overall Statistics"][NumberColBox(1)] << Get;
RMSE = report["Overall Statistics"][NumberColBox(2)] << Get;
N = report["Overall Statistics"][NumberColBox(3)] << Get;
NL = report["Specifications"][NumberBox(1)] << Get;
report << Close Window;
dt_results:Final N Layers[i] = NL[1];
dt_results:Rsq Training[i] = R2[1];
dt_results:Rsq Validation[i] = R2[2];
dt_results:Rsq Test[i] = R2[3];
dt_results:RMSE Training[i] = RMSE[1];
dt_results:RMSE Validation[i] = RMSE[2];
dt_results:RMSE Test[i] = RMSE[3];
dt_results:N Training[i] = N[1];
dt_results:N Validation[i] = N[2];
dt_results:N Test[i] = N[3];
);
Re: 분할 모델 추정을 위한 튜닝 테이블: 결과도움이 될 수 있어서 기뻐요!Re: 분할 모델 추정을 위한 튜닝 테이블: 결과이제 모든 일이 잘 진행되고 있어요, 카메론. 당신의 지혜에 얼마나 감사하는지 말할 수 없습니다!
Re: 분할 모델 추정을 위한 튜닝 테이블: 결과RMSE 열은 numcolbox(2)에 있으므로 R2를 가져오는 것과 같은 방식으로 스크립트에서 이를 가져올 수 있습니다.
보고서에서 이와 같은 값을 가져오려면 표시 트리에서 해당 값이 어디에 있는지 파악하면 됩니다. 여기에서 그 방법을 볼 수 있습니다: https://www.jmp.com/support/help/14/view-the-display-tree.shtml
내 스크립트에는 부스팅 트리 출력의 보고서 창에 대한 참조를 보유하는 변수 "report"가 있습니다. 보고서 내에서 "전체 통계"라는 제목의 개요 상자에는 R2 및 RMSE가 포함된 테이블이 있습니다. 'report[“Overall Statistics”][numcolbox(1)]'를 사용하여 R2 값이 있는 numcolbox 표시 요소에 도달합니다.Re: 분할 모델 추정을 위한 튜닝 테이블: 결과매력처럼 일했어요, 카메론! 인내심을 갖고 R2와 함께 RMSE를 검색하려면 어떻게 해야 합니까? 또는 보다 일반적으로 교육을 위해 R2, RMSE 등의 변수 이름을 결정하여 스크립트에서 호출할 수 있도록 하려면 어떻게 해야 합니까?
Re: 분할 모델 추정을 위한 튜닝 테이블: 결과나는 마음을 바꾼다.스크립트를 작성하는 것은 그리 어렵지 않습니다.다음은 샘플 데이터 라이브러리의 부스트 트리와 자동차 물리적 데이터가 포함된 예입니다.이것을 시험해 보기 위해 튜닝 테이블을 만들었고 이를 첨부합니다.또한 Car Physical Data 테이블에 유효성 검사 열을 넣었습니다.
스크립트는 다음과 같습니다.
dt = Data Table("Car Physical Data");
dt_pars = Data Table("TuningTable");
//Get copy of pars table to store results
dt_results = dt_pars << Subset( All rows, Selected columns only( 0 ) );
dt_results << New Column("Rsq Training");
dt_results << New Column("Rsq Validation");
for(i = 1, i<= N Row(dt_pars), i++,
SPT = dt_pars:SplitsPerTree[i];
LR = dt_pars:Learning Rate[i];
RSR = dt_pars:Row Sampling Rate[i];
CSR = dt_pars:Column Sampling Rate[i];
str = Eval Insert("\[report = (dt << Boosted Tree(
Y( :Weight ),
X(
:Country,
:Type,
:Turning Circle,
:Displacement,
:Horsepower,
:Gas Tank Size
),
Validation( :Validation ),
Method( "Boosted Tree" ),
Splits per Tree( ^SPT^ ),
Number of Layers( 50 ),
Learning Rate( ^LR^ ),
Row Sampling Rate( ^RSR^ ),
Column Sampling Rate( ^CSR^ ),
Go,
invisible
)) << Report;]\");
//Fit the boosted tree
Eval(Parse(str));
//Get the Rsq values and insert them into the results table
R2 = report["Overall Statistics"][NumberColBox(1)] << Get;
report << Close Window;
dt_results:Rsq Training[i] = R2[1];
dt_results:Rsq Validation[i] = R2[2];
);다음 그래프를 만들기 위해 결과 테이블에 대해 R2 열을 스택했습니다.
이것은 당신이 언급한 다른 플랫폼에 적응하는 것이 매우 쉬울 것입니다.
Re: 분할 모델 추정을 위한 튜닝 테이블: 결과이를 위해서는 내장 기능의 결과를 효과적으로 재현하고 훈련 세트에 대해 원하는 다른 측정항목을 확보해야 하는 스크립트를 작성해야 한다고 생각합니다.확실히 할 수 있지만 노력할 가치가 있는지 잘 모르겠습니다.