4 votos

Combinación de dos o más modelos (SVC) en Python/scikit.learn

Tengo algunos datos en los que utilizo modelos SVC con validación cruzada de 10 pliegues y una búsqueda en la red de parámetros (scikit.learn). He observado que las predicciones de algunos pliegues tienen baja precisión, mientras que los pliegues restantes tienen mejor precisión. Con diferentes parámetros C y gamma de SVC, la predicción de los pliegues anteriormente bajos mejora, pero las precisiones de los otros pliegues son peores que antes. De esto deduzco, que si pudiera combinar de alguna manera estos dos o tres modelos con diferentes parámetros, en general obtendría mejores resultados. Por lo que sé, Python tiene clasificadores de conjunto, pero sólo permite un modelo de base, pero en mi caso habrá más de un modelo SVC que debe tener diferentes parámetros.

Mi pregunta es: ¿es posible combinar diferentes modelos SVC con diferentes parámetros en Python y/o scikit.learn? Si es así, ¿cómo puedo hacerlo?

4voto

Onur Yıldırım Puntos 5566

En primer lugar: sí, sus suposiciones de que la combinación de esos modelos podría ser beneficiosa son razonables (probablemente reducirá la varianza global). Considere también la posibilidad de combinar diferentes tipos de modelos si esto es posible en su configuración.

Habría diferentes opciones para hacerlo, como:

  • Promedio de modelos
  • Embolsado
  • Impulsar

Podría implementar fácilmente el promediado de modelos usted mismo, independientemente de cualquier marco que utilice para el entrenamiento de sus modelos (regresión: promediar la predicción de una nueva muestra a partir de todos los modelos obtenidos durante el entrenamiento; clasificación: derivar las probabilidades de clase a partir de la cantidad de clasificaciones para cada clase en su lugar).

El ensacado es esencialmente lo mismo, pero utiliza subconjuntos de datos de entrenamiento (=no todas las muestras) para entrenar cada modelo, lo que hace que todos los modelos sean diferentes. Una vez más, podría hacerlo usted mismo. Después de entrenar los modelos, el proceso de predicción es el mismo que para el promedio de modelos.

Solo que para el boosting probablemente necesites usar un framework en su lugar, ya que es un poco más complicado - así que ahí tendrías que mirar los detalles del API de scikit.learn si permite combinar diferentes modelos con diferentes hiperparámetros.

Una cosa más: ten en cuenta que al hacer algo así después de evaluación del modelo, es probable que siga sobreajustando su problema. Debería pensar en incorporar la parametrización de su conjunto (número de modelos, etc.) en su rutina de evaluación.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X