Spark y Machine Learning (MLlib)
Autor: Antonio Berti
En este tutorial vamos a aprender el uso de la libreria de Apache Foundation para el Machine Learning llamada MLlib.
MLIB forma parte de las API de Spark y es interoperable con NumPy de Python así como las librerias de R. implementado con Spark es posible utilizar cualquier tipo de datos de cualquier origen o de la plataforma Hadoop como por ejemplo HDFS, HBase, las fuentes datos provenientes de database relacionadas o fuentes de datos locales, como documentos de texto.
Spark sobresale en los procesos de cálculos iterativo permitiendo que los procesos escritos en las librerias MLlib se ejecuten rápidamente permitiendo su uso y tambien sobre todo a nivel industrial.
MLlib proporciona muchos tipos de algoritmos, así como numerosas funciones de utilidad. ML incluye algoritmos de clasificación, regresión, árboles de decisión, algoritmos de recomendación, agrupamiento. Entre las utilidades más utilizados puede incluir las características de las transformaciones, la estandarización y normalización, funciones estadísticas y álgebra lineal.
Primero que todo cargamos la base de datos
val data =MLUtils.loadLibSVMFile(sc, "data/mllib/sample_libsvm_data.txt")
El conjunto de datos se divide en una parte utilizada para entrenar el modelo (60%) y otra parte para las prueba (40%).
val splits = data.randomSplit(Array(0.6, 0.4), seed=11L) val training = splits(0).cache() val test = splits(1)
Se ejecuta el modelo en la base de datos de prueba.
val model = new LogisticRegressionWithLBFGS() .setNumClasses(10)&nbsp .run(training)
Se entrena el algoritmo y se costruye el modelo
val predictionAndLabels = test.map {case LabeledPoint(label, features) => val prediction = model.predict(features) (prediction, label)}
De esta forma, se obtiene la métrica del modelo y la precisión del pronóstico.
val metrics = new MulticlassMetrics(predictionAndLabels) val accuracy = metrics.accuracy println("Accuracy = $accuracy")
Es posible guardar el modelo recién entrenado y volver a cargarlo en la memoria para su uso posterior.
model.save(sc, "target/tmp/scalaLogisticRegressionWithLBFGSModel") val sameModel = LogisticRegressionModel.load(sc, "target/tmp/scalaLogisticRegressionWithLBFGSModel")
Referencias
documentación spark – http://spark.apache.org
documentación mllib – http://spark.apache.org/docs/latest/ml-guide.html
dataset de ejemplos mllib – https://github.com/apache/spark/tree/master/data/mllib
codigo de ejemplo – https://github.com/apache/spark/tree/master/examples/src/main/scala/org/apache/spark/examples