6.1 Redes Neuronales en RM
Operador Perceptrón
Este operador aprende de un clasificador lineal llamado Perceptrón único que encuentra el hiperplano separador (si es que existe). Este operador no puede manejar atributos polinominales.
Para el ejemplo que vamos a desarrollar (obtenido de un curso de postgrado de la Universidad Nacional de la Plata) imaginemos una cinta transportadora en donde 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.
Utilizaremos la información del archivo FrutasTrain.xls para entrenar un perceptrón que permita resolver el problema y analizaremos la performance del modelo obtenido utilizando las muestras del archivo FrutasTest.xls
Insertemos los siguientes operadores y relaciones, teniendo en cuenta los parámetros para el operador Perceptrón.
Descargue el archivo FrutasTrain.xls.
En el operador Read Excel, debemos seleccionar Import Configuration Wizard ..., ahí le indicamos el archivo FrutasTrain.xls que acabamos de descargar y definimos el atributo Clase como label.
Descargue el archivo FrutasTest.xls.
En el operador Read Excel, debemos seleccionar Import Configuration Wizard ..., ahí le indicamos el archivo FrutasTest.xls que acabamos de descargar y definimos el atributo Clase como label.
Resultados del Operador Perceptrón - Visualización de los DataSets originales
Lo primero que debemos hacer es verificar que no hay datos faltantes u outliers. Esto se puede hacer manualmente (lo cual en este caso es posible por el pequeño tamaño de las tablas) o utilizar operadores que nos garanticen la inexistencia de los mismos.
Después siempre es importante realizar representaciones gráficas.
Para ello observemos que inicialmente habíamos definido un punto de control en el archivo FrutasTrain.xls.
Por ejemplo analizar la cantidad de ejemplos disponibles por clase a través de un diagrama de barras.
Para este problema podríamos utilizar un un diagrama de dispersión (scatter plot) para verificar que se trata de un problema linealmente separable.
En este caso vemos que es posible.
Resultados del Operador Perceptrón - Hiperplano
Observemos el resultado del operador Perceptrón, el cual es una función discriminante lineal (hiperplano) que separa los datos de entrada en dos clases.
Si reemplazamos en la fórmula de la ecuación lineal de primer grado:
y = mx + n => 29.258 * Diámetro – 3.516 * Color + 1.45732 = 0
Si a la fórmula anterior la aplicamos a todos los registros del DataSet original vemos que efectivamente la función discriminante lineal o hiperplano predice con los valores en todos los casos.
Lo anterior coincide con la exactitud del modelo del operador performance que habíamos escrito o sea del 100%.
Ejemplo 2 del Operador Perceptrón
Realicemos otro ejemplo (también obtenido del curso de postgrado de la Universidad Nacional de la Plata) del archivo Drug5 visto en 4.1 Reglas de Clasificación en RM.
Insertemos los siguientes operadores y relaciones, teniendo en cuenta los parámetros para el operador Perceptrón.
Recordemos que en este ejercicio buscábamos determinar los registros del DataSet que correspondan a la DrugY.
Se deben tener en cuenta las siguientes consideraciones:
En el operador Read Excel, debemos seleccionar Import Configuration Wizard ..., ahí le indicamos el archivo Drug5.xls que acabamos de descargar, pero no definimos ningún atributo como label.
Operador Generate attributes
Utilizamos este operador para generar el atributo Droga, para que el mismo se binominal, es decir tome solo dos valores:
-
"drugY" si corresponde a la drugY que estábamos buscando u
-
"Otra" si es otra droga.
Operador Set Role
Con este atributo seteamos o definimos el rol "label" al atributo "Droga" nuevo que acabamos de crear.
Operador Select Attributes
Luego con el operador "Select Attributes" procedemos a elegir los atributos con los que trabajaremos, en nuestro caso son todos menos el atributos "Drug", esto es importante porque el mismo afectaría el resultado final.
Operador Split Data
Luego sigue el operador "Nominal to Numerical", esto convierte todos los atributos nominales a numéricos (excepto el label), y esto es importante porque el operador "Perceptrón" trabaja solo con atributos numéricos.
Posteriormente insertamos el operador "Split Data", que como vimos previamente divide el DataSet original en grupos; en este caso 80% para entrenamiento y 20% para aplicación del modelo.
Análisis de los Resultados del operador Perceptrón
Lo más importante que podemos observar es que la exactitud que conseguimos con el modelo planteado es del 52.50%
Análisis de la tabla de Performance
Esta tabla también nos está indicando que de los 200 registros que tenía el DataSet original, el operador Perceptrón aplica el modelo en el 20% restante (o sea 40 registros, esto lo hicimos con el Split Data).
También nos señala que la única vez que predijo DrugY en ese caso no lo acertó.
Y de los 39 casos restantes donde predijo "Otra" droga acertó en 21 casos, lo que se hace un 53.85%.
¿Cómo podemos mejorar el modelo?
Probemos con el parámetro rounds o bucles. Si colocamos 3 vemos que mejora al 55% pero no analizó ninguna DrugY.
Si cambiamos rounds a 1.000 la exactitud mejora a 60%.
Si cambiamos rounds a 10.000 la exactitud mejora a 65%.
Y así podríamos continuar para lograr una mayor exactitud, pero hay que tener cuidado porque cada vez que aumentamos la cantidad de bucles también aumenta el tiempo de aprendizaje.
De igual forma podríamos aumentar o disminuir la "tasa de aprendizaje" o learning rate.
Otra forma mucho mas eficiente, es, como vimos previamente, agregar el operador "Normalize", tal como se muestra. Observe también que en este caso la cantidad de ciclos es 100 para el operador Perceptrón.
La exactitud en este caso es del 100% y no fue necesario modificar los parámetros.
Algoritmo Neural Net
Este operador aprende un modelo mediante una red neuronal de retroalimentación entrenada por un algoritmo de retropropagación (perceptrón multicapa).
Continuemos con el ejemplo anterior, pero en este caso apliquemos el operador "Neural Net" tal como se muestra a continuación:
Insertemos los siguientes operadores y relaciones, teniendo en cuenta los parámetros para el operador Neural Net.
Se deben tener en cuenta las siguientes consideraciones:
En el operador Read Excel, debemos seleccionar Import Configuration Wizard ..., ahí le indicamos el archivo Drug5.xls que acabamos de descargar y definimos el atributo "Drug" como label.
Definimos las Capas Ocultas con las que trabajaremos:
Es importante que definamos las capas ocultas o neuronas con las que trabajaremos en el Multiperceptrón, en este caso fijémonos que definimos 7 para este problema en particular.
También observemos que hemos definimos 500 bucles con una tasa de aprendizaje de 0.01 y se ha marcado la opción de normalizar.
Definimos las Capas Ocultas con las que trabajaremos:
Es importante que definamos las capas ocultas o neuronas con las que trabajaremos en el Multiperceptrón, en este caso fijémonos que definimos 7 para este problema en particular.
En este punto si hubiéramos definido una sola capa oculta significaría que estaríamos trabajando con una sola neurona y sería como trabajar con el operador "Perceptrón".
También observemos que hemos definimos 500 bucles con una tasa de aprendizaje de 0.01 y se ha marcado la opción de normalizar.
Resultados del Operador Neural Net
En los resultados podemos observar dos aspectos muy destacables.
Primero el operador nos muestra la Red Neuronal obtenida, en donde si hacemos clic en cada circulo nos muestra información de las neuronas correspondientes.
Por ejemplo en la columna "Hidden 1" vemos que hay 7 capas ocultas de entrada las cuales corresponden a las capas que definimos con el operador Neural Net.
Y además hay una de salida.
Si hacemos clic en las mismas vemos los pesos respectivos que tiene cada una.
También podemos observar que con este modelo hemos obtenido una precisión del 100% y ha detectado correctamente la información para las cinco drogas.