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
StringIndexer
iVectorAssembler
. - 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