Prevedere eventi rariSto lavorando con un cliente su una prova Pro. Stanno lavorando su un dataset di circa 3 milioni di righe, cercando di costruire un modello predittivo per prevedere i guasti, che si verificano lo 0,1% delle volte (risposta binaria, fattori continui). I guasti sono killer e accetterebbero volentieri un modello in grado di catturare tali guasti anche a costo di perdere i passaggi.
Ho buttato via quasi tutto quello che so fare. Per mantenere bassi i tempi di esecuzione, hanno sottoimpostato il file originale a una percentuale compresa tra l'1 e il 10% dei dati originali, provando varie tecniche di ponderazione, Torch, XG Boost e Model Screening. Boosted Tree ha fornito il maggiore successo, ma in ogni caso il modello sviluppato sul sottoinsieme è troppo sovradimensionato per essere utile su un set di dati di dimensioni simili ma unicamente diverso o sul set di dati più grande.
Dovrei dare più peso (attualmente do peso a pass/fail a 1/100), creare un sottoinsieme di dati in cui i fallimenti sono sovrarappresentati? Ci sono iperparametri che possono essere impostati in modo ottimale per questo tipo di modello altamente sbilanciato? Cerco consigli/indicazioni su cosa potrei provare con questa persona. Grazie.
Re: Prevedere eventi rariHai provato l' Componente aggiuntivo di classificazione sbilanciata ? Ci ho giocato un po' di tempo fa e ho scoperto che aumentava le prestazioni su uno dei nostri set di dati campione (quale ora mi sfugge). Non sono un esperto di SMOTE o Tomek Links, ma ho trovato l'introduzione di questo post di Kaggle utile per comprendere le basi.
Dovrebbe essere un buon passo avanti se non l'hai ancora fatto.
Re: Prevedere eventi rariQuesti rari eventi mi fanno pensare all'affidabilità, ma non sono sicuro che sia la strada giusta. Quindi hai fattori di input continui nel tempo e ogni tanto hai un errore. Che ne dici di alcuni degli strumenti di controllo grafico, in particolare i grafici di controllo multivariati? Prova a correlare quando si verifica una combinazione di fattori con gli errori.
Re: Prevedere eventi rariHai guardato la soglia decisionale nello screening del modello? È utilizzata nella classificazione binaria. Puoi vedere come diverse soglie, .1 vs .5, influiscono sul modello.
Re: Prevedere eventi rariHai pensato di usare Zero Inflated Binomial nella piattaforma GenReg? Inoltre, hai preso in considerazione le Decision Thresholds che determinano un numero maggiore di Type I/Falsi Positivi?
Re: Prevedere eventi rariInoltre, anche se non l'ho ancora guardato, se non sbaglio, il recente webinar di @Jason_Wiggins Mastering Webinar sui modelli di conteggio dei difetti potrebbe essere utile: Come scegliere al meglio i modelli di conteggio dei difetti
Re: Prevedere eventi rariZero inflated in gen reg sembra un buon approccio, ma non sono sicuro dei tempi di esecuzione. Qualunque modello tu scelga, assicurati di usare Decision Threshold per determinare un cutoff appropriato (altrimenti la formula di previsione presuppone 50:50 per entrambi gli eventi). Ti invierò una serie di slide che ho messo insieme per aiutarti a decidere il cutoff in base al report Decision Threshold.Re: Prevedere eventi rariQuindi... non so se i record 3M dovrebbero essere così pessimi se eseguono i modelli basati su pro su una macchina decente (e non impazziscono con il numero di fattori). Penso che tu abbia alcuni problemi da considerare qui.
Innanzitutto, hanno fatto uno screening dei fattori? Un albero potenziato o una foresta casuale dovrebbero dirti se ci sono fattori che non contano. Ridurre quei fattori ridurrà i tempi di adattamento.
In secondo luogo (o forse a pari merito per il primo, non ne sono sicuro), stanno eseguendo una convalida incrociata stratificata? Fategli usare lo strumento di impostazione della colonna di convalida per creare una convalida incrociata TVT con la risposta nel campo di stratificazione. Ciò manterrà il modello onesto. Mi piace avere molti dati nel gruppo di addestramento e quantità decrescenti negli ultimi due.
I tipi di modello e le distribuzioni suggerite sono tutte buone idee: la mia propensione per qualcosa del genere sarebbe verso i metodi basati sugli alberi (Random Forest, Boosted Trees o XGBoost) con un seme casuale per la riproducibilità. Sono progettati per questi set di dati più grandi. Penso che Jerry abbia avuto un'idea interessante con l'angolo di affidabilità degli eventi rari. Potresti anche considerare questo: Italiano: https://youtu.be/Ac6E7da9igU
Sulla ponderazione, non credo che tu stia andando abbastanza lontano. Utilizzando il tuo tasso di fallimento dello 0,01%, darei ai dati di passaggio un peso di 0,0001 e ai tuoi fallimenti un peso di 0,9999. Abbiamo avuto un periodo un po' di tempo fa in cui questo stava arrivando e la guida (tribale, lo ammetto) era di mettere la colonna di risposta in distribuzione e invertire le proporzioni (ciò che descrivo nella seconda frase). Sembrava funzionare piuttosto bene.
Infine, forse solo come rielaborazione della situazione, le valutazioni sono più fluide quando riguardano la loro sicurezza di poter arrivare alla soluzione del loro problema. Riguardano meno il fatto di fargli effettivamente superare il traguardo del loro problema. Penso che sappiamo entrambi che qualcosa del genere richiederà alcuni cicli di apprendimento da parte loro e probabilmente andrà bene per il tempo rimanente nella valutazione. Se ti concentri sul fargli avere la sicurezza che arriveranno a una soluzione con Pro, compreranno anche se non ottieni "il modello" per il loro problema.
Re: Prevedere eventi rariGrazie a tutti per il contributo (finora)! Ho lanciato un certo numero di idee elencate di seguito su questo problema, ma non tutte e non nei modi consigliati. Apprezzo i vostri consigli.