Unione di dati sparsi e densi nell'apprendimento automatico per migliorare le prestazioni


17

Ho caratteristiche sparse che sono predittive, inoltre ho alcune caratteristiche dense che sono anche predittive. Devo combinare queste funzionalità insieme per migliorare le prestazioni complessive del classificatore.

Ora, il problema è che quando provo a combinarli insieme, le funzioni dense tendono a dominare di più rispetto alle funzioni sparse, offrendo quindi un miglioramento dell'1% dell'AUC rispetto al modello con solo funzioni dense.

Qualcuno ha riscontrato problemi simili? Apprezzo molto gli input, un po 'bloccati. Ho già provato molti classificatori diversi, combinazione di classificatori, trasformazioni di funzionalità ed elaborazione con algoritmi diversi.

Grazie in anticipo per l'aiuto.

Modifica :

Ho già provato i suggerimenti forniti nei commenti. Quello che ho osservato è che, per quasi il 45% dei dati, le funzionalità sparse funzionano davvero bene, ottengo un AUC di circa 0,9 con solo funzionalità sparse, ma per le restanti funzioni dense funzionano bene con un AUC di circa 0,75. In un certo senso ho provato a separare questi set di dati, ma ottengo l'AUC di 0,6, quindi non posso semplicemente addestrare un modello e decidere quali funzionalità utilizzare.

