Corso
Etichettare i dati è costoso, lento, specifico del dominio e la maggior parte dei team non ne ha abbastanza.
Per addestrare un modello servono sempre dati etichettati, ma etichettarli correttamente richiede tempo e spesso un esperto del dominio. Per esempio, le immagini mediche richiedono radiologi e i documenti legali richiedono avvocati. Anche compiti semplici come l'analisi del sentiment hanno bisogno di qualcuno che si sieda e tagghi a mano ogni esempio. Di conseguenza, la maggior parte dei team di ML finisce con un minuscolo dataset etichettato e una grande quantità di dati non etichettati che non può usare.
L'apprendimento semi-supervisionato risolve questo problema addestrando su entrambi. Prende il tuo piccolo dataset etichettato, lo combina con il tuo grande dataset non etichettato e permette al modello di apprendere schemi.
In questo articolo ti spiegherò come funziona l'apprendimento semi-supervisionato, illustrerò le tecniche più comuni e ti mostrerò quando ha senso usarlo.
Ma cos'è esattamente il Machine Learning Supervisionato? Leggi il nostro post per scoprire come funzionano gli algoritmi supervisionati essenziali.
Cos'è l'apprendimento semi-supervisionato?
L'apprendimento semi-supervisionato è un approccio di machine learning che si addestra su un mix di dati etichettati e non etichettati.
Come suggerisce il nome, sta a metà tra apprendimento supervisionato e non supervisionato. L'apprendimento supervisionato richiede che ogni campione sia etichettato. Quello non supervisionato funziona senza alcuna etichetta. Il semi-supervisionato usa un piccolo set di esempi etichettati insieme a una raccolta più ampia di esempi non etichettati.
I dati etichettati dicono al modello cosa cercare. Quelli non etichettati mostrano al modello come sono strutturati i dati. Insieme, forniscono al modello più materiale di apprendimento rispetto a ciascun tipo preso da solo.
Come funziona l'apprendimento semi-supervisionato
Il processo parte da un piccolo dataset etichettato - magari qualche centinaio di esempi per cui conosci l'output corretto.
Poi introduci un dataset non etichettato molto più grande. Possono essere migliaia o persino milioni di campioni senza etichette. Il modello usa questi dati non etichettati per apprendere gli schemi e le relazioni sottostanti tra i punti dati.
Gli esempi etichettati guidano poi quella struttura verso le risposte giuste. Il modello sa già come sono organizzati i dati grazie ai campioni non etichettati. Le etichette gli dicono quali regioni di quella struttura corrispondono a quali output.
Ecco un esempio rapido.
Supponi di classificare le email come spam o non spam. Hai 100 email etichettate e 10.000 non etichettate. Il modello prima impara come le email si raggruppano in base a pattern di parole e struttura. Poi usa i tuoi 100 esempi etichettati per capire quali gruppi sono spam e quali no. Il risultato è un modello che va meglio rispetto a uno addestrato solo su quelle 100 email etichettate.
Apprendimento semi-supervisionato vs supervisionato vs non supervisionato
Vediamo ogni approccio per capire dove si inserisce il semi-supervisionato rispetto agli altri due.
Apprendimento supervisionato
L'apprendimento supervisionato si addestra su dati completamente etichettati. Ogni campione del dataset ha un input e un output noto. Il modello apprende la mappatura tra i due.
Funziona bene quando hai abbastanza esempi etichettati. Ma "abbastanza" può significare migliaia o persino milioni di campioni a seconda del compito. Produrne così tanti è costoso e a volte semplicemente impossibile.
Apprendimento non supervisionato
L'apprendimento non supervisionato non usa alcuna etichetta. Il modello guarda i dati grezzi e trova da solo una struttura. Esempi classici sono il clustering e la riduzione della dimensionalità.
Il vantaggio è che non ti servono dati etichettati. Lo svantaggio è che il modello non sa cosa ti interessa davvero. Trova dei pattern, certo, ma potrebbero non corrispondere al problema che stai cercando di risolvere.
Apprendimento semi-supervisionato
L'apprendimento semi-supervisionato combina il meglio dei due. Dai al modello un piccolo dataset etichettato per definire il compito e un ampio dataset non etichettato per imparare la struttura dei dati.
I dati etichettati indicano al modello la direzione giusta. Quelli non etichettati mostrano come i campioni si relazionano tra loro. Questa combinazione spesso supera l'apprendimento supervisionato sullo stesso piccolo set etichettato, perché il modello rileva schemi che avrebbe mancato senza i dati non etichettati.
Ecco un rapido confronto tra i tre:

