¿Cuál es una buena distribución para usar para simular un conjunto de entrenamiento para la clasificación supervisada?

Diría que generar un conjunto de datos con una mezcla de normales multivariantes es un juego justo, pero como Olivier ha mencionado, esto puede generar un conjunto de datos que es linealmente separable. No creo que haya una elección “óptima” de modelo para los datos, ya que la máquina de vectores de soporte ni la red neuronal presuponen que los datos se generaron de acuerdo con un proceso probabilístico. Por lo tanto, no creo que elegir una distribución específica para dibujar las matrices de covarianza o si difieren significativamente de una clase a otra. Para superar la no seperabilidad, puede probar una mezcla de normales multivariantes en algún espacio y usar un núcleo (función de deformación) para deformar los datos. Si no recuerdo mal, hay algunos núcleos de uso común aquí: Aprendizaje de MOOC de datos, incluidas las funciones de base radial mencionadas anteriormente.

Aquí hay una función de utilidad para generar un conjunto de datos artificiales (de entrada) de n_características y n_muestras configurables donde puede controlar el perfil de correlación lineal entre las características: la mayor parte de la varianza se puede explicar por características equivalentes a `effect_rank`. También puede agregar una “cola gorda” de correlación que da forma al resto de la varianza:

https://github.com/scikit-learn/

Para resumir, este generador le permite controlar la forma de los valores singulares del conjunto de datos que se genera: un rango efectivo bajo significa características altamente correlacionadas.

Luego puede reutilizarlo para construir un conjunto de datos supervisado (en este caso para regresión lineal) eligiendo un modelo de verdad fundamental aleatorio con regresores n_informativos

https://github.com/scikit-learn/

Para construir un conjunto de datos de clasificación binaria supervisada, simplemente limite las matrices y_train e y_test a algún nivel arbitrario `a`.

y_train [y_train y_train [y_train> = a] = y_test [y_test> = a] = 1

Sin embargo, una nota: este conjunto de datos será linealmente separable. Para SVM con núcleos y redes neuronales multicapa, sería más interesante construir un modelo de verdad fundamental basado en vectores RBF gaussianos n_centros, por ejemplo, para introducir no linealidades. Para hacer esto aún más interesante, puede hacer que esos vectores base se encuentren en una variedad baja y tenue de un espacio de dimensión mucho más alta utilizando la Q de la matriz QR de la matriz aleatoria para proyectar aleatoriamente el espacio más alto sin romper las distancias por pares.