En este caso la probabilidad se obtiene a partir de frecuencias, Se calcula el número de veces que se da cada valor para cada clase.
El clasificador de texto clasificará a los documentos (de noticias) en dos clases: Deporte y No Deporte.Para el entrenamiento se ha utilizado tres documentos que pertenecen al rubro de noticias deportivas y un documento que pertenece a las noticias de música
Ingresando Documentos de Noticias Deportivas:
sábado, 23 de agosto de 2008
Naive Bayes: "Clasificador de Texto"
Publicado por Eliana Linares y Carmen Noriega en 16:33 2 comentarios
Adaline: “Convertir un número binario a decimal”.
En la implementación se ha considerado realizar un programa generalizado, de manera que se pueda aplicar a diferentes casos, para esto las entradas son patrones, que contienen un vector característico y un valor deseado de salida, el factor de aprendizaje y el valor mínimo de error.
Como criterio de parada se considero que el error de época sea menor que un valor determinado (0.1).
En la fase de entrenamiento se consideró los siguientes patrones
1 0 0 1 1
1 0 1 0 2
1 0 1 1 3
1 1 0 1 5
Factor de aprendizaje = 0.3
Valor de error mínimo = 0.1
Se probó con estos datos el programa y el aprendizaje nos dio como resultados lo siguiente:
Número de Iteraciones = 49
w = 0.6350 3.7432 1.6340 0.5798
Ahora para probar que el aprendizaje fue correcto se probó con las siguientes nuevas entradas:
>> convertidor(w,[1,1,1,1])
rpta = 7
>> convertidor(w,[1,1,0,0])
rpta = 4
>> convertidor(w,[1,1,1,0])
rpta = 6
Como podemos notar los resultados son los deseados y por lo tanto queda demostrado que el aprendizaje fue correcto.
Notas:
El factor de aprendizaje mas adecuado que se encontró es el 0.3 porque por ejemplo si probamos con el factor 0.5 el aprendizaje no es tan bueno, como podemos notar a continuación:
Número de Iteraciones = 45
w = 0.1335 4.3759 1.8665 0.7593
>>convertidor(w,[1,1,0,1])
rpta sin redondeo=5.2687
rpta = 5
>> convertidor(w,[1,1,0,0])
rpta sin redondeo=4.5094
rpta = 5
Como se puede notar el resultado de la segunda conversión no es correcta, por tanto el factor
de aprendizaje 0.5 no es el adecuado.
Si el factor de aprendizaje es 0.1 se tiene lo siguiente:
Número de Iteraciones = 265
w = 0.2678 4.2013 1.8016 0.8055
>> convertidor(w,[1,1,0,0])
rpta = 4
>> convertidor(w,[1,1,0,1])
rpta = 5
>> convertidor(w,[1,1,1,1])
rpta = 7
>> convertidor(w,[1,1,1,0])
rpta = 6
>> convertidor(w,[1,0,1,1])
rpta = 3
>> convertidor(w,[1,0,1,0])
rpta = 2
>> convertidor(w,[1,0,0,1])
rpta = 1
>> convertidor(w,[1,0,0,0])
rpta = 0
Como podemos notar el aprendizaje es correcto pero el número de iteraciones son muchas.
Publicado por Eliana Linares y Carmen Noriega en 14:17 6 comentarios
Perceptrón Primal
El ejemplo mostrado esta aplicado a la funcion AND
patrones de entrada:
bias x1 x2 vEsperado
1 1 1 1
1 1 -1 -1
1 -1 1 -1
1 -1 -1 -1
Publicado por Eliana Linares y Carmen Noriega en 10:27 0 comentarios
Perceptrón Simple de Rosemblant
Los patrones de entrada fueron para clasificar las nueces, según el cuadro siguiente:
Nuez Tipo A-1 Tipo A-2 Tipo A-3 Tipo A-4 Tipo A-5 Tipo A-6
Largo 2.2 1.5 0.6 2.3 1.3 0.3
Peso 1.4 1.0 0.5 2.0 1.5 1.0
Entrenada con los siguientes vectores de entrada:
(1, 2.2, 1.4)
(1, 1.5, 1.0) Asociar 1 a la clase A
(1, 0.6, 0.5)
(1, 2.3, 2.0)
(1, 1.3, 1.5) Asociar -1 a la clase B
(1, 0.3, 1.0)
Publicado por Eliana Linares y Carmen Noriega en 9:45 0 comentarios
viernes, 22 de agosto de 2008
Inferencia Por Eliminación De Variables En Redes Bayesianas
Los valores de las probabilidades consideradas son las siguientes:
Visito Asia(V) -- 0.1
Fuma(F) -- 0.7
Tuberculosis(T)
V P(T|V)
T 0.7
F 0.1
Cancer al Pulmón(C)
F P(C|F)
T 0.9
F 0.5
Bronquitis(B)
F P(B|F)
T 0.6
F 0.3
Respiración anormal(R)
T C P(R|T,C)
T T 0.9
T F 0.7
F T 0.5
F F 0.3
Resultados R-X(X)
R P(X|R)
T 0.6
F 0.8
Disnea(D)
R B P(D|R,B)
T T 0.9
T F 0.8
F T 0.7
F F 0.5
Publicado por Eliana Linares y Carmen Noriega en 20:58 0 comentarios
jueves, 17 de julio de 2008
Inferencia Utilizando Distribución Conjunta Completa
- Factor Respiratorio (FR), esta variable puede tomar tres valores {>40, >50, >60}.
- Edad, esta variable puede tomar 2 valores {2-11 meses, 1-4años}
- Disnea (D), esta variable es de tipo booleana {true, false}
- Estertores Crepitantes (EC), esta variable es de tipo booleana {true, false}
- Murmullo Vesicular(MV), esta variable es de tipo booleana {true, false}
- Tos (T), esta variable es de tipo booleana {true, false}
- Sibilancia (S), esta variable es de tipo booleana {true, false}
- Cianosis (C), esta variable es de tipo booleana {true, false}
Todas estas variables las hemos obtenido de un Estudio sobre signos y síntomas indicadores de neumonía en la infancia y su utilización en programas de control de infecciones respiratoriasagudas (IRA), el cual lo pueden encontrar aquí. Con este estudio pudimos también obtener la tabla de distribución conjunta completa, la cual se muestra a continuación(por cuestiones de espacio ha quedado dividida en tres partes):
La implementación se realizó de dos formas:
- En la primera forma se decidió considerar la siguiente estructura:
Estructura{ FR de tipo Byte
D de tipo boolean
T de tipo boolean
EC de tipo boolean
MV de tipo boolean
S de tipo Boolean
C de tipo boolean
Edad de tipo string
Valor de tipo double}
A partir de esta estructura se crea una matriz, de manera que cada una de las celdas de la tabla, de distribución conjunta completa, tiene la forma de dicha estructura.
Esta forma de trabajar trajo varios problemas pues para calcular un tipo de probabilidad como por ejemplo: P (FR ^ D), la codificación es tediosa, es decir se tenia que redundar demasiado en el código (no permitía simplificar el proceso).
De todas maneras se logro implementar las probabilidades, pero con demasiadas líneas de código. - En la segunda forma ya no se ha considerado una estructura como en el primer caso, sino más bien una matriz de n x 17, donde ‘n’ es el número de celdas que existe en la tabla de distribución conjunta completa.
Así por ejemplo para la primera celda la fila uno de la matriz será:
Como podemos ver cada fila de la matriz es una codificación en binario, en donde el valor es 1 si la variable ocurre, sino es 0.
Realizando este tipo de implementación se pudo simplificar todo el trabajo hecho en la primera forma, pues ya se sabía explícitamente que por ejemplo a FR>40 le corresponde el número 12, y por tanto para calcular su probabilidad, lo que hacemos es mantener fija la columna 12 de la matriz y el resto variar.
Por tanto la mejor manera de implementar este problema es usando una codificación binaria para cada celda de la tabla de distribución conjunta completa.
Publicado por Eliana Linares y Carmen Noriega en 17:56 0 comentarios
lunes, 14 de julio de 2008
Problema de Satisfacción de Restricciones (PSR)
Para conocer un poco sobre PSR puedes ver las diapositivas del curso aquí
El problema de coloración de mapas ha sido simplificado a colorear un grafo, donde los nodos representan a los lugares del mapa y los arcos representan a las restricciones.
Inicialmente hemos usado un dominio de tres colores, lo que traía como consecuencia de que existan soluciones inconsistentes y por tanto el grafo no era coloreado. Debido a este problema se considero usar un dominio con cuatro colores, por la existencia del teorema de los cuatro colores, para el coloreado de grafos, el cual dice que todo grafo puede ser coloreado con a lo mas 4 colores.
Aplicando este cambio donde el dominio es ahora cuatro colores, entonces nuestro programa debe colorear cualquier grafo, es decir la solución siempre es consistente
A continuación se muestra algunas imagenes del programa.
Publicado por Eliana Linares y Carmen Noriega en 22:49 1 comentarios