Pregunta sobre el árbol de decisiones de la guía Programación de Inteligencia Colectiva

datascience.stackexchange https://datascience.stackexchange.com/questions/5606

  •  16-10-2019
  •  | 
  •  

Pregunta

estoy estudiando el capítulo 7 ( "Modelado con árboles de decisión") del libro "Programación de la inteligencia colectiva".

Me encontrar la salida de la función p.157 mdclassify() confuso. La función se ocupa de los datos que faltan. La explicación proporcionada es:

En el árbol de decisión básica, todo tiene un peso implícita de 1, lo que significa que las observaciones cuentan por completo la probabilidad de que una ataques artículo en una determinada categoría. Si usted está siguiendo múltiples ramas lugar, se puede dar a cada rama de un peso igual a la fracción de todas las otras filas que están en ese lado.

Por lo que entiendo, una instancia se divide entonces entre las ramas.

Por lo tanto, simplemente no entiendo cómo podemos obtener:

{'None': 0.125, 'Premium': 2.25, 'Basic': 0.125}

como 0.125+0.125+2.25 no suma a 1 ni siquiera un entero. ¿Cómo fue la nueva división de observación?

El código está aquí:

https://github.com /arthur-e/Programming-Collective-Intelligence/blob/master/chapter7/treepredict.py

Uso de la base de datos original, obtengo el árbol que se muestra aquí:

pantalla

Puede alguien por favor me explique precisamente lo que los números de precisión media y la forma en que se obtuvieron exactamente?

PS:. El primero ejemplo del libro es incorrecto como se describe en su página de erratas pero sólo para explicar el segundo ejemplo (mencionado anteriormente) sería bueno

¿Fue útil?

Solución

Hay cuatro características:

  • árbitro,
  • ubicación,
  • Preguntas,
  • páginas.

En su caso, que está tratando de clasificar un caso en el que no se conocen y FAQ pages:. mdclassify(['google','France',None,None], tree)

Desde el primer atributo es conocida google, en su árbol de decisión sólo está interesado en el borde que sale de nodo google en el lado derecho.

Hay cinco casos:. Tres Premium etiquetados, uno Basic marcado y uno None marcado

Las instancias con etiquetas Basic y dividir None en el atributo FAQ. Hay dos de ellos, por lo que el peso de ambos es 0.5.

Ahora, nos separamos en el atributo pages. Hay 3 instancias con valor pages mayor que 20, y dos con valor pages no mayor que 20.

Aquí está el truco: ya sabemos que los pesos para dos de ellos fueron alterados de 1 a 0.5 cada uno. Por lo tanto, ahora tenemos tres casos ponderada 1 cada uno, y 2 casos cada uno 0.5 ponderados. Por lo que el valor total es 4.

Ahora, podemos contar con los pesos del atributo pages:

  • pages_larger_than_20 = 3/4
  • pages_not_larger_than_20 = 1/4 # el 1 es: 0,5 + 0,5

Todos los pesos se atribuyen. Ahora podemos multiplicar los pesos por los "frecuencias" de instancias (recordando que para Basic y None la "frecuencia" ahora se 0.5):

  • Premium: 3 * 3/4 = 2.25 # porque hay tres casos Premium, cada 0.75 ponderación;
  • Basic: 0.5 * 1/4 = 0.125 # Basic porque es ahora 0.5, y la división de pages_not_larger_than_20 es decir 1/4
  • None: 0.5 * 1/4 = 0.125 # análoga

Eso es al menos cuando vienen los números. Comparto sus dudas sobre el valor máximo de esta métrica, y si debe sumar 1, pero ahora que ya sabe dónde vienen estos números se puede pensar en la forma de normalizar ellos.

Licenciado bajo: CC-BY-SA con atribución
scroll top