Classificazione discriminatoria di una classe con background negativo squilibrato, eterogeneo?


16

Sto lavorando per migliorare un classificatore supervisionato esistente, per classificare le sequenze di {proteine} come appartenenti a una classe specifica (precursori dell'ormone neuropeptide) o no.

Esistono circa 1.150 "positivi" noti, su uno sfondo di circa 13 milioni di sequenze di proteine ​​("Sfondo sconosciuto / scarsamente annotato"), o circa 100.000 proteine ​​rilevanti riviste, annotate con una varietà di proprietà (ma pochissime annotate in modo esplicito modo "negativo").

La mia precedente implementazione considerava questo come un problema di classificazione binaria: set positivo = proteine ​​contrassegnate come neuropeptidi. Set negativo: campionamento casuale di 1.300 campioni (totale) tra le proteine ​​rimanenti di una distribuzione approssimativamente simile in termini di lunghezza.

Ha funzionato, ma voglio migliorare notevolmente le capacità discriminatorie delle macchine (attualmente, è circa l'83-86% in termini di precisione, AUC, F1, misurato da CV, su più set negativi campionati casualmente).

I miei pensieri erano: 1) Rendere questo un problema multiclasse, scegliendo 2-3 diverse classi di proteine ​​che saranno sicuramente negative, per le loro proprietà / classe funzionale, insieme a (forse) un'altra serie campionata casualmente. (La priorità qui sarebbe insiemi negativi che sono simili nelle loro caratteristiche / caratteristiche all'insieme positivo, pur avendo caratteristiche definitive). 2) Apprendimento di una classe - Sarebbe bello, ma a quanto ho capito, è pensato solo per il rilevamento di anomalie e ha prestazioni peggiori rispetto agli approcci discriminatori.

*) Ho sentito parlare dell'apprendimento in PU, che suona pulito, ma sono un programmatore N00b e non conosco alcuna implementazione esistente per questo. (In Python / sci-kit impara).

Quindi, l'approccio 1 ha senso in un POV teorico? C'è un modo migliore per creare più set negativi? (Potrei anche semplicemente usare una massiccia scelta [50K] di proteine ​​"negative", ma sono tutte molto diverse l'una dall'altra, quindi non so quanto bene il classificatore le gestirà come un grande mix sbilanciato ). Grazie!


come probabilmente avete visto, l' articolo di Wikipedia sull'apprendimento delle PU fa riferimento a un documento in cui questo è stato applicato all'identificazione genica. Forse vale la pena capire / chiedere agli autori quale software hanno usato.
Andre Holzner,

C'è qualche discussione sull'apprendimento della PU in scikit. Impara qui: stackoverflow.com/questions/25700724/… (usando una macchina vettoriale di supporto 'di una classe')
Andre Holzner,

L'apprendimento della PU è un problema di classificazione standard a due classi con un avvertimento: ottimizzi l'area sotto la curva, non l'accuratezza della classificazione. È possibile utilizzare il pacchetto software Sofia ML per eseguire esattamente questo (nessuna programmazione richiesta). Sul lato pratico, annoti i tuoi esempi positivi con +1 e tutto il resto come -1 (sì, tutti gli altri dati senza etichetta che possono contenere elementi positivi).
Vladislavs Dovgalecs,

Risposte:


5

Il modo in cui vorrei attaccare il problema, in generale, è sfruttare l'analisi statistica come l'analisi dei componenti principali o i minimi quadrati ordinari per aiutare a determinare quali attributi all'interno di queste sequenze proteiche sono più adatti per classificare le proteine ​​come precursori dell'ormone neuropeptide.

Per fare ciò, dovrai convertire le sequenze proteiche in dati numerici, ma credo che sia già stato fatto un po 'di lavoro in tal senso usando formule sfruttate in Amino Acid PCA.

Vedi questi due link: http://www.ncbi.nlm.nih.gov/pubmed/24496727

http://www.ncbi.nlm.nih.gov/pubmed/16615809

Una volta che quel lavoro è stato fatto, proverei a classificare usando l'intero set di dati e un algoritmo di apprendimento di rinforzo, come Naive Bayes mentre dimagrendo i dati in ciò che PCA ha identificato come importante.

Il motivo per cui proverei a utilizzare Bayes è perché ha dimostrato di essere uno dei metodi migliori per determinare lo spam rispetto alla posta elettronica normale, che ha un set di dati similmente distorto.

Detto questo ...

Diminuire il numero o il tipo di classificazioni negative potrebbe distorcere i risultati di alcuni punti in un modo o nell'altro, ma non credo che vedrai che l'efficacia a lungo termine cambierà sostanzialmente fino a quando non farai il lavoro di gamba per determinare come rimuovere al meglio la confusione dai tuoi dati di allenamento. Ciò richiederà un esperto sul campo o un'analisi statistica.

