Ejercicio: Aplicar el algoritmo ID3 para encontrar, a partir del conjunto de entrenamiento, un árbol de decisión que nos permita determinar la rapidez de un determinado insecto. Valores de distintas entropı́as: Ent([4, 3, 1]) = − 21 log2 1 2 − 3 8 log2 3 8 Ent([2, 1, 0]) = − 32 log2 2 3 − 1 3 log2 1 3 Ent([3, 2, 1]) = − 21 log2 1 2 − 1 3 log2 1 3 Ent([2, 1, 1]) = − 21 log2 1 2 − 1 2 log2 1 4 = 1.5 Ent([3, 1, 1]) = − 53 log2 3 5 − 2 5 log2 1 5 = 1.37 − 1 8 log2 1 8 = 1.41 = 0.92 − 1 6 log2 1 6 = 1.46 D = {E1 , E2 , E4 , E5 , E6 , E7 , E9 , E10 } A = {Color, Alas, Tama~ no, Lepisto} ID3(D, Rapidez, A) No todos los ejemplos toman el mismo valor para Rapidez y A no está vacı́o. El atributo con mayor ganancia de información es Color. Creamos un árbol con nodo etiquetado Color. Para cada uno de los valores de Color: negro: Creamos un arco con negro como etiqueta. D = {E1 , E5 , E9 } no está vacı́o, entonces colocamos debajo del arco creado el subárbol ID3(D, Rapidez, {Alas, Tamaño, Lepisto}) No todos los ejemplos toman el mismo valor para Rapidez y A no está vacı́o. El atributo con mayor ganancia de información es Alas. Creamos un árbol con nodo etiquetado Alas. Para cada uno de los valores de Alas: si: Creamos un arco con si como etiqueta. D = {E1 , E9 } no está vacı́o, entonces colocamos debajo del arco creado el subárbol ID3(D, Rapidez, {Tamaño, Lepisto}) No todos los ejemplos toman el mismo valor para Rapidez y A no está vacı́o. El atributo con mayor ganancia de información es Lepisto. Creamos un árbol con nodo etiquetado Lepisto. Para cada uno de los valores de Lepisto: si: Creamos un arco con si como etiqueta. D = {E1 } no está vacı́o, entonces colocamos debajo del arco creado el subárbol ID3(D, Rapidez, {Tamaño}) 1 Todos los ejemplos toman el mismo valor para Rapidez, creamos un nodo etiquetado con alta. no: Creamos un arco con no como etiqueta. D = {E9 } no está vacı́o, entonces colocamos debajo del arco creado el subárbol ID3(D, Rapidez, {Tamaño}) Todos los ejemplos toman el mismo valor para Rapidez, creamos un nodo etiquetado con media. no: Creamos un arco con no como etiqueta. D = {E5 } no está vacı́o, entonces colocamos debajo del arco creado el subárbol ID3(D, Rapidez, {Tamaño, Lepisto}) Todos los ejemplos toman el mismo valor para Rapidez, creamos un nodo etiquetado con alta. amarillo: Creamos un arco con amarillo como etiqueta. D = {E 2 , E10 } no está vacı́o, entonces colocamos debajo del arco creado el subárbol ID3(D, Rapidez, {Alas, Tamaño, Lepisto}) Todos los ejemplos toman el mismo valor para Rapidez, creamos un nodo etiquetado con media. blanco: Creamos un arco con blanco como etiqueta. D = {E 4 } no está vacı́o, entonces colocamos debajo del arco creado el subárbol ID3(D, Rapidez, {Alas, Tamaño, Lepisto}) Todos los ejemplos toman el mismo valor para Rapidez, creamos un nodo etiquetado con alta. rojo: Creamos un arco con rojo como etiqueta. D = {E6 , E7 } no está vacı́o, entonces colocamos debajo del arco creado el subárbol ID3(D, Rapidez, {Alas, Tamaño, Lepisto}) No todos los ejemplos toman el mismo valor para Rapidez y A no está vacı́o. El atributo con mayor ganancia de información es Lepisto. Creamos un árbol con nodo etiquetado Lepisto. Para cada uno de los valores de Lepisto: si: Creamos un arco con si como etiqueta. D = {E6 } no está vacı́o, entonces colocamos debajo del arco creado el subárbol ID3(D, Rapidez, {Alas, Tamaño}) Todos los ejemplos toman el mismo valor para Rapidez, creamos un nodo etiquetado con alta. no: Creamos un arco con no como etiqueta. D = {E7 } no está vacı́o, entonces colocamos debajo del arco creado el subárbol ID3(D, Rapidez, {Alas, Tamaño}) Todos los ejemplos toman el mismo valor para Rapidez, creamos un nodo etiquetado con baja. 2 Valores de las distintas ganancias: D = {E1 , E2 , E4 , E5 , E6 , E7 , E9 , E10 } Ent(D)=Ent([4, 3, 1]) = 1.41 Ent(Dnegro)=Ent([2, 1, 0]) = 0.92 Ent(Dblanco)=Ent([1, 0, 0]) = 0 Ent(Damarillo)=Ent([0, 2, 0]) = 0 Ent(Drojo)=Ent([1, 0, 1]) = 1 Ganancia(D, Color)= 1.41 − 38 0.92 − Ent(Da/si)=Ent([3, 2, 1]) = 1.46 1 4 = 0.81 Ent(Da/no)=Ent([1, 1, 0]) = 1 Ganancia(D, Alas)= 1.41 − 34 1.46 − Ent(Dpeq.)=Ent([2, 1, 1]) = 1.5 Ent(Dgrande)=Ent([0, 2, 0]) = 0 1 4 = 0.06 Ent(Dmedio)=Ent([2, 0, 0]) = 0 Ganancia(D, Tama~ no)= 1.41 − 12 1.5 = 0.66 Ent(Dl/si)=Ent([3, 0, 0]) = 0 Ent(Dl/no)=Ent([1, 3, 1]) = 1.37 Ganancia(D, Lepisto)= 1.41 − 85 1.37 = 0.55 D = {E1 , E5 , E9 } Ent(D)= 0.92 Ent(Da/si)=Ent([1, 1, 0]) = 1 Ganancia(D, Alas)= 0.92 − 2 3 Ent(Da/no)=Ent([1, 0, 0]) = 0 = 0.25 Ent(Dpeq.)=Ent([1, 1, 0]) = 1 Ent(Dgrande)=Ent([0, 0, 0]) = 0 Ganancia(D, Tama~ no)= 0.92 − Ent(Dmedio)=Ent([1, 0, 0]) = 0 2 3 Ent(Dl/si)=Ent([1, 0, 0]) = 0 Ganancia(D, Lepisto)= 0.92 − = 0.25 Ent(Dl/no)=Ent([1, 1, 0]) = 1 2 3 = 0.25 D = {E1 , E9 } Ent(D)= 1 3 Ent(Dpeq.)=Ent([1, 1, 0]) = 1 Ent(Dgrande)=Ent([0, 0, 0]) = 0 Ent(Dmedio)=Ent([0, 0, 0]) = 0 Ganancia(D, Tama~ no)= 1 − 1 = 0 Ent(Dl/si)=Ent([1, 0, 0]) = 0 Ent(Dl/no)=Ent([0, 1, 0]) = 0 Ganancia(D, Lepisto) = 1 D = {E6 , E7 } Ent(D)= 1 Ent(Da/si)=Ent([1, 0, 1]) = 1 Ent(Da/no)=Ent([0, 0, 0]) = 0 Ganancia(D, Alas)= 1 − 1 = 0 Ent(Dpeq.)=Ent([1, 0, 1]) = 1 Ent(Dgrande)=Ent([0, 0, 0]) = 0 Ent(Dmedio)=Ent([0, 0, 0]) = 0 Ganancia(D, Tama~ no)= 1 − 1 = 0 Ent(Dl/si)=Ent([1, 0, 0]) = 0 Ent(Dl/no)=Ent([0, 0, 1]) = 0 Ganancia(D, Lepisto) = 1 4