Re: Asignar categoría a fila manteniendo fija la probabilidad totalYo probaría esta fórmula.
p = Random Uniform();
If( p <= 0.5, 0, p <= 0.8, 1, 2 );
Usé 50% de entrenamiento, 30% de validación y 20% de pruebas.
Re: Asignar categoría a fila manteniendo fija la probabilidad totalHola @markbailey ,
Gracias por la sugerencia. Esto funciona, sin embargo, lo modifiqué un poco, ya que no quiero tener una relación fija de tren, validar y probar, sino modificar cada simulación de arranque para ver si hay una relación óptima de tren / validar / probar, ya que las selecciones en una columna de validación pueden tener un impacto en el ajuste del modelo, tal vez una simple división 0.6, 0.2, 0.2 no sea óptima. Tal vez debería ser 0.72, 0.15, 0.13 por ejemplo.
p = Random Uniform();
If( p <= Random Uniform(x1,x2), 0,<BR /> p <= Random Uniform(X3,x4), 1,<BR /> p <= Random Uniform(x5,x6), 2 );
El ajuste de x1, x2, x3, x4, x5 y x6 puede conducir a un rango de diferentes proporciones del tren / validar / probar en la columna de fórmula.
¡Gracias!,
DS
Re: Asignar categoría a fila manteniendo fija la probabilidad totalSolo debe usar una variable aleatoria a la vez. No es necesario llamar a Random Uniform () más de una vez, antes de llamar a la función If (). Usa tus variables para las expresiones booleanas.
p = Random Uniform();
If( p <= x1, 0, p <= x2, 1, 2 );
Asigne categoría a fila manteniendo la probabilidad total fijaEstimada comunidad de JMP:
(WE10, 64 bits, JMP Pro 4.1.0)
Estoy tratando de generar una fórmula de columna que realice una acción similar a "crear columna de validación" asignando 0, 1 o 2 a la fila. Estoy probando la función Categoría aleatoria como una forma de hacer esto, y funciona, pero no de la manera que quiero. Asigna 0, 1 o 2 a las filas, pero cuando sumas la frecuencia de cada categoría, obtienes un valor mayor que 1, que no quiero.
En "crear columna de validación", puede asignar un cierto porcentaje de su tabla de datos como "entrenar", "validar" o "probar" (0, 1, 2), y la suma de esas fracciones siempre se suma a 1. Quiero hacer esto con una función, como Categoría aleatoria, para que la fracción de "0", "1" y "2" sumen 1. Por simplicidad, quiero mantener el número de "1" igual al número de "2", es decir, el número de datos de validación y prueba son iguales y suman 1 - número de filas de datos de entrenamiento.
El propósito detrás de todo esto es que me gustaría probar el ajuste de un modelo cambiando la cantidad de conjuntos de datos de tren, validación y prueba para minimizar el RMSE. Esto se hace haciendo clic derecho en la estadística de interés y luego seleccionando "Simular", que hace bootstrapping y vuelve a ejecutar el modelo para evaluar cómo cambia la estadística. PERO, debe tener una función para intercambiar por el número de filas en cada uno de los conjuntos de datos de validación.
Cada vez que ejecuta una simulación, "generaría" una nueva columna de validación, pero con una proporción diferente de filas "entrenar", "validar", "probar". La salida podría usarse para encontrar la relación óptima de los tres para tener un modelo con mejor rendimiento.
Cualquier idea / comentario sobre esto es muy apreciada.
¡Gracias!,
DS
Re: Asignar categoría a fila manteniendo fija la probabilidad totalEl esquema es sólido. Sin embargo, funciona mejor con muestras más grandes. Aquí hay una versión mejor tal vez. (No suelo usar fórmulas).
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 ) );
);
¿Hay alguna razón por la que esperarías una proporción tan grande para las pruebas?
Re: Asignar categoría a fila manteniendo fija la probabilidad totalHola @markbailey ,
Si uso la versión modificada, obtengo un rango más amplio de proporciones que si uso la forma condensada.
Por otro lado, puedo ver un rango más amplio para prueba conjunto de entrenamiento (aproximadamente 65% -78%) con los otros distribuidos en consecuencia, aproximadamente 50/50 validación / prueba. Esto es realmente lo que busco: cambiar el porcentaje de prueba conjunto de entrenamiento entre un valor bajo y un valor superior y luego se divide el resto 50/50: validación / prueba.
¡Gracias!,
DS
Re: Asignar categoría a fila manteniendo fija la probabilidad total¡Gracias nuevamente por sus sugerencias! Tuve un error tipográfico en mi respuesta anterior y lo edité. La porción más grande debe ser para el conjunto de entrenamiento, no para el conjunto de prueba.