Il modo migliore per classificare set di dati con tipi misti di attributi


13

Vorrei sapere qual è il modo migliore per classificare un set di dati composto da tipi misti di attributi, ad esempio testuale e numerico. So di poter convertire testuale in booleano, ma il vocabolario è vario e i dati diventano troppo scarsi. Ho anche cercato di classificare i tipi di attributi separatamente e combinare i risultati attraverso tecniche di meta-apprendimento, ma non ha funzionato bene.

Risposte:


11

Le risposte di Christopher sembrano molto ragionevoli. In particolare i metodi basati su alberi funzionano bene con questo tipo di dati perché si ramificano su caratteristiche discriminatorie. È un po 'difficile da dire senza conoscere la tua specifica applicazione, ma in generale se pensi che alcune delle tue funzioni potrebbero essere significativamente più discriminanti di altre, potresti provare alcune tecniche di riduzione della dimensionalità per ripulire un po'.

Inoltre, se si utilizza una tecnica di riduzione della dimensionalità, si ottiene un formato leggermente più robusto per il vettore di funzionalità (in genere si tratta di vettori numerici diritti anziché tipi di dati misti), che potrebbe consentire di sfruttare diversi metodi. Potresti anche esaminare le funzionalità di ingegneria manuale. Con le funzioni appositamente progettate a mano, Random Forestsarai in grado di avvicinarti allo stato dell'arte nella maggior parte delle attività.


2
Un altro voto per la riduzione della dimensionalità. Solo alcune aggiunte: Principal Component Analysiso Non-Negative Matrix Factorizationridurrà il numero di variabili, arricchirà i dati sparsi e trasformerà tutte le variabili in quantitative. Inoltre, valutando la qualità del modello di riduzione della dimensionalità, l'autore della domanda può stimare l'utilità delle variabili testuali.
Sobach,

@indico ottima risposta. Potresti darci un riferimento in un libro o in un documento, che gli algoritmi basati su alberi funzionano meglio con dati di tipo misto (dati categorici e quantitativi)?
ZelelB,

6

È difficile rispondere a questa domanda senza sapere di più sui dati. Detto questo, vorrei offrire i seguenti consigli:

La maggior parte delle tecniche di apprendimento automatico è in grado di gestire dati di tipo misto. I metodi basati su alberi (come AdaBoost e Random Forests) funzionano bene con questo tipo di dati. Il problema più importante è in realtà la dimensionalità, di cui hai ragione a essere preoccupato.

Suggerirei di fare qualcosa per ridurre quella dimensionalità. Ad esempio, cerca le parole o le frasi che separano meglio i dati e scarta le altre parole (nota: i metodi basati sull'albero lo fanno automaticamente).


2

Con le poche informazioni che hai fornito sulla natura dei tuoi dati, ti consiglio di seguire il seguente approccio:

  1. Converti i dati di testo in categorie. Puoi provare diverse alternative per quante informazioni devono contenere le categorie, ma per ogni variabile devono esistere categorie specifiche. Ad esempio, assumerò una variabile che proviene da un campo di testo di un questionario di indagine riguardante il modo preferibile di andare al lavoro.

    All'inizio, dobbiamo assicurarci che le risposte con un significato simile siano scritte nello stesso modo e appartengano alla stessa categoria (ad esempio "in bicicletta", "in bicicletta", "in bicicletta" hanno tutti lo stesso significato). Quindi puoi provare a fonderti ulteriormente in categorie meno dettagliate (ad esempio unisci "tram", "metro" e "bus" in "Mezzi di trasporto pubblico") o anche di più (ad esempio "Walking", "Jogging", "Cycling" in " Attività fisica ") a seconda di ciò che stai cercando di scoprire.

    Puoi anche inserire alcune combinazioni diverse nel tuo set di dati e quindi i passaggi successivi determineranno quali verranno utilizzati per l'analisi. Nei casi in cui i dati di testo possono essere "tradotti" nelle variabili ordinate, assicurati di farlo (ad es. Se hai "piccolo, medio, alto" trasformalo in "1,2,3").

  2. Trasforma le tue variabili categoriali (non quelle ordinali) in variabili fittizie (binarie). La maggior parte degli algoritmi di selezione delle caratteristiche / classificazione lo fa automaticamente, ma assicurati che sia il caso di quelli selezionati. Mi rendo conto che la dimensionalità dei dati diventerà piuttosto grande a questo punto, ma questo sarà gestito nel passaggio successivo.

  3. Applicare una tecnica di selezione delle caratteristiche / riduzione della dimensionalità sui dati. Puoi trovare una recensione utile di tali tecniche qui . Se stai usando Python, gli strumenti di sklearn ti offrono molte opzioni (vedi maggiori dettagli qui ). Assicurati di utilizzare una tecnica che consideri anche la multicollinearità. Vorrei provare l'analisi dei componenti principali o un algoritmo basato su alberi.

  4. Per classificare i dati, andrei con Decision Tree Classifier (disponibile anche tramite sklearn ). Esegue anche la selezione delle funzioni impostando i pesi di importanza per le funzioni. È possibile impostare il livello di dettaglio sull'albero generato in base alle opzioni (ad es. Max_depth, min_samples_split) Assicurarsi di regolare il livello di dettaglio in base alla convalida incrociata per evitare un eccesso di adattamento.

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.