modello di classificazione binario per i dati non bilanciato
-
16-10-2019 - |
Domanda
Ho un insieme di dati con le seguenti specifiche:
- Formazione insieme di dati con 193,176 campioni con 2.821 positivi
- Prova Dataset con 82,887 campioni con 673 positivi
- Ci sono 10 caratteristiche.
Voglio effettuare una classificazione binaria (0 o 1). Il problema che sto affrontando è che i dati è molto sbilanciato. Dopo la normalizzazione e la scalatura dei dati insieme ad alcuni di ingegneria funzionalità e l'utilizzo di un paio di algoritmi diversi, questi sono i migliori risultati che ho potuto realizzare:
mean square error : 0.00804710026904
Confusion matrix : [[82214 667]
[ 0 6]]
cioè solo 6 risultati positivi corretti. Questo è utilizzando la regressione logistica. Qui ci sono le varie cose che ho provato con questo:
- algoritmi diversi, come foresta casuale, DecisionTree, SVM
- La modifica del valore dei parametri per chiamare la funzione
- Alcuni ingegneria caratteristica intuizione base per includere funzionalità composti
Ora, le mie domande sono:
- Che cosa posso fare per migliorare il numero di colpi positivi?
- Come si può determinare se v'è un sovradattamento in tal caso di un? (Ho provato la stampa, ecc)
- A che punto si potrebbe concludere se forse questa è la misura migliore avrei potuto? (Che sembra triste considerando solo 6 risultati su 673)
- C'è un modo ho potuto fare gli esempi positivi del campione pesano di più in modo che il riconoscimento di forme migliora portando a più colpi?
- Quali trame grafiche potrebbero aiutare a rilevare i valori erratici o qualche intuizione su quale modello si adatterebbe al meglio?
Sto usando lo scikit-learn biblioteca con Python e tutte le implementazioni sono funzioni di libreria.
modifica
Ecco i risultati con pochi altri algoritmi:
a caso Foresta classificatore (n_estimators = 100)
[[82211 667]
[ 3 6]]
Decision Trees:
[[78611 635]
[ 3603 38]]
Soluzione
-
Dal momento che si sta facendo classificazione binaria, hai provato la regolazione della soglia di classificazione? Dal momento che il vostro algoritmo sembra piuttosto insensibile, vorrei provare a ridurre e controllare se c'è un miglioramento.
-
È sempre possibile utilizzare o un terreno di un parametro del modello contro la formazione e l'errore di convalida per determinare se il modello è sovradattamento. Sembra che è in fase di montaggio nel tuo caso, ma questo è solo l'intuizione.
-
Bene, in ultima analisi, dipende dal vostro set di dati, ed i diversi modelli si è tentato. A questo punto, e senza ulteriori prove, non ci può non essere una risposta definitiva.
-
Senza la pretesa di essere un esperto sul tema, ci sono una serie di tecniche diverse si può seguire (suggerimento: primo link su google ), ma a mio parere si deve prima assicurarsi di scegliere con attenzione il vostro funzione di costo, in modo che essa rappresenta ciò che sei in realtà cercando.
-
Non sei sicuro di cosa si intende per modello intuizione, si può elaborare?
A proposito, quali sono stati i risultati con i diversi algoritmi provato? Erano diverso?
Altri suggerimenti
Poiché i dati è molto distorta, in tal caso si può anche provare la formazione modello sovra-campionamento dei dati.
percosse e ADASYN sono alcune delle tecniche che possiamo usare per over-campione di dati.