Etichette multiple in algoritmo di apprendimento supervisionato


10

Ho un corpus di testo con argomenti corrispondenti. Ad esempio "A rapper Tupac was shot in LA"ed è stato etichettato come ["celebrity", "murder"]. Quindi praticamente ogni vettore di caratteristiche può avere molte etichette (non la stessa quantità. Il primo vettore di caratteristiche può avere 3 etichette, seconda 1, terza 5).

Se avessi una sola etichetta corrispondente a ciascun testo, proverei un classificatore Naive Bayes , ma non so davvero come procedere se posso avere molte etichette.

Esiste un modo per trasformare Naive Bayes in un problema di classificazione multi etichetta (se esiste un approccio migliore, per favore fatemi sapere)?

PS alcune cose sui dati che ho.

  • circa 10.000 elementi nel set di dati
  • il testo è di circa 2-3 frasi
  • massimo 7 etichette per testo

@fordprefect Multinomial Naive Bayes utilizza una distribuzione multinomiale per le probabilità di alcune funzionalità data una classe: . L'OP vuole che un classificatore gestisca più output come descritto da TheGrimmScientist. p(fio|c)
Robert Smith,

Risposte:


6

Per cominciare, Naive Bayes probabilmente non è appropriato qui. Presuppone l'indipendenza tra gli input (quindi il "Naive") e le parole in una frase sono molto dipendenti.

Ma, supponendo che tu voglia davvero correre con NB come algoritmo per iniziare la tua sperimentazione, ci sono due opzioni che prenderei in considerazione:

Ungraceful: molti classificatori NB

Questo sarebbe un approccio alternativo. Crea un corupus di tutte le parole osservate come il tuo vettore di input. Crea un corpus da tutti i tag che sono osservati come il tuo vettore di output. Un classificatore NB con più output equivale ad avere più classificatori NB con un output ciascuno (quindi fai quello che è più facile da implementare in qualunque framework software stai usando). Tratta ogni elemento come un campione di addestramento in cui un dato input (una parola) è un 1se quella parola è presente e un 0se quella parola non lo è. Utilizzare lo stesso schema binario per l'output.

Questo bruto forza l'applicazione del classificatore NB ai tuoi dati e ti lascia a trovare un significato continuando a estrarre l'enorme set di classificatori che ti rimarranno.

Più grazioso: elabora i tuoi dati

Questo è l'approccio che consiglierei se si desidera eseguire con un classificatore NB a più classi.

Il tuo obiettivo qui è capire come mappare ogni set di tag a una singola classe. Sono sicuro che esiste una sorta di schema di clustering o analisi di rete (forse ["celebrità"] collegata a ["omicidio"] potrebbe diventare un segmento ["dissolutezza"]) che mapperà sensibilmente i tuoi tag su un singolo cluster. Se trattate i tag come nodi e due tag dati insieme come collegamenti, allora dovrete esaminare gli algoritmi di rilevamento della comunità (che è dove inizierei). Ma, se vuoi solo che qualcosa funzioni, allora una sorta di hack sui tag che converte un elenco di tag in solo il tag che è più comunemente visto nel tuo set di dati sarebbe sufficiente.

Questo metodo carica anticipatamente il lavoro di pulizia dei dati e renderebbe più semplice la comprensione dell'output del classificatore NB.


grazie per il tuo contributo, se hai un'idea di cosa sarebbe meglio allora NB, per favore fatemelo sapere.
Salvador Dali,

1
la sezione "soluzioni esistenti" di questo mazzo di diapositive contiene tutto ciò a cui saprei rispondere, e altro (supponendo che non ti serva specificamente un classificatore e desideri solo un modo per usare i tag). Spero ti sia utile.
TheGrimmScientist,

@TheGrimmScientist Non sarebbe ragionevole usare il primo approccio? Se hai un vettore di funzioni f1, f2, f3 e diciamo 3 etichette per questo vettore, possiamo dividerlo in 3 vettori (tutti contenenti le stesse caratteristiche f1, f2, f3) con etichette diverse come output. Quindi è possibile utilizzare Naive Bayes come al solito. Non sono sicuro che sia quello che avevi in ​​mente.
Robert Smith,
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.