Técnicas de Minería de Datos
Técnicas de Agrupamiento
Arboles de decisión
Clasificador Naive Bayes
Reglas de clasificación y de asociación
Características
Redes Neuronales
Manejan imprecisiones
Toleran fallas en la información.
Se adaptan a la información del entorno.
Redes Neuronales
Las Redes Neuronales Artificiales o simplemente Redes
Neuronales, buscan emular el comportamiento del cerebro
humano
El cerebro humano
Procesa información imprecisa rápidamente.
Aprende sin instrucciones explícitas.
Crea representaciones internas que permiten estas habilidades
Redes Neuronales
Características
Procesamiento de la información proveniente del entorno en tiempo
real.
Robustez y tolerancia a fallas.
Capacidad de adaptación.
Manejo de información difusa, con ruido e inconsistente.
Procesamiento paralelo.
Tipos de problemas que las RN pueden resolver
Predicción
Trabaja como una función de mapeo.
Puede utilizarse para estimación o clasificación (salida continua o
discreta).
Segmentación
Agrupa (clustering) los datos de entrada.
Estos grupos pueden utilizarse para caracterizar o para describir la
información disponible.
Ejemplos de problemas que las RN pueden resolver
Predicción
Predecir si un alumno va a aprobar la materia o no
Dado un paciente nuevo determinar la probabilidad de que tenga
cierta enfermedad.
Segmentación
Hallar perfiles de clientes para potenciar una campaña publicitaria.
Hallar las características comunes de los alumnos recursantes
(modelo descriptivo).
Temas a desarrollar
Neurona artificial
Similitudes con una neurona biológica.
Funcionamiento
Red Neuronal feedforward
Perceptrón
Backpropagation
Similitudes entre una neurona biológica y una artificial
Las entradas Xi representan las señales que provienen
de otras neuronas y que son capturadas por las
dendritas 7
Similitudes entre una neurona biológica y una artificial
Los pesos Wi son la intensidad de la sinapsis que
conecta dos neuronas; tanto Xi como Wi son valores
reales. 8
Similitudes entre una neurona biológica y una artificial
es el umbral que la neurona debe sobrepasar para
activarse; este proceso ocurre biológicamente en el
cuerpo de la célula. 9
Neurona Artificial
Las señales de entrada a una neurona artificial X1, X2,.., Xn
son variables continuas en lugar de pulsos discretos, como
se presentan en una neurona biológica.
10
Neurona Artificial
Cada señal de entrada pasa a través de una ganancia o peso, llamado
peso sináptico o fortaleza de la conexión cuya función es análoga a la
de la función sináptica de la neurona biológica. Los pesos pueden ser
positivos (excitatorios), o negativos (inhibitorios).
11
Neurona Artificial
El nodo sumatorio acumula todas las señales de entrada
multiplicadas o ponderadas por los pesos y las pasa a la
salida a través de una función umbral o función de
transferencia.
12
Neurona Artificial
La entrada neta a cada unidad puede escribirse de la
siguiente manera: n
netaj xi wi X .W
i 1 13
Neurona Artificial
Cada entrada es multiplicada por
el peso de arco correspondiente. 14
Neurona Artificial
Cada neurona calcula su entrada
neta como: n
netaj xi wi
i 1 15
Neurona Artificial
El valor de salida (único) se
obtiene como
y f (neta) 16
Funciones de Transferencia
Función umbral binaria
Esta función crea neuronas que clasifican las
entradas en dos categorías diferentes.
17
Funciones de Transferencia
Función umbral bipolar
Esta función crea neuronas que clasifican las
entradas en dos categorías diferentes.
18
Funciones de Transferencia
Función lineal
A diferencia de las anteriores, esta
función no es acotada.
19
Funciones de Transferencia
Función sigmoide
Es acotada y derivable
20
Red neuronal feedforward
Las neuronas de una misma capa tienen el mismo
comportamiento
Ejemplo
Se desean entrenar una red neuronal para que reconozca
caracteres escritos a mano
Ejemplo: Reconocimiento de caracteres escritos a mano
Ejemplo: Reconocimiento de caracteres escritos a mano
Caracteres correctamente reconocidos
Caracteres NO reconocidos
Redes Neuronales Feedforward
Veremos las siguientes arquitecturas
Perceptrón
Es una RN formada por una única neurona.
Sirve para hacer separación lineal de clases
Multiperceptrón
Tiene una estructura organizada en capas.
Utiliza el método BackPropagation como estrategia de entrenamiento.
Puede usarse para predicción y para clasificación.
Perceptrón
Es una red neuronal formada por una única neurona.
Representa una única función discriminante que
separa linealmente los ejemplos en dos clases.
Función
discriminante
Perceptrón
1 si neta
y
0 si neta
𝑛𝑒𝑡𝑎 = 𝑥𝑖 𝑤𝑖
𝑖
27
Ejemplo
Verifique si la siguiente red neuronal se comporta como la
función lógica AND
28
AND
Función discriminante
x1w1 x2 w2
𝑤1 = 1 𝑤2 = 1 𝜃 = 1.5
𝒙𝟏 𝒙𝟐 neta salida
x1 x2 1.5
0 0 0 0
Salida
0 1 1 0
1 0 1 0
1 1 2 1
Graficar la función discriminante
(recta)
29
Entrenamiento del perceptrón
Se busca una estrategia iterativa que permita adaptar los
valores de las conexiones a medida que se presentan los
datos de entrada.
Ver que el estímulo de entrada se corresponde con el
producto interior de los vectors X y W.
30
Producto interior
w . x = || w || . || x || . cos()
n
w . x wi xi
i 1
31
Vector de proyección
wx = || w || . cos()
wx . || x || = w.x
32
Uso del vector de proyección
Wx || X ||
W .X
Wx || X ||
W .X
Wx || X ||
W .X
33
Entrenamiento del Perceptrón
Inicializar los pesos de las conexiones con valores random
(vector W)
Mientras no se clasifiquen todos los ejemplos correctamente
Ingresar un ejemplo a la red.
Si fue clasificado incorrectamente
Si esperaba obtener W.X > y no lo logró, “acerque” el
vector W al vector X.
Si esperaba obtener W.X < y no lo logró, “aleje” el
vector W al vector X.
Aprendizaje supervisado
34
Ajuste del vector de pesos
Si W.X < no es el valor esperado entonces acercar W a X de
la siguiente forma
w’ = w + x
Si W.X > no es el valor esperado entonces aleje W de X de la
siguiente forma
w’ = w - x
es un valor real perteneciente a (0,1]
35
Ajuste del vector de pesos
1 si W . X
La salida del perceptrón es y
0 si W . X
La actualización de los pesos puede calcularse como
𝑤𝑛𝑢𝑒𝑣𝑜 = w + α 𝑡 − 𝑦 𝑥
donde
𝒕 es valor esperado
𝒚 es valor obtenido 𝑡 = 1
𝑦 = 0
36
Ajuste del vector de pesos
1 si W . X
La salida del perceptrón es y
0 si W . X
La actualización de los pesos puede calcularse como
𝑤𝑛𝑢𝑒𝑣𝑜 = w + α 𝑡 − 𝑦 𝑥
donde
𝒕 es valor esperado
𝒚 es valor obtenido
𝑡 = 0
𝑦 = 1
37
Entrenamiento del Perceptrón
Seleccionar el valor de y
Inicializar los pesos de las conexiones con valores
random (vector W)
Mientras no se clasifiquen todos los ejemplos
correctamente
Ingresar un ejemplo a la red.
Si fue clasificado incorrectamente
Wnuevo = W + (t - y) x
38
Ejemplo 1
Entrenar un perceptrón para que se comporte como la
función lógica AND.
Utilice
= 0.3
= 1.5
W1 = 0
W2 = 0.25
Ej1_AND.py
39
AND W1new= W1 + 0.3 (T-Y) X1
W2new= W2 + 0.3 (T-Y) X2
X1 X2 T W1 W2 Y W1new W2new
-------------------------------------------------------------
0 0 0 0.00 0.25 0 0.00 0.25
1 0 0 0.00 0.25 0 0.00 0.25
0 1 0 0.00 0.25 0 0.00 0.25
1 1 1 0.00 0.25 0 0.30 0.55
Repetir hasta que sean iguales
40
AND W1new= W1 + 0.3 (T-Y) X1
W2new= W2 + 0.3 (T-Y) X2
X1 X2 T W1 W2 Y W1new W2new
-------------------------------------------------------------
0 0 0 0.00 0.25 0 0.00 0.25
1 0 0 0.00 0.25 0 0.00 0.25
0 1 0 0.00 0.25 0 0.00 0.25
1 1 1 0.00 0.25 0 0.30 0.55
-------------------------------------------------------------
0 0 0 0.30 0.55 0 0.30 0.55
1 0 0 0.30 0.55 0 0.30 0.55
0 1 0 0.30 0.55 0 0.30 0.55
1 1 1 0.30 0.55 0 0.60 0.85
-------------------------------------------------------------
0 0 0 0.60 0.85 0 0.60 0.85
1 0 0 0.60 0.85 0 0.60 0.85
0 1 0 0.60 0.85 0 0.60 0.85
1 1 1 0.60 0.85 0 0.90 1.15
-------------------------------------------------------------
0 0 0 0.90 1.15 0 0.90 1.15
1 0 0 0.90 1.15 0 0.90 1.15
0 1 0 0.90 1.15 0 0.90 1.15
1 1 1 0.90 1.15 1 0.90 1.15 41
El proceso se repite hasta comprobar que
AND todos los ejemplos son clasificados
correctamente
X1 X2 T W1 W2 Y W1new W2new
-------------------------------------------------------------
0 0 0 0.00 0.25 0 0.00 0.25
1 0 0 0.00 0.25 0 0.00 0.25
0 1 0 0.00 0.25 0 0.00 0.25
1 1 1 0.00 0.25 0 0.30 0.55
-------------------------------------------------------------
0 0 0 0.30 0.55 0 0.30 0.55
1 0 0 0.30 0.55 0 0.30 0.55
0 1 0 0.30 0.55 0 0.30 0.55
1 1 1 0.30 0.55 0 0.60 0.85
-------------------------------------------------------------
0 0 0 0.60 0.85 0 0.60 0.85
1 0 0 0.60 0.85 0 0.60 0.85
0 1 0 0.60 0.85 0 0.60 0.85
1 1 1 0.60 0.85 0 0.90 1.15
-------------------------------------------------------------
0 0 0 0.90 1.15 0 0.90 1.15
1 0 0 0.90 1.15 0 0.90 1.15
0 1 0 0.90 1.15 0 0.90 1.15
1 1 1 0.90 1.15 1 0.90 1.15 42
Perceptrón
1 𝑠𝑖 𝑛𝑒𝑡𝑎 ≥ 0
𝑦=ቊ
𝑛𝑒𝑡𝑎 = 𝑥𝑖 𝑤𝑖 0 𝑠𝑖 𝑛𝑒𝑡𝑎 < 0
𝑖
43
Ejemplo 2
Entrenar un perceptrón para que se comporte como la función
lógica AND.
Utilice
= 0.1
= W0
W0 , W1 y W2 comienzan con valores
aleatorios
Ej2_AND.py
44
Ejemplo 2
X0 X1 X2 T W0 W1 W2 Salida NewW0 NewW1 NewW2
------------------------------------------------------------------------------------
1 0 0 0 0.00 0.00 0.25 1 -0.30 0.00 0.25
1 1 0 0 -0.30 0.00 0.25 0 -0.30 0.00 0.25
1 0 1 0 -0.30 0.00 0.25 0 -0.30 0.00 0.25
1 1 1 1 -0.30 0.00 0.25 0 0.00 0.30 0.55
------------------------------------------------------------------------------------
1 0 0 0 0.00 0.30 0.55 1 -0.30 0.30 0.55
1 1 0 0 -0.30 0.30 0.55 1 -0.60 0.00 0.55
1 0 1 0 -0.60 0.00 0.55 0 -0.60 0.00 0.55
1 1 1 1 -0.60 0.00 0.55 0 -0.30 0.30 0.85
------------------------------------------------------------------------------------
1 0 0 0 -0.30 0.30 0.85 0 -0.30 0.30 0.85
1 1 0 0 -0.30 0.30 0.85 1 -0.60 0.00 0.85
1 0 1 0 -0.60 0.00 0.85 1 -0.90 0.00 0.55
1 1 1 1 -0.90 0.00 0.55 0 -0.60 0.30 0.85
------------------------------------------------------------------------------------
1 0 0 0 -0.60 0.30 0.85 0 -0.60 0.30 0.85
1 1 0 0 -0.60 0.30 0.85 0 -0.60 0.30 0.85
1 0 1 0 -0.60 0.30 0.85 1 -0.90 0.30 0.55
1 1 1 1 -0.90 0.30 0.55 0 -0.60 0.60 0.85
------------------------------------------------------------------------------------
1 0 0 0 -0.60 0.60 0.85 0 -0.60 0.60 0.85
1 1 0 0 -0.60 0.60 0.85 1 -0.90 0.30 0.85
1 0 1 0 -0.90 0.30 0.85 0 -0.90 0.30 0.85
1 1 1 1 -0.90 0.30 0.85 1 -0.90 0.30 0.85
------------------------------------------------------------------------------------
1 0 0 0 -0.90 0.30 0.85 0 -0.90 0.30 0.85
1 1 0 0 -0.90 0.30 0.85 0 -0.90 0.30 0.85
1 0 1 0 -0.90 0.30 0.85 0 -0.90 0.30 0.85
1 1 1 1 -0.90 0.30 0.85 1 -0.90 0.30 0.85
Ejemplo 1
Sobre una cinta transportadora circulan naranjas y melones. Se busca
obtener un clasificador de frutas que facilite su almacenamiento. Para cada
fruta se conoce su diámetro, en centímetros y su intensidad de color
naranja, medida entre 0 y 255.
Utilice la información del archivo [Link] para entrenar un
perceptrón que permita resolver el problema.
Analice la performance de la red obtenida utilizando las muestras del
archivo [Link]
46
Ejemplo 1 [Link]
Ejemplo 1
Utilice el operador Read CSV para leer la información del
archivo “[Link].
Marque el atributo Clase como label
Análisis de datos
Verifique que no hay datos faltantes.
Realice representaciones gráficas
Analice la cantidad de ejemplos disponibles por clase a través de un
histograma de frecuencias (histogram).
Utilice un diagrama de dispersión (scatter plot) para verificar que se
trata de un problema linealmente separable
49
Diagrama de barras
50
Diagrama de dispersión
51
Perceptrón
Utilizaremos un perceptrón para aprender la clasificación
52
Perceptrón
Cantidad de iteraciones
máximas a realizar y tasa
de aprendizaje
Ejecute y analice los resultados
Perceptrón El resultado es una
función discriminante
lineal (hiperplano) que
separa los datos de
entrada en dos clases
29.258 * Diametro – 3.516 * Color + 1.45732 = 0
54
Clasificación usando
29.258 el –Perceptrón
* Diametro 3.516 * Color + 1.45732
55
Verificando el modelo
Lo mismo que hicimos con los
datos de entrenamiento usando
[Link] 56
Verificando el modelo
Recibe el modelo (perceptrón) y
los ejemplos sobre los cuales
debe aplicarlo
57
Verificando el modelo
58
Verificando el modelo per es la precisión del
modelo y exa los
ejemplos clasificados
Permite ver los coeficientes
que determinan el hiperplano
59
Ejemplo 2. Diagnosticar DrugY
Los ejemplos del archivo [Link] correspondientes a
DrugY son linealmente separables del resto.
Entrene un perceptrón con el 80% de los ejemplos y verifique
su desempeño para diagnosticar la droga Y para el 20%
restante.
Ejemplo 4
Transformación de los datos
El perceptrón separa dos clases linealmente. En este caso,
podrá decir si se diagnostica o no la droga Y. Para ello:
Genere un nuevo atributo que tome el valor “DrugY” cuando
esta droga haya sido diagnosticada y el valor “Otra” para el
resto.
Asigne a este nuevo atributo el rol de label.
Ejemplo 4. Datos Originales
[Link]
Ejemplo 4
Transformación de los datos
Comencemos por la
generación del nuevo
atributo
Ejemplo 4
Generando un nuevo atributo
Operador Generate attributes
Ejemplo 4
Generando un nuevo atributo
Operador Generate attributes
Ejemplo 4
Generando un nuevo atributo
Operador Generate attributes
if(Drug == "drugY", "DrugY", "Otra")
Ejemplo 4
Generando un nuevo atributo
Ejecute y verifique que el atributo Droga ha sido creado.
Ejemplo 4
Indicando el rol del nuevo atributo
Operador Set Role
Indicaremos que el atributo Droga es un label
Ejemplo 4
Indicando el rol del nuevo atributo
Operador Set Role
Verifique que haya
quedado un único Label y
que tome sólo dos valores:
DrugY u Otra
Ejemplo 4
Perceptrón para diagnosticar DrugY
Las redes neuronales operan sobre atributos numéricos
(excepto la clase).
Usar el operador Nominal to numerical para convertir
todos los atributos nominales en numéricos.
Ejemplo 4
Perceptrón para diagnosticar DrugY
Operador Nominal to numerical
Ejemplo 4
Perceptrón para diagnosticar DrugY
Operador Nominal to numerical
Utilice los valores por defecto.
Ejecute y verifique que los valores nominales ahora son
numéricos
Dividiendo los datos
Utilice el operador Split Data para separar los datos
en 2 partes: entrenamiento y testeo
73
Split Data
80% para entrenamiento
y 20% para testeo
Datos divididos con Split Data
Verifique que la 1ra. salida tiene el 80% de los datos y la 2da
el 20% restante.
Split Validation
Entrenar utilizando un perceptrón
76
Perceptrón
Cant.máxima de
iteraciones
Velocidad de
aprendizaje
Entrenando el modelo …
Validando con el 20% restante
Ejecute y verifique que los resultados no son buenos
79
Ejemplo 4. Resultados obtenidos
El conjunto de testeo está formado por 24 ejemplos
de la clase DrugY y 16 ejemplos de Otra
Ejemplo 4. Resultados obtenidos
Sólo se clasificaron correctamente 19 ejemplos
8 de la clase DrugY (8/24=>33.33%) y
11 ejemplos de Otra (11/16 => 68.75%)
Ejemplo 4. Resultados obtenidos
De las 13 veces que predijo DrugY
acertó el 61.54%
Ejemplo 4. Resultados obtenidos
De las 27 veces que predijo Otra
acertó el 11/27 40.74%
Ejemplo 4. Resultados obtenidos
La precisión de la red neuronal para este
conjunto de datos de prueba fue de
(8+11)/(8+5+16+11) => 47.50%
Ejemplo 4 : Perceptrón para diagnosticar DrugY
La respuesta mejora si se normalizan los datos de entrada
Ejemplo 4. Normalizar los ejemplos antes de
dividirlos en dos conjuntos
Operador Normalize
Ejemplo 4: Resultados finales
Analice los resultados obtenidos luego de la
normalización
Modifique los parámetros del perceptrón para que la clasificación sea
perfecta. Utilice más iteraciones y menor velocidad de aprendizaje.
Redes multicapa
Una sola neurona no se puede resolver el problema del
XOR porque no es linealmente separable.
88
XOR
OR p1+p2-0.5=0
89
XOR
OR p1+p2-0.5=0
AND
p1+p2-1.5=0
90
XOR
OR p1+p2-0.5=0
AND I1- 1.5 * I2 - 0.5=0
p1+p2-1.5=0
91
XOR p1 p2
I1
(or)
I2
(AND)
a
1 0 1 0 1
1 1 1 1 0
0 0 0 0 0
OR p1+p2-0.5=0 0 1 1 0 1
AND
I1- 1.5 * I2 - 0.5=0
p1+p2-1.5=0
92
Neurona General
x0 k 1
w0
x1k w1
n
yk f xik .wi
n
x2 k
w2 x ik .wi
i 0 i 0
wn
xnk
Función derivable
[Link] Lanzarini 93
Neurona General
1
f ( x) x
x0 k 1 1 e
w0
x1k w1
n
yk f xik .wi
n
x2 k
w2 x ik .wi
i 0 i 0
wn
xnk
Función derivable
[Link] Lanzarini 94
Neurona General
2
f ( x) 2 x
1
x0 k 1 1 e
w0
x1k w1
n
yk f xik .wi
n
x2 k
w2 x ik .wi
i 0 i 0
wn
xnk
Función derivable
[Link] Lanzarini 95
Ejemplo A = {(-1,3), (1,0), (0,1), (-1,1)}
B = {(3,1), (3,3), (2,4), (2,5)}
[Link]
[Link] Lanzarini 96
XOR
BPN_XOR.py
97
Problema no separable linealmente
No todo problema que involucra dos clases es linealmente separable.
Si se van a utilizar varios perceptrones, es preciso entrenarlos
simultáneamente
98
Problema no separable linealmente
¿Cuál es el tamaño de cada capa?
99
Problema no separable linealmente
La idea es aplicar un descenso en la dirección del gradiente sobre la
superficie de error expresada como una función de los pesos.
Deberán tenerse en cuenta los pesos de los arcos que unen AMBAS
capas.
Dado que el aprendizaje es supervisado, para los nodos de salida se
conoce la respuesta esperada a cada entrada.
Para las neuronas ocultas el error cometido en la predicción será
estimado.
100
Multiperceptrón. Arquitectura
101
Multiperceptrón
Esta red puede clasificar los ejemplos en más de 2 clases. Por lo tanto,
puede utilizarse el archivo [Link] directamente. Se trata de un
problema de 5 clases.
Multiperceptrón
Luego ejecute y verifique los resultados
Multiperceptrón
Resultados obtenidos
Problemas
La capacidad de generalización de la red está relacionada
con la cantidad de neuronas de la capa oculta.
El descenso por la técnica del gradiente tiene el problema de
caer en un mínimo local.
105
Capacidad de generalización
RN formada por una única
neurona.
Los puntos sólidos
corresponden a los ejemplos
de entrenamiento y los
demás a testeo.
La clasificación es correcta.
En este caso se dice que le
red ha generalizado la
información correctamente.
106
Sobreajuste de la superficie de decisión
RN que utiliza dos neuronas
ocultas.
Cada hiperplano busca la
mayor proximidad a los
datos de entrenamiento.
Algunos casos se clasifican
incorrectamente.
En este caso se dice que le
red NO ha generalizado la
información correctamente.
Overfitting
107
Sobreajuste de la superficie de decisión
A mayor cantidad de neuronas en la capa oculta, la
red puede variar más rápido en respuesta a los
cambios de la entrada.
108
¿Mínimo local o global?
El problema se resuelve utilizando la dirección del gradiente junto con un
componente aleatorio que permita salir de los mínimos locales (subiendo en
lugar de bajar).
109
Velocidad de aprendizaje
El término de momento
La velocidad de aprendizaje es un parámetro.
Si su valor se incrementa demasiado, la red puede desestabilizarse.
Una forma de solucionar esto es incorporar, a la modificación de los
pesos, un término que incluya una proporción del último cambio
realizado. Este término se denomina momento.
110