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
VectorAssembler
iStandardScaler
. - 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