파티션 모델 추정을 위한 튜닝 테이블: 결과분할 모델(트리, 부트스트랩, 부스트)에 대한 옵션은 조정 설계 테이블을 사용하는 것입니다. 결과는 설계 포인트와 각 설계 포인트에 대한 검증 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: 파티션 모델 추정을 위한 튜닝 테이블: 결과이제 모든 것이 훌륭하게 작동합니다, Cameron. 내가 당신의 지혜에 얼마나 감사하는지 당신에게 말할 수 없습니다!
Re: 파티션 모델 추정을 위한 튜닝 테이블: 결과RMSE 열은 numcolbox(2)에 있으므로 R2를 가져오는 것과 같은 방식으로 스크립트에서 가져올 수 있습니다.
보고서에서 이와 같은 값을 가져오려면 표시 트리에서 해당 값이 어디에 있는지 파악하기만 하면 됩니다. 여기에서 방법을 볼 수 있습니다. https://www.jmp.com/support/help/14/view-the-display-tree.shtml
내 스크립트에는 부스트 트리 출력에서 보고서 창에 대한 참조를 보유하는 변수 "report"가 있습니다. 보고서 내에서 "전체 통계"라는 제목의 개요 상자에는 R2 및 RMSE가 포함된 테이블이 있습니다. 'report[“전체 통계”][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: 파티션 모델 추정을 위한 튜닝 테이블: 결과내장 기능의 결과를 효과적으로 재현하고 훈련 세트에 대해 원하는 다른 메트릭을 가져와야 하는 스크립트를 작성해야 한다고 생각합니다.확실히 할 수 있지만 노력할 가치가 있는지 확실하지 않습니다.