En aquest tema, explorarem com utilitzar Apache Spark per crear pipelines d'aprenentatge automàtic (ML). Els pipelines ML són seqüències de passos que transformen les dades i entrenen models de manera estructurada i repetible. Spark MLlib proporciona una API robusta per construir aquests pipelines.
Objectius del Tema
- Comprendre què és un pipeline d'aprenentatge automàtic.
- Aprendre a crear i utilitzar pipelines amb Spark MLlib.
- Implementar un exemple pràctic de pipeline ML.
Què és un Pipeline d'Aprenentatge Automàtic?
Un pipeline d'aprenentatge automàtic és una seqüència d'etapes que inclouen:
- Preprocessament de Dades: Transformacions com la normalització, l'extracció de característiques, etc.
- Entrenament del Model: Ajustar un model als nostres dades.
- Avaluació del Model: Mesurar el rendiment del model.
- Predicció: Utilitzar el model entrenat per fer prediccions sobre noves dades.
Components d'un Pipeline en Spark MLlib
- Estimators
Un Estimator és un algoritme d'aprenentatge automàtic que s'ajusta a les dades per produir un model. Exemples inclouen LogisticRegression, DecisionTreeClassifier, etc.
- Transformers
Un Transformer és una funció que transforma un DataFrame en un altre. Exemples inclouen VectorAssembler, StandardScaler, etc.
- Pipeline
Un Pipeline és una seqüència d'Estimators i Transformers que s'executen en ordre.
Exemple Pràctic: Classificació amb Pipelines
Pas 1: Importar les Llibreries Necessàries
from pyspark.sql import SparkSession from pyspark.ml import Pipeline from pyspark.ml.feature import VectorAssembler, StandardScaler from pyspark.ml.classification import LogisticRegression from pyspark.ml.evaluation import BinaryClassificationEvaluator
Pas 2: Crear una Sessió de Spark
Pas 3: Carregar les Dades
Pas 4: Preprocessament de les Dades
# Seleccionar les columnes de característiques i la columna objectiu assembler = VectorAssembler(inputCols=["feature1", "feature2", "feature3"], outputCol="features") scaler = StandardScaler(inputCol="features", outputCol="scaledFeatures") # Crear el model de regressió logística lr = LogisticRegression(featuresCol="scaledFeatures", labelCol="label")
Pas 5: Crear el Pipeline
Pas 6: Entrenar el Model
Pas 7: Avaluar el Model
predictions = model.transform(test_data)
evaluator = BinaryClassificationEvaluator(labelCol="label")
accuracy = evaluator.evaluate(predictions)
print(f"Accuracy: {accuracy}")Exercici Pràctic
Exercici 1: Crear un Pipeline per a la Regressió
- Carrega un conjunt de dades de regressió.
- Preprocessa les dades utilitzant
VectorAssembleriStandardScaler. - Utilitza un model de regressió lineal (
LinearRegression). - Crea un pipeline amb les etapes de preprocessament i el model.
- Entrena el pipeline i avalua el model.
Solució
from pyspark.ml.regression import LinearRegression
# Carregar les dades
data = spark.read.csv("regression_data.csv", header=True, inferSchema=True)
# Preprocessament
assembler = VectorAssembler(inputCols=["feature1", "feature2", "feature3"], outputCol="features")
scaler = StandardScaler(inputCol="features", outputCol="scaledFeatures")
# Model de regressió lineal
lr = LinearRegression(featuresCol="scaledFeatures", labelCol="label")
# Crear el pipeline
pipeline = Pipeline(stages=[assembler, scaler, lr])
# Entrenar el model
train_data, test_data = data.randomSplit([0.7, 0.3])
model = pipeline.fit(train_data)
# Avaluar el model
predictions = model.transform(test_data)
evaluator = RegressionEvaluator(labelCol="label")
rmse = evaluator.evaluate(predictions, {evaluator.metricName: "rmse"})
print(f"Root Mean Squared Error (RMSE): {rmse}")Resum
En aquest tema, hem après què són els pipelines d'aprenentatge automàtic i com crear-los utilitzant Spark MLlib. Hem vist un exemple pràctic de classificació i hem proposat un exercici de regressió per reforçar els conceptes apresos. Els pipelines són una eina poderosa per estructurar i automatitzar el procés d'aprenentatge automàtic, facilitant la reproducció i la gestió dels models.
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
