Deep Learning con PySpark

En este artículo mostraré como crear una Red Neuronal con PySpark con el método de “Multilayer Perceptron” con la cual desarrollaremos una predicción.

Jonathan Quiza
Ciencia y Datos
5 min readMay 6, 2018

--

¿Que es Multilayer perceptron?

(MLP) es una clase de red neuronal artificial de prealimentación. Un MLP consiste en al menos tres capas de nodos. Excepto por los nodos de entrada, cada nodo es una neurona que usa una función de activación no lineal. MLP utiliza una técnica de aprendizaje supervisado llamada “backpropagation” para entrenamiento. Sus capas múltiples y activación no lineal distinguen a MLP de un perceptrón lineal.
Puede distinguir datos que no son separables linealmente.

Considerando que ya tengas experiencia en Scala o Pyspark esto se hará de la manera mas fácil, en caso todavía estas iniciando estaré publicando algunas funciones básicas en otros articulo para que no te pierdas sobre el uso “ml.feature”, “Pipeline”, “”evaluation”.

PREDICCIÓN DE ANIMALES KAAGLE

Dataset

La fuente del set de datos lo vamos a sacar de kaggle lo puedes obtener desde aquí.

Pero para hacerlo más didáctico he separado el set de datos en 2 partes y la se subido en Google Cloud Store para que puedan descargarlo.

1. Original dataset aquí
2. Zoo_train.csv registros (de 1–80) lo puede descargar aquí
3. Zoo_test.csv registro (81–100) lo puede descargar aquí

1. Tenemos que importar las librerías para el trabajo realizado.

2. Crearemos una sesion en Spark como trabajo al cual podremos un nombre.

3. Según la condición de kaggle tenemos que nombras las clases por tipo de animal , creamos una función UDF para lograr hacerlo rápido.

4. Crear funciones para trabajar en Entrenamiento (Train) y pruebas(Test), por lo general, lo trabajo por separado para subir el código a producción, dependiendo si se desea escalar y mejorar la red neuronal en los pesos.

4.1 Función train.

4.2 Función test.

5. Crearemos un función en la cual se hará el procesado de todo la información, hay que tener en consideración que los datos ya están limpios. Por que se hará mas sencillo, en otra ocasión hablaremos sobre limpieza de datos con métodos Robustos, fuera de lo convencional como algunos trabajan para que vean la diferencia.

· Esta función trabaja separar el label de los datos.
· Crear un Indexlabel por el atributo del label.
· Crear un vector con los datos de 1:-1 todos menos en id y el label.
· Partición de los datos de (0.8, 0.2) -> train, test.
· Crear nuestra red neuronal con las capas [16, 5, 4, 4, 7].
· Invocamos al perceptron.
· Pipeline es un modo de realizar trabajos con una mayor rapidez.
· Guardamos el modelo.
· Realizamos una evaluación del modelo (Accuracy).

6. Función test lo que realizamos es cargar el modelo entrenado y poder predecir.

7. Ahora para finalizar invocaremos a las funciones para ver el resultado.

Se pudo haber realizado con menos código de linea pero como ejemplo tendría que desglosar las funciones de Spark , Así mismo esta brinda muchas herramientas posibles.

Espero le hayas gustado esta publicación sobre redes neuronales con Spark , como científico de datos, tienes esta posibilidad que ya esta implementado Spark con MLlib para que puedas hacer todo, en próximo hablaremos de Pytorch, Keras y posiblemente Tensorflow.js como crear modelo bajo estas herramientas sencillas de utilizar.

linkedin:

Gracias

--

--

Jonathan Quiza
Ciencia y Datos

Lead ML Engineer / Data science / Machine Learning / MLops