Tabella di confronto degli approcci di machine learning
Ricapitolando, se etichettare richiede troppo tempo e hai molti dati non etichettati, il semi-supervisionato potrebbe valere la pena di essere considerato. Vediamo ora alcune tecniche comuni.
Tecniche comuni di apprendimento semi-supervisionato
Ci sono un paio di modi per implementare l'apprendimento semi-supervisionato. Ogni tecnica gestisce in modo diverso la divisione etichettato/non etichettato, quindi vediamo le più comuni.
Self-training
Questo è l'approccio più semplice. Alleni un modello sui dati etichettati, poi lo usi per prevedere le etichette dei campioni non etichettati. Le previsioni più sicure vengono aggiunte al set etichettato come pseudo-etichette e il modello viene riaddestrato sul dataset ampliato.
Ripeti il processo finché il modello non smette di migliorare o finisci i dati non etichettati. È facile da implementare, ma se il modello fa una previsione sbagliata all'inizio, quell'errore entra a far parte del tuo dataset.
Co-training
Il co-training usa due modelli invece di uno. Ogni modello è addestrato su una diversa "vista" dei dati. Pensala come un diverso sottoinsieme di feature.
Per esempio, supponi di classificare pagine web. Un modello potrebbe guardare il testo della pagina, mentre l'altro guarda il testo di ancoraggio dei link che puntano ad essa. Ogni modello etichetta campioni non etichettati per l'altro, e si insegnano a vicenda in più round.
L'idea è che i punti di forza di un modello coprano le debolezze dell'altro. Se entrambe le viste hanno abbastanza informazioni da sole, il co-training può superare il self-training perché gli errori di un modello vengono corretti dall'altro.
Propagazione delle etichette
Questo approccio costruisce un grafo in cui ogni punto dati è un nodo ed edge collegano punti simili. Le etichette poi si "diffondono" dai nodi etichettati ai loro vicini.
L'assunzione è che punti dati simili debbano condividere la stessa etichetta. Se un campione etichettato si trova vicino a un cluster di campioni non etichettati, è probabile che questi ultimi appartengano alla stessa classe. Le etichette si propagano nel grafo finché ogni nodo ne ha una.
Funziona bene quando i tuoi dati hanno una chiara struttura a cluster, ma può fallire quando i confini tra classi sono sfumati.
Reti neurali semi-supervisionate
Il deep learning ha un proprio set di tecniche semi-supervisionate. Ecco le due più comuni:
- Regolarizzazione di consistenza: spinge il modello a produrre lo stesso output per un input anche dopo piccole perturbazioni come rumore o augmentation. L'idea è che un buon modello non dovrebbe cambiare la previsione solo perché hai leggermente alterato l'input
- Pseudo-labeling nelle reti neurali: funziona come il self-training ma a livello di batch. Il modello genera etichette per i campioni non etichettati durante l'addestramento e le usa insieme alle etichette reali nella funzione di loss.
Metodi come FixMatch e MixMatch combinano queste idee e hanno mostrato buoni risultati su benchmark con pochissimi esempi etichettati.
Perché l'apprendimento semi-supervisionato è importante
Dovresti interessarti all'apprendimento semi-supervisionato per una ragione: il costo.
Etichettare i dati richiede dati, esperti del dominio, tempo e denaro. Il semi-supervisionato riduce i costi traendo di più da meno etichette.
Poi c'è la performance. Un modello addestrato su 500 campioni etichettati e 50.000 non etichettati spesso batte lo stesso modello addestrato solo su quei 500 etichettati. I dati non etichettati danno al modello un quadro più completo di come sono distribuiti i dati, portando a previsioni migliori.
E poi c'è la realtà della maggior parte dei dataset. I dati non etichettati sono ovunque. Ogni azienda è seduta su log, immagini, documenti e registrazioni che nessuno ha il tempo di etichettare. L'apprendimento semi-supervisionato ti permette di ricavare qualcosa di utile da quei dati.
Applicazioni dell'apprendimento semi-supervisionato
L'apprendimento semi-supervisionato emerge in domini in cui è difficile ottenere le etichette.
Classificazione di immagini è uno dei casi d'uso più comuni. Etichettare migliaia di immagini è tedioso, ma raccogliere immagini non etichettate è facile. I metodi semi-supervisionati permettono di addestrare classificatori accurati con poche centinaia di immagini etichettate.
Classificazione di testi è analoga. Potresti avere milioni di recensioni clienti o ticket di supporto, ma solo un piccolo lotto con etichette manuali. L'apprendimento semi-supervisionato può aiutarti a costruire classificatori che generalizzano sull'intero dataset.
Riconoscimento vocale è un'altra area interessante. Trascrivere audio a mano richiede molto sforzo, ma l'audio grezzo abbonda. Le registrazioni non etichettate aiutano il modello a imparare pattern acustici, mentre i campioni trascritti gli insegnano le mappature corrette.
Analisi di dati medici è un eccellente compito specifico di dominio. Ottenere che un medico etichetti scansioni o cartelle cliniche è costoso e lento, perché hanno cose più importanti da fare. Ma gli ospedali hanno enormi quantità di dati clinici non etichettati. I metodi semi-supervisionati aiutano a costruire modelli diagnostici senza bisogno di un dataset completamente etichettato.
Vantaggi dell'apprendimento semi-supervisionato
Ecco cosa rende l'apprendimento semi-supervisionato adatto a molti progetti:
- Richiede meno dati etichettati: puoi ottenere buoni risultati con una frazione delle etichette che un approccio completamente supervisionato richiederebbe
- Migliora la generalizzazione: i dati non etichettati espongono il modello a una gamma più ampia di esempi, aiutandolo a performare meglio su dati mai visti
- È conveniente: quando etichettare è costoso o richiede tempo - cosa che di solito è - il semi-supervisionato fa risparmiare tempo e budget sfruttando al massimo ciò che hai già
Quindi, se hai più dati che etichette, è il momento di considerare il semi-supervisionato.
Limitazioni dell'apprendimento semi-supervisionato
L'apprendimento semi-supervisionato presenta un paio di compromessi che dovresti conoscere.
- La qualità dei dati non etichettati conta: se i tuoi dati non etichettati non provengono dalla stessa distribuzione dei dati etichettati, il modello apprende pattern sbagliati
- Pseudo-etichette errate: in metodi come il self-training, una previsione sicura ma sbagliata viene trattata come verità. Il modello si addestra su quell'etichetta errata, rafforzando l'errore e peggiorando le previsioni future
- È più complesso del supervisionato: hai più iperparametri da regolare, più scelte progettuali da fare e più cose che possono andare storte. Un modello supervisionato è più semplice da costruire e spiegare. I metodi semi-supervisionati aggiungono complessità che non sempre vale la pena - soprattutto se il tuo dataset etichettato è già abbastanza grande
Nessuna di queste è un dealbreaker, solo qualcosa da sapere prima di buttartici.
Apprendimento semi-supervisionato in pratica (esempio Python)
Vediamo l'apprendimento semi-supervisionato in azione con un semplice esempio in Python usando l'algoritmo LabelSpreading di scikit-learn.
Creerò un dataset, etichetterò solo una piccola parte e lascerò che il modello capisca il resto.
Impostazione dei dati
Per prima cosa genero un dataset e maschero la maggior parte delle etichette per simulare uno scenario semi-supervisionato:
import numpy as np
from sklearn.datasets import make_moons
from sklearn.semi_supervised import LabelSpreading
from sklearn.metrics import accuracy_score
# Generate a dataset with 500 samples
X, y_true = make_moons(n_samples=500, noise=0.2, random_state=42)
# Keep only 10%, mask the rest as -1
rng = np.random.RandomState(42)
labeled_idx = rng.choice(500, size=50, replace=False)
y_train = np.full(500, -1) # -1 means unlabeled in scikit-learn
y_train[labeled_idx] = y_true[labeled_idx]
print(f"Labeled samples: {np.sum(y_train != -1)}")
print(f"Unlabeled samples: {np.sum(y_train == -1)}")