Potrei essere completamente fuori dalla base. Sono interessato a vedere altre risposte, ma sono i miei 2 centesimi.


1
Ho già implementato l'estrazione delle funzionalità e un toolkit (la pubblicazione è in attesa di un controllo dei bug).
GrimSqueaker,

5

Apprendimento di una classe

Non sarei troppo veloce nel lanciare metodi di classificazione di una classe (opzione 2) - la chiave è modellare la classe positiva (minoranza) con il modello di una classe.

Ci sono state ricerche che dimostrano casi in cui la classificazione di una classe ha superato altri approcci come il campionamento di dati altamente squilibrati come spesso visto con compiti di classificazione delle proteine.

Non sono riuscito a trovare le ricerche che ho ricordato, ma ho trovato alcuni altri confronti, che mostravano l'uso di classificatori di una classe (tipicamente modellando la classe di minoranza) ottenuti con prestazioni buone o migliori rispetto alla classificazione binaria in genere con "negativi" campionati dal set di grandi dimensioni di proteine ​​non note per essere positive.

Inoltre, questo approccio offre anche il vantaggio di un runtime molto migliorato, poiché è sufficiente addestrare il classificatore sul set più piccolo e positivo. Un paio di documenti:

"Previsione delle interazioni proteina-proteina utilizzando metodi di classificazione di una classe e integrando diversi dati biologici"

"Un approccio di classificazione di una classe per sequenze e strutture di proteine"

Almeno proverei alcuni metodi di una classe e confronterò le prestazioni usando la validazione con i tuoi approcci di classificazione binari / multi-classe. Ci sono anche implementazioni open source per molti di questi, quindi non dovrebbe essere troppo costoso provarli, ad esempio LibSVM ha un'implementazione SVM di una classe. Inoltre, potrebbe rivelarsi utile per l'uso in un ensemble con classificatori binari, poiché potrebbero esserci più disaccordi nelle loro previsioni.

Incorporamento / raggruppamento di rappresentazioni di livello superiore

Sulla falsariga di ciò che stavi pensando con (1) e l'altro post che suggeriva PCA, approcci come il clustering, la codifica sparsa o persino la modellazione di argomenti - trattare ogni proteina come una stringa di documento e diverse famiglie di proteine ​​come argomenti diversi - potrebbero produrre una rappresentazione ciò potrebbe rendere semplice la classificazione delle proteine.

Vale a dire, è possibile identificare a quale gruppo / cluster appartiene una proteina o classificare le appartenenze al cluster / rappresentazioni incorporate.

Ad esempio, approcci di incorporamento come la codifica sparsa possono produrre rappresentazioni che rivelano anche a quale gruppo appartiene una proteina - così che alcuni insiemi di caratteristiche sono attivi (diversi da zero) per le proteine ​​nello stesso gruppo - il che può rendere molto più semplice la loro classificazione.

Inoltre, per la maggior parte dei metodi è possibile incorporare etichette di classe o appartenenza a cluster noti nel processo di incorporamento.

insieme

Gli ensemble di classificatori multipli tendono a funzionare meglio, specialmente quando i classificatori sono molto diversi e possono ottenere prestazioni comparabili individualmente.

Esistono almeno due modi per utilizzare gli ensemble per questo problema.

  1. È possibile creare un insieme di classificatori binari campionando più insiemi negativi della stessa dimensione e addestrando un classificatore su ciascuno di essi.
  2. È possibile creare un insieme da approcci diversi, come classificatori binari con diversi campioni negativi, combinati con un approccio di classificazione di una classe, combinato con modelli di classificazione addestrati sui dati incorporati.

2

Esistono tre approcci che potresti adottare: APP, OAA, AAO. APP è una discriminazione tra oggetti basata su tutte le possibili coppie di classi. OAA è l'uso di uno contro tutti (classi rimanenti) e AAO è tutto in una volta come l'uso di un test F per più classi contemporaneamente (o il test di Hotelling per MVN). APP e AAO sono in realtà più corse binarie di classificazione ma con più di due delle tue classi originali. Ognuno di questi approcci produce risultati diversi per vari classificatori impiegati.

Il campionamento casuale è una buona tecnica. Potresti anche provare a raggruppare tutti gli oggetti in centri usando k-mean e quindi usare i centri come nuovi oggetti. In entrambi i casi, i metodi di riduzione dimensionale lineare e non lineare potrebbero aiutare ad allontanarsi dalle grandi dimensioni del campione.

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.