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
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
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
- Carrega el dataset
data/mllib/sample_libsvm_data.txt. - Prepara les dades utilitzant
StringIndexeriVectorAssembler. - Crea un model de Decision Tree per a classificació.
- Ajusta el model i fes prediccions.
- 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.
Curs d'Apache Spark
Mòdul 1: Introducció a Apache Spark
Mòdul 2: Conceptes Bàsics de Spark
Mòdul 3: Processament de Dades amb Spark
Mòdul 4: Programació Avançada amb Spark
Mòdul 5: Optimització i Millora del Rendiment
- Comprendre les Tasques de Spark
- Emmagatzematge en Memòria i Persistència
- Gestió de Memòria
- Optimització d'Aplicacions Spark
Mòdul 6: Spark al Núvol
Mòdul 7: Aplicacions del Món Real i Estudis de Cas
- Processament de Dades en Temps Real
- Anàlisi de Big Data
- Pipelines d'Aprenentatge Automàtic
- Estudis de Cas
