Tableau de réglage pour l'estimation des modèles de partition : résultatsUne option pour partitionner les modèles (arbre, bootstrap, boosté) consiste à utiliser une table de conception de réglage. Les résultats commencent par un tableau qui inclut les points de conception ainsi que le R-carré de validation et la RMSE de validation pour chaque point de conception. J'ai besoin que ce tableau montre également la formation R au carré, la formation RMSE, le test R au carré et le test RMSE. Quelqu'un peut-il aider ici - peut-être avec un script ?
Ces statistiques, et bien d'autres, sont présentées sous le tableau pour le modèle choisi, mais j'ai besoin de ces statistiques pour tous les points de conception. La méthode à ma folie est la suivante : je veux pouvoir produire un graphique montrant, par exemple, à la fois la validation R2 et la formation R2 par rapport au taux d'apprentissage pour montrer la quantité de surajustement qui se produit avec l'augmentation du taux d'apprentissage.
Re : Tableau de réglage pour l'estimation des modèles de partition : résultatsJ'apprends beaucoup sur les tenants et les aboutissants du script de JMP, Cameron. Encore une fois, cela fonctionne très bien. Merci encore à vous. J'apprécie beaucoup votre aide.
Re : Tableau de réglage pour l'estimation des modèles de partition : résultatsOn dirait que NumberBox ne reconnaît pas "<< Get".Vérifiez l'index de script pour NumberBox et vous verrez tous les messages que ce type d'objet reconnaîtra.L'un d'eux est << Get Text; cependant cela renverra une chaîne.Vous pouvez le convertir en nombre en utilisant num().
num(report["Specifications"][NumberBox(1)] << Get Text);
Re : Tableau de réglage pour l'estimation des modèles de partition : résultatsBonjour Cameron :
J'ai modifié votre script (merci encore !) mais je suis bloqué sur un dernier problème. En plus des résultats RSq, RMSE, etc. des arbres boostés, je voudrais maintenant également récupérer le nombre final de couches. Je pensais que ce serait une simple modification de votre script original. Veuillez consulter la ligne 13 à partir du bas :
NL = report["Specifications"][NumberBox(1)] << Get;
Cela ne fonctionne pas, apparemment. Savez-vous s'il y a quelque chose de différent dans la partie "Spécifications" du rapport par rapport aux "Statistiques globales" ?
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 : Tableau de réglage pour l'estimation des modèles de partition : résultatsHeureux d'avoir pu aider!Re : Tableau de réglage pour l'estimation des modèles de partition : résultatsTout va bien maintenant, Cameron. Je ne peux pas vous dire à quel point j'apprécie votre sagesse !
Re : Tableau de réglage pour l'estimation des modèles de partition : résultatsLa colonne RMSE sera dans numcolbox(2), vous pouvez donc la saisir dans le script de la même manière que vous saisissez R2.
Pour extraire de telles valeurs des rapports, il vous suffit de déterminer où elles se trouvent dans l'arborescence d'affichage. Vous pouvez voir comment faire ici : https://www.jmp.com/support/help/14/view-the-display-tree.shtml
Dans mon script, j'ai une variable "report" qui contient une référence à la fenêtre de rapport à partir de la sortie de l'arborescence boostée. Dans le rapport, la boîte de présentation intitulée "Statistiques globales" contient le tableau avec les R2 et les RMSE. J'arrive à l'élément d'affichage numcolbox avec les valeurs R2 en utilisant 'report["Overall Statistics"][numcolbox(1)]'Re : Tableau de réglage pour l'estimation des modèles de partition : résultatsA fonctionné comme un charme, Cameron! Au risque d'essayer votre patience, comment puis-je récupérer les RMSE avec les R2 ? Ou, plus généralement pour ma formation, comment déterminer les noms des variables pour R2, RMSE, etc. afin de pouvoir les appeler dans le script ?
Re : Tableau de réglage pour l'estimation des modèles de partition : résultatsJ'ai changé d'avis.Ce n'est pas trop difficile à scénariser.Voici un exemple avec des arbres boostés et les données physiques de la voiture de l'exemple de bibliothèque de données.J'ai créé une table de réglage pour cela à essayer, que je joins.J'ai également mis une colonne de validation dans la table Car Physical Data.
Voici le scénario :
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];
);J'ai fait une pile des colonnes R2 pour le tableau des résultats pour faire le graphique suivant :
Cela devrait être assez facile à adapter aux autres plates-formes que vous avez mentionnées.
Re : Tableau de réglage pour l'estimation des modèles de partition : résultatsJe pense que vous devriez écrire un script pour cela, qui aurait effectivement besoin de reproduire les résultats de la fonctionnalité intégrée + saisir vos autres métriques souhaitées pour l'ensemble de formation.Certainement faisable, mais je ne suis pas sûr que cela en vaille la peine.