top of page

6.1 Redes Neuronales en RM

Operador Perceptrón

rapidminer.png

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.

redesneuronales28.PNG

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.

redesneuronales26.PNG

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.

redesneuronales27.PNG

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.

redesneuronales30.PNG

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.

redesneuronales29.PNG

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.

redesneuronales31.PNG

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.

redesneuronales32.PNG

Lo anterior coincide con la exactitud del modelo del operador performance que habíamos escrito o sea del 100%.

redesneuronales33.PNG

Ejemplo 2 del Operador Perceptrón

redesneuronales38.PNG

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.

redesneuronales34.PNG

Operador Generate attributes

redesneuronales35.PNG

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.

redesneuronales36.PNG

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.

redesneuronales39.PNG

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.

redesneuronales37.PNG

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%

redesneuronales40.PNG

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.

redesneuronales41.PNG
flecha.png
redesneuronales42.PNG

Si cambiamos rounds a 1.000 la exactitud mejora a 60%.

redesneuronales43.PNG
redesneuronales44.PNG
flecha.png

Si cambiamos rounds a 10.000 la exactitud mejora a 65%.

redesneuronales45.PNG
redesneuronales46.PNG
flecha.png

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.

redesneuronales47.PNG

La exactitud en este caso es del 100% y no fue necesario modificar los parámetros.

redesneuronales48.PNG

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:

redesneuronales56.PNG

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.

redesneuronales55.PNG

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.

redesneuronales57.PNG

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.

redesneuronales57.PNG

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.

redesneuronales59.PNG
redesneuronales58.PNG
bottom of page