Pregunta sobre el árbol de decisiones de la guía Programación de Inteligencia Colectiva
-
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í:
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
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 casosPremium
, cada0.75
ponderación; -
Basic
:0.5 * 1/4 = 0.125
#Basic
porque es ahora0.5
, y la división depages_not_larger_than_20
es decir1/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.