Ho un gruppo di dati in arrivo (chiamate a un call center automatico) sull'opportunità o meno di acquistare un particolare prodotto, 1 per l'acquisto, 0 per non acquistare.Stima di una probabilità data altre probabilità da un precedente
Desidero utilizzare questi dati per creare una probabilità stimata che una persona acquisterà un particolare prodotto, ma il problema è che potrebbe essere necessario farlo con dati storici relativamente bassi sul numero di persone che hanno acquistato/non acquistato quel prodotto.
Un amico ha raccomandato che con la probabilità bayesiana è possibile "aiutare" la stima di probabilità presentando una "distribuzione di probabilità precedente", essenzialmente si tratta di informazioni su ciò che si prevede di vedere, prima di prendere in considerazione i dati effettivi.
Allora, cosa mi piacerebbe fare è creare un metodo che ha qualcosa di simile firma (Java):
double estimateProbability(double[] priorProbabilities, int buyCount, int noBuyCount);
priorProbabilities è un array di probabilità che ho visto per i prodotti precedenti, che questo metodo userebbe per creare una distribuzione precedente per questa probabilità. buyCount e noBuyCount sono i dati effettivi specifici di questo prodotto, da cui desidero stimare la probabilità dell'acquisto dell'utente, dati i dati e il preventivo. Questo viene restituito dal metodo come un doppio.
non ho bisogno di una soluzione matematicamente perfetta, solo qualcosa che farà meglio di un uniforme o piatta precedente (es. probabilità = buyCount/(buyCount + noBuyCount)). Poiché sono molto più familiare con il codice sorgente che con la notazione matematica, sarei grato se le persone potessero usare il codice nella loro spiegazione.
problema davvero cool, e credo di conoscere la soluzione bayesiana esatta, ma ancora ci vorrà un po 'per il codice (ti dispiacerebbe pseudocodice eseguibile, fonte AKA Python sono? un po 'arrugginito con Java ... ;-). –
Alex, si - Python o pseudo-python va assolutamente bene! – sanity
non penso che questo sia un problema di programmazione di per sé; è una domanda di matematica teorica avvolta in uno stub di metodo java. –