Costruisci un classificatore binario con solo dati positivi e senza etichetta


11

Ho 2 set di dati, uno con istanze positive di ciò che vorrei rilevare e uno con istanze senza etichetta. Quali metodi posso usare?

Ad esempio, supponiamo di voler comprendere il rilevamento di e-mail di spam sulla base di alcune caratteristiche e-mail strutturate. Abbiamo un set di dati di 10000 e-mail di spam e un set di dati di 100000 e-mail per i quali non sappiamo se sono spam o meno.

Come possiamo affrontare questo problema (senza etichettare manualmente nessuno dei dati senza etichetta)?

Cosa possiamo fare se disponiamo di ulteriori informazioni sulla percentuale di spam nei dati senza etichetta (ovvero se stimiamo che tra il 20-40% delle 100000 e-mail senza etichetta sono spam)?


1
Al post dovrebbero essere aggiunti i tag semi-supervisionati e pu-learning. Questi tag non esistono ancora e al momento non riesco a crearli.
DaL,

@DanLevin Sì, [tag: apprendimento semi-supervisionato] ha un senso. Aggiunto :) Non sono sicuro della parte pu-learning (almeno non ne sono consapevole), quindi qualcun altro può farlo!
Dawny33

1
L'apprendimento PU è un caso specifico di apprendimento semi supervisionato. È meno comune (risultati 7K su Google) quindi semi supervisionato (298K risultati su Google) che questa domanda è PU (il set di dati etichettato è solo positivo). Mentre l'argomento viene discusso dall'Accademia (ad es. Cs.uic.edu/~liub/NSF/PSC-IIS-0307239.html ) è possibile che questa domanda rimanga sola con questo tag per un bel po '.
DaL,

Risposte:


7

Il mio suggerimento sarebbe di tentare di creare un qualche tipo di clustering sui dati senza etichetta che si avvicini in qualche modo a un set di dati etichettato. La logica è più o meno come segue:

  • Hai qualche vettore di funzionalità per rappresentare i tuoi documenti
  • Sulla base di quel vettore di funzionalità, è possibile creare un numero di cluster diversi, con metodi di clustering fuzzy, rough o basati su classe
  • Sapendo come appare un esempio positivo, è possibile valutare rapidamente la somiglianza complessiva di un cluster con il cluster positivo
  • Sapendo che in realtà dovrebbero esserci solo due cluster, è possibile regolare gli iperparametri sul metodo di clustering in modo che le due metriche sopra riportate siano sempre più vicine alla soddisfazione
  • Con i due cluster, hai quella che è probabilmente una stretta approssimazione di un set di dati con etichetta, che puoi quindi utilizzare come un corpus standard d'argento per addestrare effettivamente il tuo modello

Spero che abbia senso, se stai specificamente cercando algoritmi di clustering, alcuni che mi piacciono personalmente che potrebbero essere buoni in questo scenario sono FLAME e tsne . In alternativa, guardare la spettacolare libreria gensim in Python ti farà fare molta strada verso il clustering che stai cercando.

Spero che ti aiuti e abbia un senso, lascia un commento se hai qualche domanda.


Grazie per la tua risposta. Capisco bene: il tuo punto di partenza è unire i 2 set di dati?
nassimhddd,

@ cafe876 Questo è certamente un modo per iniziare, e quindi provare a ricreare fondamentalmente un cluster che si avvicina molto all'originale.
indico,

3

Il tuo problema appartiene alla struttura dell'apprendimento della PU (solo aspetti positivi, molti senza etichetta).

È anche vicino ai quadri più comuni dell'apprendimento semi supervisionato (pochi aspetti positivi e negativi, molti senza etichetta).

Ci sono molti documenti di indagine che puoi cercare sul campo.

Un metodo classico sul campo, che è stato testato anche sullo spam come nel tuo caso, è il co-training Nel co-training costruisci due studenti indipendenti (ad esempio, uno basato sul contenuto della posta e uno basato sullo schema di invio) e usi i risultati di uno dei per addestrare l'altro e viceversa.


2

Allena 2 modelli generativi, uno per ogni set di dati (solo spam, spam più ham), che ti daranno la probabilità che un punto dati venga estratto dalla stessa distribuzione di probabilità dei dati di allenamento. Assegna e-mail come spam o ham in base al modello che offre la più alta probabilità del documento derivante dai dati di formazione utilizzati per addestrarlo. Esempi di modelli generativi sono RBM, autoencoders (in quel caso, quale modello ha l'errore di ricostruzione più basso). Esistono probabilmente anche alcuni modelli generativi bayesiani che assegneranno una probabilità a un punto dati basato su alcuni dati di addestramento.

L'opzione migliore sarebbe quella di impiegare del tempo per curare un secondo set di dati contenente solo ham. Ciò ti darà una maggiore precisione di classificazione. Supponendo una percentuale inferiore di spam per bloccare le e-mail, ciò non dovrebbe essere troppo difficile. Puoi anche usare Mechanical Turk se non hai il tempo o le risorse (o stagisti / laureati o altra manodopera a basso costo).


Grazie per la tua risposta. È un ottimo esempio di cosa possono fare i modelli generativi che i modelli discriminanti non possono fare.
nassimhddd,
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.