Classificazione con dati parzialmente "sconosciuti"


11

Supponiamo che io voglia imparare un classificatore che accetta un vettore di numeri come input e fornisce un'etichetta di classe come output. I miei dati di allenamento consistono in un gran numero di coppie input-output.

Tuttavia, quando vengo a provare alcuni nuovi dati, questi dati sono in genere solo parzialmente completi. Ad esempio se il vettore di input ha una lunghezza di 100, solo 30 degli elementi potrebbero ricevere valori e il resto è "sconosciuto".

A titolo di esempio, considerare il riconoscimento dell'immagine laddove è noto che parte dell'immagine è occlusa. Oppure considera la classificazione in senso generale in cui è noto che parte dei dati è corrotta. In tutti i casi, so esattamente quali elementi nel vettore dei dati sono le parti sconosciute.

Mi chiedo come posso imparare un classificatore che funzionerebbe per questo tipo di dati? Potrei semplicemente impostare gli elementi "sconosciuti" su un numero casuale, ma dato che spesso ci sono più elementi sconosciuti di quelli noti, questa non suona come una buona soluzione. Oppure, potrei cambiare casualmente gli elementi nei dati di allenamento in "sconosciuto" e allenarmi con questi piuttosto che con i dati completi, ma ciò potrebbe richiedere un campionamento esaustivo di tutte le combinazioni di elementi noti e sconosciuti.

In particolare, sto pensando alle reti neurali, ma sono aperto ad altri classificatori.

Qualche idea? Grazie!


en.m.wikipedia.org/wiki/Missing_data potrebbe essere un punto di partenza.
Hatshepsut,

Penso che l'apprendimento semi-supervisionato sia più il caso in cui i dati di addestramento non siano completamente etichettati. Nel mio caso, tutti i miei dati di allenamento sono etichettati, ma le singole parti dei dati di test sono "sconosciute".
Karnivaurus,

Apprendimento semi-supervisionato con reti ladder: github.com/CuriousAI/ladder
itdxer

Risposte:


2

Penso che ci sia un modo ragionevole per farlo funzionare con le reti neurali.

p

Non l'ho mai visto prima, ma sarebbe molto simile al dropout (un metodo di regolarizzazione ben noto nelle reti neurali) nei neuroni di input, anziché nei neuroni nascosti. Non penso sia una buona idea farlo in generale, ma se sei costretto a farlo (come nel tuo caso), almeno è teoricamente abbastanza vicino a qualcosa che è stato conosciuto per funzionare.


1

Penso che ci siano alcune scelte che funzionano con qualsiasi classificatore:

  • Imputare i valori mancanti con un singolo valore, come la media o la mediana dal set di addestramento o un valore previsto dalle parti osservate dell'input, oppure utilizzare semplicemente un numero casuale o una costante.
  • Utilizzare diversi valori diversi per gli incogniti e aggregare i risultati, ad es. Mediali

Oltre a ciò, è possibile utilizzare classificatori basati su alberi (ad esempio foreste casuali) e se un albero deve valutare una divisione su una caratteristica mancante, potrebbe semplicemente passare i dati a entrambi i nodi figlio.

p(X,y)XyXXe media i risultati ponderati dalla probabilità di tale imputazione. Questo potrebbe essere fatto analiticamente in forma chiusa per alcuni classificatori, ad esempio un modello di analisi discriminante lineare, o approssimativamente campionando gli incogniti, ad esempio per una macchina Boltzmann limitata o le sue varianti profonde (che sono correlate alle reti neurali in avanti).


non penso che funzionerebbe. Usa un tipico esempio di visione artificiale, ogni pixel di un'immagine può essere associato a parti diverse di un oggetto. Esempio, il pixel (50,50) dell'immagine 1 è l'occhio di un gatto, ma il gatto si sposta leggermente nell'immagine 2, quindi (50, 50) è solo un pixel dello sfondo. Se la posizione di NA, ad es. occlusione casuale, varia in base all'osservazione, la tua imputazione non funzionerà.
horaceT
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.