Per quanto riguarda lo snippet di codice, ho provato così tante cose, che non sono sicuro di cosa esattamente condividere :(


Quanto sono scarne le tue caratteristiche? Sono riempiti all'1% o anche meno?
João Almeida,

2
Inoltre, dovresti notare che se le tue funzionalità sono sparse, dovrebbero solo aiutare a classificare una piccola parte del tuo set di dati, il che significa che l'accuratezza non dovrebbe cambiare in modo significativo. Questa è una specie di ipotesi, poiché non so quali sono le caratteristiche del tuo set di dati.
João Almeida,

@ JoãoAlmeida Non sono così rari. Sono riempiti per circa il 5%. Il problema è quando guardo la differenza nelle previsioni da due modelli, in cui le previsioni differiscono, il modello con caratteristiche sparse tende a funzionare meglio, ecco perché mi aspettavo che vedesse il potenziamento dell'AUC e quando le combinavo con caratteristiche dense . Sto ricevendo un impulso, ma sembra molto basso.
Sagar Waghmode

hum ... Non ho idea per te allora
João Almeida

ho incontrato lo stesso problema, forse semplicemente mettere la funzione densa e sparsa in un singolo modello non è una buona scelta. forse puoi provare un modello ampio e profondo. largo per funzioni sparse e profondo per funzioni dense, se hai provato questo metodo, per favore dimmi la risposta.
Jianye Ji,

Risposte:


6

Sembra un lavoro per l'analisi dei componenti principali. In Scikit PCA è implementato bene e mi ha aiutato molte volte.

PCA, in un certo senso, combina le tue funzionalità. Limitando il numero di componenti, si recupera il modello con dati senza rumore (nel migliore dei casi). Perché il tuo modello è buono come i tuoi dati.

Considera di seguito un semplice esempio.

from sklearn.pipeline import Pipeline
pipe_rf = Pipeline([('pca', PCA(n_components=80)),
                    ('clf',RandomForestClassifier(n_estimators=100))])
pipe_rf.fit(X_train_s,y_train_s)

pred = pipe_rf.predict(X_test)

Perché ho scelto 80? Quando tracciamo la varianza cumulativa, la ottengo di seguito, il che mi dice che con ~ 80 componenti, raggiungo quasi tutta la varianza. cumulative variance

Quindi direi di provarlo, usalo nei tuoi modelli. Dovrebbe aiutare.


4

Il modo migliore per combinare le funzionalità è attraverso metodi ensemble. Fondamentalmente ci sono tre diversi metodi: insaccamento, potenziamento e accatastamento. Puoi usare Adabbost aumentato con la selezione delle caratteristiche (in questo caso sia caratteristiche sparse che dense) o basato sullo stacking (caratteristica casuale - sottospazio casuale) Preferisco la seconda opzione che puoi addestrare un insieme di studenti di base (decisioni. Alberi) usando casuale sottoinsiemi e funzionalità casuali (mantieni gli apprendenti della base di allenamento fino a quando non copri l'intera serie di funzioni) Il passaggio successivo è testare il set di formazione per generare i metadati. Usa questi metadati per addestrare un meta classificatore. Il meta classificatore capirà quale caratteristica è più importante e quale tipo di relazione dovrebbe essere utilizzata


Puoi condividere la documentazione pertinente? Non hai capito esattamente cosa intendevi?
Sagar Waghmode,

Puoi leggere un articolo sul picchettamento di "problemi nelle tecniche di impilamento, 1999" leggi su impilamentoC. È molto importante sapere che sto parlando dell'intero vettore (ad esempio 1x36 in caso di Hog) come una caratteristica, ma non delle dimensioni al suo interno. È necessario tenere traccia di quale funzione utilizzata con quale studente di base. Fai attenzione al problema del sovradimensionamento
Bashar Haddad,

Se fornisci maggiori dettagli sul database, il numero di classi, il numero di campioni, il codice, quali cose hai provato, quali cose hai notato, hai problemi di squilibrio dei dati, campioni rumorosi, ecc. Tutti questi dettagli sono importanti e possono aiutare a selezionare il metodo migliore. Dammi maggiori dettagli se questo va bene e posso aiutarti in un modo migliore
Bashar Haddad,

1

I gruppi di variabili possono essere multicollineari o la conversione tra rado e denso potrebbe andare storta. Hai mai pensato di utilizzare un classificatore / classificazione di voto? http://scikit-learn.org/stable/modules/ensemble.html In questo modo potresti affrontare entrambi i problemi di cui sopra.


Ho già provato le tecniche di ensemble e i classificatori di voto. Ancora niente fortuna.
Sagar Waghmode,

Quindi vedi molte sovrapposizioni tra le previsioni dei due set di dati? Potrebbe esserci davvero nessuna nuova informazione? Cioè i dati raccontano la stessa storia.
Diego,

si, ho fatto esattamente questo. Sebbene le previsioni non siano del tutto diverse, il numero di campioni in cui le previsioni differiscono è piuttosto elevato (circa il 15-20%) dei dati. Per questi modelli il modello con caratteristiche sparse ha prestazioni migliori rispetto a quello del modello con caratteristiche dense. Il mio punto è se le caratteristiche sparse funzionano meglio, perché non vengono come caratteristiche importanti in nessuno dei modelli che ho provato finora.
Sagar Waghmode,

Quale algoritmo predittore usi?
Diego,

Ho provato alcuni algoritmi e ho optato per Gradient Boosted Model, inoltre uso abbastanza le foreste casuali per il mio problema.
Sagar Waghmode,

1

Oltre ad alcuni dei suggerimenti di cui sopra, consiglierei di utilizzare un approccio alla modellazione in due passaggi .

  1. Utilizzare prima le funzionalità sparse e sviluppare il modello migliore.
  2. Calcola la probabilità prevista da quel modello.
  3. Inserisci quella stima di probabilità nel secondo modello (come funzionalità di input), che incorporerebbe le funzionalità dense. In altre parole, utilizzare tutte le funzionalità dense e la stima della probabilità per la costruzione del secondo modello.
  4. La classificazione finale si baserà quindi sul secondo modello.

0

Prova PCA solo su funzionalità sparse e combina l'output PCA con funzionalità dense.

Quindi otterrai un set denso di funzionalità (originali) + un set denso di funzionalità (che erano originariamente sparse).

+1 per la domanda. Ti preghiamo di aggiornarci con i risultati.


Caspita, questo ha effettivamente abbattuto l'AUC :( Non sono sicuro, cosa significhi, devo controllare l'importanza della funzione e tutto il resto. Ma la mia filosofia è che, su circa 2.3k caratteristiche sparse, ho usato 1k caratteristiche che spiegavano il rapporto di varianza 0,97, questa perdita di informazioni potrebbe aver fatto cadere l'AUC.
Sagar Waghmode,

Interessante. Grazie per la condivisione. Abbiamo un set di dati molto simile al tuo (funzionalità sparse 1k-2k). Solo per curiosità, quanti componenti principali hai generato? Se quel numero è troppo basso, questo potrebbe spiegare perché l'AUC è diminuita.
Tagar,

Come ho già detto, ho generato 1k componenti principali che spiegavano la varianza di 0,97.
Sagar Waghmode,
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.