9 votos

Cómo son las clasificaciones combinadas en un conjunto clasificador?

¿Cómo un conjunto de clasificador de combinación de las predicciones de sus constituyentes, los clasificadores? Estoy teniendo dificultades para encontrar una descripción clara. En algunos de los ejemplos de código que he encontrado, el conjunto de los promedios de las predicciones, pero yo no veo cómo esto es posible podría hacer un "mejor" en general exactitud.

Considere el siguiente caso. Un conjunto clasificador se compone de 10 clasificadores. Un clasificador es tiene una precisión de 100% del tiempo en el subconjunto de datos X, y 0% todas las otras veces. Todos los demás clasificadores tienen una precisión de 0% en el subconjunto de datos X, y el 100% de todas las otras veces.

El uso de un promedio de fórmula, donde clasificador de precisión se omite, el conjunto clasificador tendría, a lo mejor, el 50% de exactitud. Es esto correcto, o me estoy perdiendo algo? ¿Cómo puede tomar el promedio de predicción a partir del N potencialmente ni idea de clasificadores, posiblemente, crear una mejor predicción de un único clasificador que es un experto en un dominio específico?

5voto

ESRogs Puntos 1381

Le falta el hecho de que las "malas" clasificador no tiene 0% de precisión, sino que no es significativamente mejor que una estimación aleatoria.

De esta manera buenas predicciones son siempre los mismos y se acumulan (ya que la verdad es solo una), mientras que las malas predicciones son el ruido aleatorio que el promedio.

5voto

James Puntos 1294

He leído un claro ejemplo de Introducción a la Minería de Datos por Tan et al.

El ejemplo afirma que si se combina su clasificadores con un sistema de votación, que es clasificar a un registro con el más votado de la clase, se puede obtener un mejor rendimiento. Sin embargo, en este ejemplo se utiliza directamente la salida de la etiqueta de los clasificadores, y no las predicciones (creo que significaba probabilidades).

Vamos a tener 25 independientes de los clasificadores que han generalización de error $e = 1 - \mbox{accuracy} = 0.35$. Con el fin de clasificar erróneamente a un registro de al menos la mitad de ellos tienen que clasificar erróneamente.

Todo puede ser modelado con variables aleatorias, pero se tiene que calcular la probabilidad de que al menos 13 de ellos clasificar erróneamente el registro $$\sum_{i=13}^{25}\binom{25}{i}e^i(1-e)^{(25-i)} = 0.06$$ donde cada término de la suma significa que $i$ clasificador obtener la clase de registro correctamente y $25-i$ se equivocan.

Utilizando directamente las predicciones y utilizando como un método de combinación de un promedio, creo que podría ser un poco más difícil para mostrar la mejora en el conjunto de desempeño. Sin embargo, al centrarse sólo en las predicciones y sin cuidado en la salida de la etiqueta del conjunto, un promedio de más predicciones puede ser visto como un estimador de la probabilidad real. Por lo tanto, la adición de los clasificadores deben mejorar las predicciones de la del conjunto de la técnica.

0voto

gar Puntos 36

En el caso de la clasificación general, hay dos maneras de conjunto de la predicción. Digamos que es un binario clase de problema de clasificación y tienes 3 modelos para el conjunto llamado m1,m2 y m3, y el conjunto de datos de entrenamiento se llama tren y el conjunto de datos de prueba se llama prueba.Los modelos están ya en el tren.A continuación, un código de python será de la siguiente manera.

Primer método consiste en tomar una ronda de la media

pred=round([m1.predict(test)+m2.predict(test)+m3.predict(test)]/3) 

Por lo que el resultado será un vector de valor 0 y 1

Segundo método es el conjunto de predicción de la probabilidad de cada clase a partir de estos modelos y de conjunto, que y, a continuación, decidir la clase, ya sea sobre la base de un umbral o un poco de lógica.

pred_proba=[m1.predict(test).predict_proba++ m2.predict(test).predict_proba 
+m3.predict(test).predict_proba]/3 
# Simple average ensemble,however you can try weighted average as well

iterar a través de toda la pred_proba vector para encontrar que uno en 0 y 1 es 1 y se basa en duro umbral de 0.5

pred=[] # Initialize a blank list for prediction

for x in pred_proba:
 if x>0.5:
   pred.append[1]
 else:
   pred.append[0]

Así pred es el último conjunto de predicció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