Apprendimento incrementale per modelli di classificazione in R


11

Supponiamo di avere un classificatore (potrebbe essere uno qualsiasi dei classificatori standard come albero decisionale, foresta casuale, regressione logistica ecc.) Per il rilevamento di frodi utilizzando il codice seguente

library(randomForest)
rfFit = randomForest(Y ~ ., data = myData, ntree = 400) # A very basic classifier 

Say, Y is a binary outcome - Fraud/Not-Fraud

Ora, ho previsto un set di dati invisibile .

pred = predict(rfFit, newData)

Quindi ho ottenuto il feedback dalla squadra investigativa sulla mia classificazione e ho scoperto che ho fatto un errore nel classificare una frode come Non-Frode (ovvero un falso negativo ) . Esiste un modo per far capire al mio algoritmo che ha commesso un errore? vale a dire un modo per aggiungere un loop di feedback all'algoritmo in modo che possa correggere gli errori?

Un'opzione che posso pensare dall'alto della mia testa è costruire un in adaboost classifiermodo che il nuovo classificatore corregga l'errore di quello vecchio. o ho sentito qualcosa di Incremental Learningo Online learning. Ci sono implementazioni (pacchetti) esistenti in R?

È l'approccio giusto? o C'è un altro modo per modificare il modello invece di costruirlo da zero?


Hai trovato una soluzione? Ho lo stesso problema.
Blu3nx,

@ Blu3nx, per favore non usare le risposte per commentare le domande. Le risposte hanno lo scopo di rispondere a loro.
Tim

Non è una risposta, ma cosa ti impedisce di andare semplicemente myData $ Fraud [positionofincorrectvariable] = Valore corretto?
Dale C,

Risposte:


2

Una strategia di potenziamento può migliorare le prestazioni del tuo modello, quindi vale la pena provare. Per quanto riguarda l'apprendimento incrementale / online, non sono a conoscenza di alcun pacchetto in R che lo implementa (altri, per favore correggimi se sbaglio). In Scikit Learn ci sono classificatori fuori dal core che consentono l'apprendimento incrementale. Tuttavia, se sei legato all'utilizzo di R, potresti non avere altra scelta che scrivere il tuo modello incrementale. In entrambi i casi, esaminando i classificatori out-of-core di Scikit Learn potresti darti un'idea di dove iniziare.

Un altro dettaglio da tenere presente è la misura in cui l'aggiornamento del modello su un singolo falso positivo o falso negativo migliorerà le prestazioni del modello. Nel campo della frode, ci sono generalmente da migliaia a milioni di volte più casi di non frode rispetto alla frode. Pertanto, è importante cercare di imparare a discriminare correttamente ogni istanza di frode, ma l'aggiornamento di un modello su una singola istanza di frode probabilmente non modificherà il modello in modo significativo. Prendi in considerazione altre strategie per far sì che il modello attribuisca maggiore rilevanza alle istanze di frode.

Il modo più semplice per migliorare il tuo modello supervisionato, basato sul feedback degli investigatori umani sarebbe quello di costruire un modello separato dalle istanze corrette (cioè le istanze previste in modo errato che sono state correttamente etichettate). Potresti quindi far votare i tuoi due modelli sulla classificazione delle istanze future aggregando le loro iscrizioni alle classi previste. Ad esempio, ModelA può ritenere che Instance1 sia [Frode: 0,65, non fraudolento: 0,35], mentre ModelB ritiene che Instance1 sia [Frode: 0,47, Non fraudolento: 0,53]. La previsione dell'ensemble sarebbe quindi [Frode: (0.65 + 0.47) /2=0.56, Non frode: (0.35 + 0.53) /2=0.44].

Se il modello originale ha prestazioni migliori del caso, il numero di istanze che classifica correttamente sarà maggiore del numero erroneamente classificato. Pertanto, non si desidera attribuire lo stesso peso ai modelli se vengono addestrati su un numero sproporzionato di istanze. Esistono due semplici opzioni per gestire questa disparità: 1) attendere fino a quando non si accumulano abbastanza istanze corrette per approssimare circa il numero su cui è stato addestrato il modello originale, oppure 2) assegnare peso a ciascun modello in base alle prestazioni del modello su un set di validazione.


0

In passato ho svolto alcune ricerche sull'apprendimento online e incrementale. Ci sono alcune idee che devi prendere in considerazione.

Ogni classificatore può "fare" l'apprendimento incrementale, l'unico problema è che con alcuni è molto più difficile farlo. Non esiste un algoritmo di apprendimento incrementale in quanto tale, solo un modo per ottenere questo acquisto utilizzando gli algoritmi comuni. Normalmente, sceglieresti uno di essi e adatteresti il ​​modo in cui li addestra e fornisci i dati in batch o online.

È possibile farlo in due modi: a) Riqualificare il modello da zero ogni volta che arriva un nuovo campione (o set di campioni). Ovviamente questo non è l'ideale, ma se il tuo modello non è troppo complesso (il che significa che puoi eseguire un intero addestramento tra le istanze in arrivo) e limiti le dimensioni del tuo set di dati (scartando vecchi dati, nuovi dati o dati casuali e mantenendo un numero costante di istanze di addestramento ), può funzionare in alcuni scenari. Un bell'esempio di questo apprendimento "pseudo-incrementale" con macchine vettoriali di supporto può essere trovato qui .

b) Trova un modo per aggiornare i parametri / i pesi del tuo modello modificando "un po '" questi parametri solo quando la previsione era sbagliata. Le reti neurali sono naturalmente ottime per questo in quanto è possibile addestrare un modello, salvare i pesi e quindi riqualificarsi con nuovi lotti di dati man mano che arrivano. Inoltre, puoi modificare il tasso di apprendimento per dare maggiore / minore rilevanza ai tuoi nuovi input. Se puoi scegliere qualsiasi algoritmo per il tuo caso, questa sarebbe la mia scelta. Tuttavia, ci sono molti altri metodi: ad es. Negli approcci bayesiani è possibile modificare le distribuzioni applicando incrementi / decrementi numerici a determinati parametri (vedere questo per un altro esempio).

Fai qualche lettura e cerca approcci precedenti che corrispondano a qualunque cosa tu voglia il comportamento dell'algoritmo di apprendimento. All'inizio può sembrare scoraggiante impostare tutto per te invece di usare questa o quella libreria, ma diventa super freddo quando arrivi al punto in cui ti senti responsabile di tutto il processo di apprendimento del tuo modello.

In bocca al lupo!

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.