Site icon Meccanismo Complesso

Il Supervised Learning nel Machine Learning

Machine Learning - Supervised Learning
Machine Learning - Supervised Learning header

Il Supervised Learning, o apprendimento supervisionato, è un paradigma di Machine Learning in cui un modello viene addestrato su un insieme di dati di addestramento etichettato. Ogni esempio nel set di addestramento è costituito da una coppia di input e output associato, dove l’output è la “risposta corretta” o l’etichetta fornita dal supervisore.

[wpda_org_chart tree_id=18 theme_id=50]

L’organizzazione dei dati nel Supervised Learning

L’obiettivo principale del Supervised Learning è quello di imparare una mappatura tra gli input e gli output in modo che il modello possa fare previsioni accurate su nuovi dati per i quali l’output corretto non è noto.

Se vuoi approfondire l’argomento e scoprire di più sul mondo della Data Science con Python, ti consiglio di leggere il mio libro:

Python Data Analytics 3rd Ed

Fabio Nelli

Un esempio: prepariamo un dataset di dati con Python

La preparazione dei dati è una fase cruciale nel processo di Supervised Learning. Utilizzeremo un esempio di classificazione utilizzando Python con la libreria scikit-learn per illustrare come effettuare alcune delle attività comuni di preparazione dei dati. In questo esempio, immaginiamo di lavorare con un dataset di fiori Iris, che è un set di dati di classificazione molto comune.

Supponiamo di avere un dataset iniziale come il seguente:

import pandas as pd

# Creazione di un DataFrame di esempio
data = {'sepal_length': [5.1, 4.9, 4.7, 4.6, 5.0],
        'sepal_width': [3.5, 3.0, 3.2, 3.1, 3.6],
        'petal_length': [1.4, 1.4, 1.3, 1.5, 1.4],
        'petal_width': [0.2, 0.2, 0.2, 0.2, 0.2],
        'species': ['setosa', 'setosa', 'setosa', 'setosa', 'setosa']}

df = pd.DataFrame(data)

In questo esempio, stiamo affrontando un problema di classificazione in cui vogliamo prevedere la specie del fiore (la variabile di destinazione “species”) basandoci su alcune caratteristiche come la lunghezza e la larghezza dei sepali e dei petali.

Ecco alcune attività comuni di preparazione dei dati in Python:

1. Esplorazione dei Dati:

# Visualizza le prime righe del DataFrame
print(df.head())

# Conta le occorrenze per ogni specie
print(df['species'].value_counts())

# Descrizione statistica del DataFrame
print(df.describe())

2. Trasformazione delle Etichette in Numeri:

from sklearn.preprocessing import LabelEncoder

# Inizializza l'encoder delle etichette
le = LabelEncoder()

# Trasforma la variabile 'species' in numeri
df['species_encoded'] = le.fit_transform(df['species'])

3. Divisore di Dati in Set di Addestramento e Test:

from sklearn.model_selection import train_test_split

# Divide i dati in set di addestramento e test
X = df[['sepal_length', 'sepal_width', 'petal_length', 'petal_width']]
y = df['species_encoded']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

4. Standardizzazione o Normalizzazione delle Caratteristiche:

from sklearn.preprocessing import StandardScaler

# Inizializza lo standardizzatore
scaler = StandardScaler()

# Standardizza le caratteristiche
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

Questi sono solo alcuni esempi di attività di preparazione dei dati. A seconda del problema specifico, potresti dover affrontare altre sfide, come la gestione dei valori mancanti, la creazione di nuove caratteristiche o la gestione degli outlier. La libreria scikit-learn offre molte utili funzioni e strumenti per eseguire queste attività e preparare i dati per l’addestramento del modello.

La regressione e la classificazione nel supervised learning

Nel contesto del supervised learning, dove gli algoritmi apprendono da dati etichettati, due problemi chiave emergono: la regressione e la classificazione.

La regressione è orientata alla previsione di valori continui. Immagina di cercare di stimare il prezzo di una casa basandoti sulle sue caratteristiche, o di prevedere la produzione di una fabbrica considerando variabili di input come la forza-lavoro e la fornitura di materie prime. In questo caso, le variabili di output sono continue, e algoritmi come la Regressione Lineare o il Support Vector Regression possono essere utilizzati per modellare e prevedere tali valori.

Dall’altro lato, la classificazione si concentra sulla previsione della categoria o classe a cui appartiene un determinato input. Un esempio concreto è la categorizzazione di email come spam o non spam, o la diagnosi di una malattia basandosi su sintomi specifici. Qui, le variabili di output sono categoriche o di classe, e algoritmi come gli Alberi Decisionali o le Support Vector Machines possono essere impiegati per classificare correttamente i dati.

In entrambi i contesti, l’addestramento dell’algoritmo coinvolge la presentazione di dati etichettati, permettendo all’algoritmo di apprendere la relazione tra gli input e le etichette associate. Questo processo consente all’algoritmo di formulare previsioni su nuovi dati, contribuendo a risolvere problemi complessi in diversi settori. La scelta tra regressione e classificazione dipende dalla natura del problema e dal tipo di output desiderato, con ciascuno dei due approcci che offre un quadro potente e flessibile per l’analisi e la previsione dei dati.

Algoritmi Comuni di Supervised Learning

Gli algoritmi di Supervised Learning sono adatti a risolvere problemi di classificazione, dove l’obiettivo è assegnare un’etichetta o una classe a un’osservazione, e problemi di regressione, dove l’obiettivo è prevedere un valore numerico continuo. Questi algoritmi richiedono tutti dei dati etichettati per addestrare il modello. Ogni esempio nel set di addestramento deve avere un input associato a un output noto o etichetta.

Durante la fase di addestramento, il modello è esposto a un set di dati etichettato, e gli algoritmi cercano di ottimizzare i parametri del modello in modo che la differenza tra le previsioni e gli output corretti sia ridotta al minimo. Gli algoritmi ricevono un feedback sulla qualità delle loro previsioni attraverso una funzione di perdita o un criterio di valutazione. L’obiettivo è ridurre questa perdita durante il processo di addestramento.

Fasi del Processo di Supervised Learning

I punti che abbiamo visto nella sezione precedente possono essere spiegati meglio se teniamo conto delle fasi di processo di apprendimento di questi modelli.

  1. Raccolta dei Dati: Acquisizione e preparazione di un set di dati rappresentativo e significativo.
  2. Selezione del Modello: Scegliere un algoritmo di Supervised Learning appropriato per il problema.
  3. Addestramento del Modello: Utilizzare il set di addestramento per insegnare al modello a fare previsioni.
  4. Valutazione del Modello: Testare il modello su un set di dati separato per valutarne le prestazioni.
  5. Predizione: Utilizzare il modello addestrato per fare previsioni su nuovi dati.

Tutti gli algoritmi elencati in precedenza sono accomunati dall’esigenza di disporre di un dataset etichettato sia durante la fase di apprendimento che durante la fase di test. E tutti seguono le fasi di processo elencate in precedenza.

Il Supervised Learning è ampiamente utilizzato in una vasta gamma di applicazioni pratiche, come il riconoscimento di immagini, la traduzione automatica, la diagnosi medica e molto altro ancora. La chiave del suo successo risiede nella sua capacità di apprendere pattern complessi e relazioni nei dati, consentendo ai computer di svolgere compiti complessi con elevate prestazioni predittive.

Exit mobile version