Come prevedere il risultato con solo casi positivi come allenamento?


21

Per semplicità, supponiamo di lavorare sul classico esempio di e-mail spam / non spam.

Ho un set di 20000 e-mail. Di questi, so che 2000 sono spam ma non ho alcun esempio di e-mail non spam. Vorrei prevedere se i restanti 18000 sono spam o meno. Idealmente, il risultato che sto cercando è una probabilità (o un valore p) che l'e-mail sia spam.

Quale algoritmo (i) posso usare per fare una previsione ragionevole in questa situazione?

Al momento, sto pensando a un metodo basato sulla distanza che mi direbbe quanto sia simile la mia e-mail a una e-mail di spam nota. Quali opzioni ho?

Più in generale, posso usare un metodo di apprendimento supervisionato o devo necessariamente avere casi negativi nella mia formazione per farlo? Sono limitato ad approcci di apprendimento senza supervisione? E i metodi semi supervisionati?


1
Qualsiasi algoritmo di apprendimento che utilizzerai prevede che tutte le e-mail saranno spam. Devi avere esempi delle due categorie per ogni apprendimento sensato.
JohnRos,

OK, ciò escluderebbe un classico approccio di apprendimento supervisionato. Ma esiste un algoritmo che restituisce una sorta di metrica di somiglianza? Ad esempio: questa e-mail è molto simile a una e-mail di spam, l'altra no.
enricoferrero,

6
@JohnRos non è vero, l'apprendimento da dati positivi e senza etichetta è un argomento importante nell'apprendimento semi-supervisionato e non è niente come tu descrivi.
Marc Claesen,

5
@MarcClaesen: non avevo familiarità con questa (molto bella) linea di ricerca. Vedo che quella magia è nell'ipotesi che i dati senza etichetta siano una miscela di spam e non spam, il che rende il problema risolvibile.
JohnRos,

2
@JohnRos esattamente, e sono d'accordo con il fattore cool. Quello che trovo davvero interessante è il fatto che recentemente siamo stati in grado di mostrare come calcolare le metriche delle prestazioni tradizionali basate su tabelle di contingenza (ad es. Accuratezza, precisione, richiamo, ...) senza negativi noti !
Marc Claesen,

Risposte:


19

Questo si chiama apprendimento da dati positivi e senza etichetta, o apprendimento PU in breve, ed è una nicchia attiva dell'apprendimento semi-supervisionato.

In breve, è importante utilizzare i dati senza etichetta nel processo di apprendimento in quanto produce modelli significativamente migliorati rispetto ai cosiddetti classificatori a classe singola che sono addestrati esclusivamente su positivi noti. I dati senza etichetta possono essere incorporati in diversi modi, gli approcci predominanti sono i seguenti:

  • in qualche modo inferire una serie di probabili negativi dai dati senza etichetta e quindi formare un modello supervisionato per distinguere i positivi noti da questi negativi dedotti.
  • considera l'insieme senza etichetta come negativo e in qualche modo tiene conto del rumore dell'etichetta che è noto essere presente.

Sono attivo in questo campo e, piuttosto che riassumerlo qui per te, ti consiglio di leggere due dei miei articoli e i relativi riferimenti per ottenere una panoramica del dominio:

  • Una tecnica all'avanguardia per apprendere modelli da dati positivi e senza etichetta (pubblicazione formale disponibile qui ): http://arxiv.org/abs/1402.3144
  • Una tecnica per calcolare metriche prestazionali comunemente usate senza negativi noti (in fase di revisione, è la prima nel suo genere): http://arxiv.org/abs/1504.06837

1
Eccellente! Mille grazie per i riferimenti. Il RESVM e l'SVM insaccato sembrano funzionare in modo simile in un'impostazione di apprendimento PU. Puoi consigliare implementazioni (preferibilmente in R) di entrambi gli algoritmi? Nessuno dei due sembra essere incluso nel cursore, purtroppo.
enricoferrero,

1
@enricoferrero Sì, si comportano in modo simile a meno che non ci siano falsi positivi (noti), nel qual caso RESVM supera significativamente il bagging SVM (ho progettato RESVM a tale scopo, poiché l'applicazione su cui lavoro ha falsi positivi). Non penso che ci siano implementazioni R prontamente disponibili, ma è possibile implementarle entrambe facilmente avvolgendo un'implementazione SVM come kernlabo e1071. Si noti che sia l'insaccamento SVM che RESVM hanno un numero di iperparametri che è necessario ottimizzare, per i quali consiglio la libreria Optunity (ha un'interfaccia R).
Marc Claesen,

1
@enricoferrero Ho un'implementazione da riga di comando di RESVM disponibile su github.com/claesenm/resvm , anche se quel codice non è molto ben rifinito . Il repository specifico è scritto in Python e viene utilizzato come driver per il pacchetto EnsembleSVM .
Marc Claesen,

Sembra che un'altra buona opzione per un algoritmo SVM insaccato potrebbe essere quella di utilizzare il pacchetto mlr in R con un wrapper di insaccamento attorno a uno studente SVM .
enricoferrero,

7

Suppongo che non ci siano tanti casi di spam nei tuoi 18000 casi. Per utilizzare un approccio di apprendimento supervisionato, è necessario disporre di più di 1 categoria / classe nei dati. Poiché sai che 2000 casi sono spam, puoi etichettare i restanti 18000 casi come "categoria sconosciuta" e formare qualsiasi modello di apprendimento supervisionato per prevedere se un caso rientra nella categoria spam o sconosciuta. Quindi controlla l'accuratezza del tuo modello fuori campione per vedere quanto bene il modello esegue per distinguere tra le 2 categorie. Se funziona bene, allora la mia ipotesi di alcuni casi di spam nella categoria "sconosciuto" è giustificata. Se non funziona bene, dovrai utilizzare uno studente non supervisionato (come kmean, ecc.) Per raggruppare e identificare gruppi omogenei separati nei tuoi dati. Quindi identifica quali cluster contengono la maggior parte delle 2000 e-mail di spam, e quali no, ed etichettarli rispettivamente come spam e non spam. Successivamente, puoi procedere con la modellazione utilizzando uno studente supervisionato come descritto in precedenza.


2

Ciò di cui parla l'OP è un compito di classificazione di una classe, che è molto impegnativo.

Ci sono molti articoli su questo compito in diversi campi di ricerca. Ho anche scritto uno schema di verifica autorevole intrinseca efficiente basato sull'apprendimento di ensemble . È molto facile adattarlo per classificare lo spam / non spam, piuttosto che gli autori. Provalo e fammi sapere se hai bisogno di ulteriori dettagli ...


Ottengo un errore 404 quando seguo il tuo link.
enricoferrero

C'era un errore di battitura. Scusatemi, dovrebbe funzionare ora ;-)
Eccezione non gestita
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.