Tabla de ajuste para estimar modelos de partición: resultadosUna opción para particionar modelos (árbol, bootstrap, potenciado) es usar una tabla de diseño de ajuste. Los resultados comienzan con una tabla que incluye los puntos de diseño así como el R-cuadrado de validación y el RMSE de validación para cada punto de diseño. Necesito que esa tabla también muestre el R-cuadrado de entrenamiento, el RMSE de entrenamiento, el R-cuadrado de prueba y el RMSE de prueba. Cualquiera que pueda ayudar aquí, ¿tal vez con un guión?
Estas estadísticas, y más, se muestran debajo de la tabla para el modelo elegido, pero necesito estas estadísticas para todos los puntos de diseño. El método para mi locura es este: quiero poder producir un gráfico que muestre, digamos, tanto la validación R2 como el entrenamiento R2 contra la tasa de aprendizaje para mostrar la cantidad de sobreajuste que ocurre con el aumento de la tasa de aprendizaje.
Re: Tabla de ajuste para estimar modelos de partición: resultadosEstoy aprendiendo mucho sobre los entresijos del guión de JMP, Cameron. Una vez más, esto funciona bien. Gracias a ti de nuevo. Agradezco mucho su ayuda.
Re: Tabla de ajuste para estimar modelos de partición: resultadosParece que NumberBox no reconoce "<< Obtener".Consulte el índice de secuencias de comandos para NumberBox y verá todos los mensajes que reconocerá ese tipo de objeto.Uno de ellos es << Obtener texto; sin embargo, eso devolverá una cadena.Puede convertirlo en un número usando num().
num(report["Specifications"][NumberBox(1)] << Get Text);
Re: Tabla de ajuste para estimar modelos de partición: resultadosHola cameron:
Modifiqué su secuencia de comandos (¡gracias de nuevo!) pero estoy atascado en un último problema. Junto con los resultados RSq, RMSE, etc. de los árboles potenciados, ahora también me gustaría recuperar el número final de capas. Pensé que esto sería una modificación directa de su guión original. Consulte la línea 13 desde la parte inferior:
NL = report["Specifications"][NumberBox(1)] << Get;
Esto no está funcionando, aparentemente. ¿Sabe si hay algo diferente en la parte de "Especificaciones" del informe en comparación con las "Estadísticas generales"?
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: Tabla de ajuste para estimar modelos de partición: resultados¡Me alegro de poder ayudar!Re: Tabla de ajuste para estimar modelos de partición: resultadosTodo está funcionando muy bien ahora, Cameron. ¡No puedo decirte cuánto aprecio tu sabiduría!
Re: Tabla de ajuste para estimar modelos de partición: resultadosLa columna RMSE estará en numcolbox(2), por lo que podría tomarla en el script de la misma manera que toma R2.
Para obtener valores como ese de los informes, solo necesita averiguar dónde están en el árbol de visualización. Puedes ver cómo hacerlo aquí: https://www.jmp.com/support/help/14/view-the-display-tree.shtml
En mi secuencia de comandos, tengo un "informe" variable que contiene una referencia a la ventana del informe de la salida del árbol potenciado. Dentro del informe, el cuadro de esquema titulado "Estadísticas generales" contiene la tabla con los R2 y RMSE. Llego al elemento de visualización numcolbox con los valores R2 usando 'report["Overall Statistics"][numcolbox(1)]'Re: Tabla de ajuste para estimar modelos de partición: resultados¡Funcionó a las mil maravillas, Cameron! A riesgo de poner a prueba su paciencia, ¿cómo recuperaría los RMSE junto con los R2? O, de manera más general para mi educación, ¿cómo determino los nombres de las variables para R2, RMSE, etc. para poder llamarlos en el script?
Re: Tabla de ajuste para estimar modelos de partición: resultadosCambio de opinión.No es demasiado difícil hacer un guión.Aquí hay un ejemplo con árboles potenciados y los datos físicos del automóvil de la biblioteca de datos de muestra.Creé una tabla de afinación para probar esto, que adjunto.También puse una columna de validación en la tabla de datos físicos del automóvil.
Aquí está el guión:
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];
);Hice una pila de columnas R2 para la tabla de resultados para hacer el siguiente gráfico:
Esto debería ser bastante fácil de adaptar a las otras plataformas que mencionaste.
Re: Tabla de ajuste para estimar modelos de partición: resultadosCreo que tendría que escribir un script para eso, que efectivamente necesitaría reproducir los resultados de la funcionalidad integrada + tomar sus otras métricas deseadas para el conjunto de entrenamiento.Ciertamente factible, pero no estoy seguro de que valga la pena el esfuerzo.