Un problema que ocurre con bastante frecuencia en mis experimentos es que el modelo varía en rendimiento cuando se cambia el estado aleatorio del algoritmo. Entonces la pregunta es simple, ¿debería tomar el estado aleatorio como un hiperparámetro? ¿Porqué es eso? Si mi modelo supera a otros con un estado aleatorio diferente, ¿debería considerar que el modelo se ajusta demasiado a un estado aleatorio particular?
un registro del árbol de decisión en sklearn: (random_rate debería ser un estado aleatorio)
machine-learning
scikit-learn
PeterLai
fuente
fuente
Respuestas:
No, no deberías.
Los hiperparámetros son variables que controlan algunos aspectos de alto nivel del comportamiento de un algoritmo. A diferencia de los parámetros regulares, el algoritmo mismo no puede aprender automáticamente los hiperparámetros de los datos de entrenamiento. Por esta razón, un usuario experimentado seleccionará un valor apropiado basado en su intuición, conocimiento de dominio y el significado semántico del hiperparámetro (si lo hay). Alternativamente, uno podría usar un conjunto de validación para realizar la selección de hiperparámetros. Aquí, tratamos de encontrar un valor óptimo de hiperparámetro para toda la población de datos probando diferentes valores candidatos en una muestra de la población (el conjunto de validación).
Con respecto al estado aleatorio, se utiliza en muchos algoritmos aleatorios en sklearn para determinar la semilla aleatoria que se pasa al generador de números pseudoaleatorios. Por lo tanto, no gobierna ningún aspecto del comportamiento del algoritmo. Como consecuencia, los valores de estado aleatorio que funcionaron bien en el conjunto de validación no corresponden a los que funcionarían bien en un nuevo conjunto de prueba invisible. De hecho, dependiendo del algoritmo, puede ver resultados completamente diferentes simplemente cambiando el orden de las muestras de entrenamiento.
Le sugiero que seleccione un valor de estado aleatorio al azar y lo use para todos sus experimentos. Alternativamente, podría tomar la precisión promedio de sus modelos sobre un conjunto aleatorio de estados aleatorios.
En cualquier caso, no intente optimizar estados aleatorios, esto seguramente producirá medidas de rendimiento sesgadas de manera optimista.
fuente
¿Qué hace el efecto random_state? formación y validación de la división de conjuntos, ¿o qué?
Si es el primer caso, creo que puede intentar encontrar diferencias entre el esquema de división en dos estados aleatorios, y esto podría darle cierta intuición en su modelo (quiero decir, puede explorar por qué funciona entrenar el modelo en algunos datos, y usa el modelo entrenado para predecir algunos datos de validación, pero no funciona para entrenar el modelo en otros datos y predecir algunos otros datos de validación. ¿Se distribuyen de manera diferente?) Tal análisis puede darle cierta intuición.
Y, por cierto, también encontré este problema :), y simplemente no lo entiendo. Tal vez podamos trabajar juntos para investigarlo.
Salud.
fuente