Tabella di sintonia per la stima dei modelli di partizione: risultatiUn'opzione per il partizionamento dei modelli (tree, bootstrap, boosted) consiste nell'usare una tabella di progettazione di ottimizzazione. I risultati iniziano con una tabella che include i punti di progettazione, nonché l'R-squared di convalida e l'RMSE di convalida per ciascun punto di progettazione. Ho bisogno che quella tabella mostri anche l'allenamento R-quadrato, l'allenamento RMSE, il test R-quadrato e il test RMSE. Qualcuno in grado di aiutare qui, forse con uno script?
Queste statistiche, e altro ancora, sono mostrate sotto la tabella per il modello scelto, ma ho bisogno di queste statistiche per tutti i punti di progettazione. Il metodo per la mia follia è questo: voglio essere in grado di produrre un grafico che mostri, diciamo, sia la convalida R2 che l'allenamento R2 contro il tasso di apprendimento per mostrare la quantità di overfitting che si verifica con l'aumento del tasso di apprendimento.
Re: Tabella di sintonia per la stima dei modelli di partizione: risultatiSto imparando molto sui dettagli della sceneggiatura di JMP, Cameron. Ancora una volta, questo funziona bene. Grazie ancora a te. Apprezzo molto il tuo aiuto.
Re: Tabella di sintonia per la stima dei modelli di partizione: risultatiSembra che NumberBox non riconosca "<< Ottieni".Controlla l'indice di scripting per NumberBox e vedrai tutti i messaggi che il tipo di oggetto riconoscerà.Uno di questi è << Ottieni testo; tuttavia ciò restituirà una stringa.Puoi convertirlo in un numero usando num().
num(report["Specifications"][NumberBox(1)] << Get Text);
Re: Tabella di sintonia per la stima dei modelli di partizione: risultatiCiao, Cameron:
Ho modificato il tuo script (grazie ancora!) Ma sono bloccato su un ultimo problema. Insieme ai risultati RSq, RMSE, ecc. da alberi potenziati, ora vorrei recuperare anche il numero finale di livelli. Ho pensato che questa sarebbe stata una semplice modifica del tuo script originale. Si prega di vedere la riga 13 dal basso:
NL = report["Specifications"][NumberBox(1)] << Get;
Questo non funziona, a quanto pare. Sai se c'è qualcosa di diverso nella parte "Specifiche" del rapporto rispetto alle "Statistiche generali"?
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: Tabella di sintonia per la stima dei modelli di partizione: risultatiFelice di aver potuto aiutare!Re: Tabella di sintonia per la stima dei modelli di partizione: risultatiAdesso funziona tutto alla grande, Cameron. Non posso dirti quanto apprezzo la tua saggezza!
Re: Tabella di sintonia per la stima dei modelli di partizione: risultatiLa colonna RMSE sarà in numcolbox(2), quindi potresti prenderla nello script nello stesso modo in cui prendi R2.
Per estrarre valori del genere dai report, devi solo capire dove si trovano nell'albero di visualizzazione. Puoi vedere come farlo qui: https://www.jmp.com/support/help/14/view-the-display-tree.shtml
Nel mio script, ho una variabile "report" che contiene un riferimento alla finestra del rapporto dall'output dell'albero potenziato. All'interno del rapporto, la casella di riepilogo intitolata "Statistiche generali" contiene la tabella con gli R2 e gli RMSE. Arrivo all'elemento di visualizzazione numcolbox con i valori R2 usando 'report[“Overall Statistics”][numcolbox(1)]'Re: Tabella di sintonia per la stima dei modelli di partizione: risultatiHa funzionato come un incantesimo, Cameron! A rischio di mettere alla prova la tua pazienza, come potrei recuperare gli RMSE insieme agli R2? Oppure, più in generale per la mia formazione, come faccio a determinare i nomi delle variabili per R2, RMSE, ecc. in modo da poterli chiamare nello script?
Re: Tabella di sintonia per la stima dei modelli di partizione: risultatiHo cambiato idea.Non è troppo difficile da scrivere.Ecco un esempio con alberi potenziati e i dati fisici dell'auto dalla libreria di dati di esempio.Ho creato una tabella di ottimizzazione per questo da provare, che sto allegando.Ho anche inserito una colonna di convalida nella tabella dei dati fisici dell'auto.
Ecco la sceneggiatura:
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];
);Ho creato una pila delle colonne R2 per la tabella dei risultati per creare il grafico seguente:
Questo dovrebbe essere abbastanza facile da adattare alle altre piattaforme che hai menzionato.
Re: Tabella di sintonia per la stima dei modelli di partizione: risultatiPenserei che dovresti scrivere uno script per quello, che dovrebbe effettivamente riprodurre i risultati della funzionalità integrata + prendere le altre metriche desiderate per il set di allenamento.Certamente fattibile, ma non sono sicuro che ne valga la pena.