Re: Attribuer une catégorie à une ligne en maintenant la probabilité totale fixéeJe voudrais essayer cette formule.
p = Random Uniform();
If( p <= 0.5, 0, p <= 0.8, 1, 2 );
J'ai utilisé 50% de formation, 30% de validation et 20% de test.
Re: Attribuer une catégorie à une ligne en maintenant la probabilité totale fixéesalut @markbailey ,
Merci pour la suggestion. Cela fonctionne, mais je l’ai légèrement modifié car je ne veux pas avoir un ratio train, validation et test fixe, mais plutôt modifier cette simulation à chaque bootstrap pour voir s’il existe un ratio train / validation / test optimal, car les sélections dans une colonne de validation peuvent avoir un impact sur l'ajustement du modèle, peut-être qu'un simple fractionnement 0,6, 0,2, 0,2 n'est pas optimal. Peut-être que cela devrait être 0.72, 0.15, 0.13 par exemple.
p = Random Uniform();
If( p <= Random Uniform(x1,x2), 0,<BR /> p <= Random Uniform(X3,x4), 1,<BR /> p <= Random Uniform(x5,x6), 2 );
Le fait d’ajuster x1, x2, x3, x4, x5 et x6 peut donner lieu à une gamme de ratios différents du train / valider / tester dans la colonne de formule.
Merci!,
DS
Re: Attribuer une catégorie à une ligne en maintenant la probabilité totale fixéeVous ne devez utiliser qu'une seule variable aléatoire à la fois. Il n'est pas nécessaire d'appeler Random Uniform () plusieurs fois, avant d'appeler la fonction If (). Utilisez vos variables pour les expressions booléennes.
p = Random Uniform();
If( p <= x1, 0, p <= x2, 1, 2 );
Attribuer une catégorie à une ligne en maintenant la probabilité totale fixéeChère communauté JMP,
(WE10, 64 bits, JMP Pro 4.1.0)
J'essaie de générer une formule de colonne qui effectue une action similaire à "créer une colonne de validation" en affectant 0, 1 ou 2 à la ligne. J'essaie d'utiliser la fonction de catégorie aléatoire comme moyen de le faire et cela fonctionne, mais pas comme je le veux. Il attribue 0, 1 ou 2 aux lignes, mais lorsque vous additionnez la fréquence de chaque catégorie, vous obtenez une valeur supérieure à 1, ce que je ne souhaite pas.
Dans "Créer une colonne de validation", vous pouvez affecter un certain pourcentage de votre table de données sous la forme "train", "valider" ou "tester" (0, 1, 2), et la somme de ces fractions s'ajoute toujours à 1. Je souhaite effectuer cette opération avec une fonction, telle que Random Category, afin que la fraction des "0", des "1" et des "2" totalisent 1. Par souci de simplicité, je souhaite conserver le nombre de "1" égal au nombre de "2", c’est-à-dire que le nombre de données de validation et de test est égal et que la somme des totaux est égale à 1 -.
Le but de tout cela est que j'aimerais tester un modèle en modifiant le nombre de trains, valider et tester les ensembles de données afin de minimiser le RMSE. Pour ce faire, il suffit de cliquer avec le bouton droit de la souris sur la statistique d’intérêt, puis de sélectionner "Simuler" pour initialiser et réexécuter le modèle afin d’évaluer l’évolution de la statistique. MAIS, vous devez avoir une fonction pour échanger le nombre de lignes dans chacun des ensembles de données de validation.
Chaque fois qu'il lance une simulation, il "génère" une nouvelle colonne de validation, mais avec un rapport différent de lignes "train", "validate", "test". La sortie pourrait alors être utilisée pour trouver le rapport optimal entre les trois afin d’avoir un modèle plus performant.
Toute pensée / réaction à ce sujet est grandement appréciée.
Merci!,
DS
Re: Attribuer une catégorie à une ligne en maintenant la probabilité totale fixéeLe schéma est solide. Cela fonctionne mieux avec des échantillons plus grands, cependant. Voici une meilleure version peut-être. (Je n'utilise généralement pas de formules.)
Names Default to Here( 1 );
n = 500;
dt = New Table( "Again and Again",
Add Rows( n ),
New Column( "Y", "Numeric", "Continuous", Values( J( n, 1, Random Normal() ) ) ),
New Column( "X1", "Numeric", "Continuous", Values( J( n, 1, Random Normal() ) ) ),
New Column( "X2", "Numeric", "Continuous", Values( J( n, 1, Random Normal() ) ) ),
New Column( "Validation", "Numeric", "Nominal" )
);
training proportion = 0.6;
valid threshold = 1 - ((1 - training proportion) / 2);
:Validation << Set Values(
J( n, 1, p = Random Uniform(); If( p <= training proportion, 0, p <= valid threshold, 1, 2 ) );
);
Y a-t-il une raison pour laquelle vous retiendriez une proportion aussi importante de tests?
Re: Attribuer une catégorie à une ligne en maintenant la probabilité totale fixéesalut @markbailey ,
Si j'utilise la version modifiée, j'obtiens une gamme de ratios plus large que si j'utilise la forme condensée.
L’autre manière, je peux voir une gamme plus large pour le tester ensemble de formation (environ 65% à 78%) avec les autres distribués en conséquence - environ 50/50 validation / test. C’est vraiment ce que je cherche: changer le pourcentage de la tester apprentissage défini entre une valeur basse et une valeur haute puis divise le reste 50/50: validation / test.
Merci!,
DS
Re: Attribuer une catégorie à une ligne en maintenant la probabilité totale fixéeMerci encore pour vos suggestions! J'ai eu une faute de frappe dans ma réponse précédente et l'a édité. La plus grande partie devrait être pour l'ensemble de formation, pas pour l'ensemble de test.