Numero di campioni di dati etichettati e non etichettati
In scikit-learn, -1 contrassegna un campione come non etichettato. Su 500 campioni, solo 50 hanno etichette. Il modello deve capire gli altri 450.
Addestramento e previsione
Ora allenerò un modello LabelSpreading e vedrò quanto bene etichetta i dati non etichettati:
model = LabelSpreading(kernel="knn", n_neighbors=7)
model.fit(X, y_train)
y_pred = model.transduction_
# Check accuracy on the originally unlabeled samples
unlabeled_mask = y_train == -1
accuracy = accuracy_score(y_true[unlabeled_mask], y_pred[unlabeled_mask])
print(f"Accuracy on unlabeled samples: {accuracy:.2%}")

Accuratezza sui campioni non etichettati
Il modello ha etichettato correttamente la maggior parte dei campioni non etichettati usando solo il 10% dei dati come esempi etichettati. Questa è l'idea di base.
Visualizzazione dei risultati
L'accuratezza è alta - quasi 96% - ma ispezioniamo visivamente quali campioni sono stati classificati male:

Etichette vere e previste
Le etichette previste corrispondono quasi perfettamente a quelle vere, anche se il modello ha visto solo 50 esempi etichettati su 500. Puoi vedere quelle errate in rosso nel grafico di destra.
Errori comuni con l'apprendimento semi-supervisionato
Hai visto quanto può essere potente il semi-supervisionato, ma non è perfetto per ogni scenario. Ecco gli errori più comuni e come evitarli.
- Dare per scontato che i dati non etichettati aiutino sempre: non è così. Se i dati non etichettati provengono da una distribuzione diversa rispetto ai tuoi dati etichettati, il modello impara pattern che non si applicano al tuo compito reale. Verifica sempre che i tuoi dati etichettati e non etichettati provengano dalla stessa fonte e rappresentino lo stesso problema
- Poor model initialization: i metodi semi-supervisionati si costruiscono sopra un modello supervisionato iniziale. Se quel primo modello è debole - addestrato su troppo pochi campioni o con iperparametri sbagliati - ogni passo successivo eredita quei problemi. Parti dalla migliore baseline supervisionata possibile prima di aggiungere dati non etichettati
- Eccessiva fiducia nelle pseudo-etichette: le pseudo-etichette sono valide solo quanto il modello che le ha generate. Se ti fidi di ogni pseudo-etichetta, gli errori possono accumularsi nei round di addestramento. Imposta una soglia di confidenza alta e usa solo le pseudo-etichette di cui il modello è sicuro. Scarta il resto
- Ignorare la distribuzione dei dati: i metodi semi-supervisionati assumono che la struttura dei dati non etichettati ti dica qualcosa di utile sulle etichette. Se i tuoi dati non hanno cluster chiari o confini di decisione regolari, quell'assunzione non regge
Per evitare questi quattro errori, inizia con una forte baseline supervisionata, aggiungi i dati non etichettati gradualmente e verifica che le prestazioni migliorino davvero a ogni passo.
Quando usare l'apprendimento semi-supervisionato
L'apprendimento semi-supervisionato ha senso in questi tre scenari:
- Quando i dati etichettati sono limitati: se hai solo un piccolo dataset etichettato e ottenere più etichette è costoso o lento, il semi-supervisionato ti aiuta a spremere quel pizzico di accuratezza in più
- Quando i dati non etichettati abbondano: ti serve una grande quantità di dati non etichettati perché funzioni. Se hai solo un piccolo set non etichettato, il modello non apprenderà abbastanza struttura da fare la differenza. Più è grande il divario tra la dimensione dei set etichettato e non etichettato, più i metodi semi-supervisionati possono aiutare
- Quando i tuoi dati hanno una struttura chiara: il semi-supervisionato funziona meglio quando punti dati simili condividono la stessa etichetta. Se i tuoi dati formano cluster o hanno confini tra classi regolari, i dati non etichettati renderanno quei pattern ancora più evidenti. Se le classi sono mescolate senza una chiara separazione, i dati non etichettati aggiungeranno poco.
Se si applicano tutte e tre le condizioni, vale la pena provare il semi-supervisionato.
Conclusione
In parole semplici, l'apprendimento semi-supervisionato ti permette di addestrare modelli migliori senza etichettare tutto. Prendi un piccolo dataset etichettato, lo combini con uno grande non etichettato e lasci che il modello impari da entrambi.
I vantaggi sono chiari: meno tempo per etichettare, time-to-market più rapido, costi più bassi e prestazioni migliori rispetto all'addestramento solo su etichette limitate. E in campi come medicina, legale e NLP - dove l'etichettatura richiede esperti del dominio - è un grande vantaggio.
Se hai una grande quantità di dati non etichettati, prova il semi-supervisionato. Parti da una buona baseline supervisionata, scegli una tecnica che si adatti alla struttura dei tuoi dati e misura se i dati non etichettati aiutano davvero. LabelSpreading di scikit-learn è un buon primo esperimento, ma prova anche metodi come FixMatch e MixMatch.
Se vuoi essere pronto per il lavoro nel 2026, segui il nostro percorso Machine Learning Engineer. Copre tutto, dalle basi alla MLOps.
FAQ
Cos'è l'apprendimento semi-supervisionato?
L'apprendimento semi-supervisionato è un approccio di machine learning che addestra i modelli su un piccolo set di dati etichettati e un grande set di dati non etichettati. I dati etichettati dicono al modello cosa cercare, mentre quelli non etichettati lo aiutano a capire la struttura complessiva dei dati. In questo modo ottieni risultati migliori rispetto ad addestrare solo sui dati etichettati.
In cosa l'apprendimento semi-supervisionato è diverso dal supervisionato e dal non supervisionato?
Il supervisionato usa solo dati etichettati, dove ogni campione ha un output noto. Il non supervisionato usa solo dati non etichettati e trova pattern da solo. Il semi-supervisionato usa un piccolo dataset etichettato per definire il compito e un grande dataset non etichettato per imparare la struttura dei dati.
Quando dovrei usare l'apprendimento semi-supervisionato?
Usalo quando hai una piccola quantità di dati etichettati, una grande quantità di dati non etichettati e i tuoi dati hanno una struttura chiara, come cluster naturali o confini regolari tra classi. Se etichettare è costoso o richiede esperti del dominio - come nell'imaging medico o nell'analisi di testi legali - il semi-supervisionato ti aiuta a costruire modelli accurati senza etichettare tutto.
Cos'è il self-training nell'apprendimento semi-supervisionato?
Il self-training è una tecnica in cui il modello si addestra prima sui dati etichettati, poi prevede le etichette per i campioni non etichettati. Le previsioni più sicure vengono aggiunte al set etichettato come pseudo-etichette, e il modello si riaddestra sul dataset ampliato. Il rischio è che previsioni sbagliate nelle prime fasi vengano rafforzate nei round successivi, quindi dovresti impostare una soglia di confidenza alta.


