Introducció a Spark MLlib

Spark MLlib és la biblioteca d'aprenentatge automàtic de Apache Spark. Proporciona eines per a algorismes d'aprenentatge automàtic com classificació, regressió, clustering, filtratge col·laboratiu, i més. A més, inclou utilitats per a pipelines d'aprenentatge automàtic, persistència de models i avaluació de models.

Objectius del Mòdul

  • Comprendre què és Spark MLlib i les seves capacitats.
  • Aprendre a utilitzar algorismes d'aprenentatge automàtic amb Spark MLlib.
  • Implementar pipelines d'aprenentatge automàtic.
  • Avaluar i persistir models d'aprenentatge automàtic.

Conceptes Clau

Algorismes d'Aprenentatge Automàtic

  • Classificació: Assignar etiquetes a instàncies.
  • Regressió: Predir valors continus.
  • Clustering: Agrupar instàncies similars.
  • Filtratge Col·laboratiu: Recomendacions basades en preferències.

Pipelines d'Aprenentatge Automàtic

  • Transformadors: Transformen un DataFrame en un altre.
  • Estimadors: Ajusten un model a partir de dades.
  • Pipelines: Seqüència de transformadors i estimadors.

Exemples Pràctics

Configuració Inicial

import org.apache.spark.ml.classification.LogisticRegression
import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator
import org.apache.spark.ml.feature.{VectorAssembler, StringIndexer}
import org.apache.spark.sql.SparkSession

val spark = SparkSession.builder.appName("Spark MLlib Example").getOrCreate()

Exemple de Classificació amb Regressió Logística

1. Carregar Dades

val data = spark.read.format("libsvm").load("data/mllib/sample_libsvm_data.txt")

2. Preparar les Dades

val indexer = new StringIndexer().setInputCol("label").setOutputCol("indexedLabel")
val assembler = new VectorAssembler().setInputCols(Array("features")).setOutputCol("indexedFeatures")

val dataIndexed = indexer.fit(data).transform(data)
val dataAssembled = assembler.transform(dataIndexed)

3. Crear i Ajustar el Model

val lr = new LogisticRegression().setLabelCol("indexedLabel").setFeaturesCol("indexedFeatures")
val lrModel = lr.fit(dataAssembled)

4. Fer Prediccions

val predictions = lrModel.transform(dataAssembled)
predictions.select("indexedLabel", "prediction", "probability").show(5)

5. Avaluar el Model

val evaluator = new MulticlassClassificationEvaluator().setLabelCol("indexedLabel").setPredictionCol("prediction").setMetricName("accuracy")
val accuracy = evaluator.evaluate(predictions)
println(s"Accuracy: $accuracy")

Exemple de Pipeline

1. Crear el Pipeline

import org.apache.spark.ml.Pipeline

val pipeline = new Pipeline().setStages(Array(indexer, assembler, lr))

2. Ajustar el Pipeline

val model = pipeline.fit(data)

3. Fer Prediccions amb el Pipeline

val pipelinePredictions = model.transform(data)
pipelinePredictions.select("indexedLabel", "prediction", "probability").show(5)

Exercicis Pràctics

Exercici 1: Classificació amb Decision Trees

  1. Carrega el dataset data/mllib/sample_libsvm_data.txt.
  2. Prepara les dades utilitzant StringIndexer i VectorAssembler.
  3. Crea un model de Decision Tree per a classificació.
  4. Ajusta el model i fes prediccions.
  5. Avaluar el model utilitzant MulticlassClassificationEvaluator.

Solució

import org.apache.spark.ml.classification.DecisionTreeClassifier

val data = spark.read.format("libsvm").load("data/mllib/sample_libsvm_data.txt")

val indexer = new StringIndexer().setInputCol("label").setOutputCol("indexedLabel")
val assembler = new VectorAssembler().setInputCols(Array("features")).setOutputCol("indexedFeatures")

val dataIndexed = indexer.fit(data).transform(data)
val dataAssembled = assembler.transform(dataIndexed)

val dt = new DecisionTreeClassifier().setLabelCol("indexedLabel").setFeaturesCol("indexedFeatures")
val dtModel = dt.fit(dataAssembled)

val predictions = dtModel.transform(dataAssembled)
predictions.select("indexedLabel", "prediction", "probability").show(5)

val evaluator = new MulticlassClassificationEvaluator().setLabelCol("indexedLabel").setPredictionCol("prediction").setMetricName("accuracy")
val accuracy = evaluator.evaluate(predictions)
println(s"Accuracy: $accuracy")

Resum

En aquest mòdul, hem après sobre Spark MLlib i com utilitzar-lo per a algorismes d'aprenentatge automàtic. Hem vist exemples pràctics de com carregar dades, preparar-les, crear models, fer prediccions i avaluar els models. També hem explorat com crear pipelines d'aprenentatge automàtic per simplificar el procés de modelatge. Amb aquests coneixements, estàs preparat per aplicar Spark MLlib a problemes reals d'aprenentatge automàtic.

© Copyright 2024. Tots els drets reservats