Il Supervised Learning nel Machine 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.

  • Input (Caratteristiche): Gli input, noti anche come caratteristiche o variabili indipendenti, rappresentano le informazioni di cui il modello dispone per fare previsioni. Ad esempio, in un problema di predizione del prezzo delle case, le caratteristiche potrebbero includere il numero di camere, la metratura, la posizione, ecc.
  • Output (Etichette o Variabili Dipendenti): Gli output sono le risposte corrette associate agli input. Ad esempio, nel problema del prezzo delle case, l’output sarebbe il prezzo effettivo della casa.
  • Set di Addestramento: Questo è l’insieme di dati utilizzato per addestrare il modello. Ogni esempio nel set di addestramento contiene un input associato alla sua etichetta corretta. La qualità e la rappresentatività di questo set sono cruciali per le prestazioni del modello.
  • Set di Test: Dopo l’addestramento, il modello viene valutato su un set di dati separato chiamato set di test, che contiene esempi simili ma con output sconosciuto. Questo serve per valutare quanto bene il modello generalizza su nuovi dati.
Python Data Analytics

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.

  • Regressione Lineare: Utilizzato per predire valori continui, come il prezzo di una casa.
  • Regressione Logistica: Adatto per problemi di classificazione binaria, come prevedere se un’email è spam o non spam.
  • Support Vector Machines (SVM): Utilizzato per problemi di classificazione o regressione, cercando di trovare il miglior iperpiano di separazione tra classi.
  • Alberi Decisionali e Foreste Casuali: Ottimi per la classificazione e la regressione, basati su decisioni a cascata.
  • K-Nearest Neighbors (K-NN): Classifica gli input in base alla maggioranza delle etichette dei “vicini” più vicini.

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.

Lascia un commento