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:

  1. Preprocessament de Dades: Transformacions com la normalització, l'extracció de característiques, etc.
  2. Entrenament del Model: Ajustar un model als nostres dades.
  3. Avaluació del Model: Mesurar el rendiment del model.
  4. Predicció: Utilitzar el model entrenat per fer prediccions sobre noves dades.

Components d'un Pipeline en Spark MLlib

  1. 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.

  1. Transformers

Un Transformer és una funció que transforma un DataFrame en un altre. Exemples inclouen VectorAssembler, StandardScaler, etc.

  1. 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

spark = SparkSession.builder.appName("ML_Pipeline_Example").getOrCreate()

Pas 3: Carregar les Dades

data = spark.read.csv("data.csv", header=True, inferSchema=True)
data.show(5)

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

pipeline = Pipeline(stages=[assembler, scaler, lr])

Pas 6: Entrenar el Model

train_data, test_data = data.randomSplit([0.7, 0.3])
model = pipeline.fit(train_data)

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ó

  1. Carrega un conjunt de dades de regressió.
  2. Preprocessa les dades utilitzant VectorAssembler i StandardScaler.
  3. Utilitza un model de regressió lineal (LinearRegression).
  4. Crea un pipeline amb les etapes de preprocessament i el model.
  5. 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.

© Copyright 2024. Tots els drets reservats