Algoritmo di vittoria / perdita

0

Sto cercando di capire un algoritmo di vittoria / sconfitta in cui dobbiamo avere (attorno) X vincitori al giorno distribuiti nel corso del giorno senza conoscere il numero di partecipazioni.

Un utente invia una richiesta a un'applicazione che decide immediatamente a caso se l'utente ha vinto o meno. Non sappiamo il numero di richieste quando iniziamo. C'è un modo per fare questo lavoro più o meno? Vogliamo diffondere i vincitori sul numero di richieste, non nel tempo, perché le richieste non sono divise in parti uguali nel corso della giornata.

Stavo pensando di iniziare con un numero stimato di richieste al giorno, dividendo le partecipazioni vincenti attraverso quel numero e modificando il numero stimato con la media delle richieste effettive. Qualche altro suggerimento?

    
posta dumazy 18.12.2017 - 10:21
fonte

8 risposte

4

Prevedere il numero di persone sul tuo sito e basare la probabilità su di esso non sarà probabilmente affidabile.

Perché non selezionare in modo casuale i timestamp e la prima richiesta che viene elaborata dopo ogni timestamp vince rispettivamente per ciascun timestamp. Questo facilita la diffusione dei vincitori nel corso della giornata. Facendolo in questo modo, non ti interessa quante persone visitano il tuo sito.

Dovresti anche essere in grado di segnalare la probabile probabilita 'di vincere bsed sulla tua previsione del traffico al sito.

    
risposta data 19.12.2017 - 13:22
fonte
3

Non sei chiaro se ci debbano essere X vincitori al giorno, o che per un periodo prolungato di tempo ci saranno in media X vincitori al giorno. Ma dato che non puoi sapere quante persone visiteranno il tuo sito in un giorno particolare in futuro, non riesco a capire come puoi ottenere il primo.

Ma per quest'ultimo suggerirei di prendere la cronologia passata delle visite e di inserire tali dati in un filtro predittivo lineare ( EG Filtro Kalman ) e basando l'assegnazione dei premi al tasso previsto diviso per X. Ciò comporterà un over / under assegnazione di premi per giorno specifico, ma a lungo termine sarà pari a X al giorno.

(Che dopo aver letto la tua domanda è fondamentalmente ciò che stavi inizialmente proponendo)

    
risposta data 19.12.2017 - 19:56
fonte
1

Un altro approccio che puoi provare è distribuire i premi rimanenti tra i partecipanti rimanenti previsti per quel giorno.

Il numero di partecipanti rimanenti attesi R è semplicemente la differenza tra il numero totale previsto di partecipanti N e il numero di partecipanti fino ad ora n (t). R = N - n (t)

Puoi stimare N osservando il tuo numero medio storico di partecipanti.

Se X è il tuo numero totale di premi e W è il numero di premi che sono già stati vinti, allora la probabilità di vincita di un partecipante sarà p = (X - W) / R.

Il vantaggio di questo approccio è che la probabilità di vincita di un partecipante aumenterà o diminuirà con il progredire del giorno a seconda del numero di premi vinti. Se molti premi vengono lasciati alla fine della giornata, la probabilità aumenterà; se mancano pochi (o non) premi, la probabilità scenderà a zero.

    
risposta data 19.12.2017 - 17:52
fonte
0

Se sei disposto a rischiare assegnando premi ai tuoi vincitori (X) una soluzione semplice è stimare il numero di partecipanti (N). Se hai previsto correttamente, le probabilità di vincita saranno R = X / N. Basta contare sul numero di perdenti (L) che si aspettano ogni volta e quindi assegnare il premio. L = N / X-1.

Anche questo rischia di dare premi in anticipo se sei improvvisamente inondato di partecipanti. In ogni caso, tieni il conto dei premi premiati e non dare mai più di quello che hai. La migliore soluzione per non darle in anticipo è ricalcolare la stima del numero di partecipanti utilizzando i numeri più recenti. Ciò dovrebbe impedire a un'improvvisa ondata di partecipanti di costringerti a rinunciarvi presto. Si attenuerà anche in caso di aggiudicazione se questo risulta essere un giorno lento.

    
risposta data 18.12.2017 - 18:23
fonte
0

È possibile iniziare ogni giorno con una stima per ora (o un periodo di tempo più piccolo).

Puoi semplicemente assumere che il numero rimasto per il giorno sia la stima dei periodi di tempo futuri.

L'altra dinamica è che se i periodi di tempo completati sono alti o bassi, il fattore del resto del giorno sarà lo stesso?

    
risposta data 18.12.2017 - 20:46
fonte
0

Penso di aver detto: "applicazione che decide immediatamente a caso se l'utente ha vinto o meno". Stai dicendo che l'utente viene immediatamente informato se ha vinto. Se è corretto, non ho nulla da aggiungere.

Se l'utente non è informato al momento dell'iscrizione se ha vinto, allora: a meno che non ci sia qualche altra regola in gioco, quegli utenti che hanno perso, potrebbero essere considerati come futuri vincitori. Ciò non cambia la soluzione al problema e penso che la prima risposta sia ancora la migliore, ma potrebbe aiutare a rendere la tua applicazione più fluida e coerente nel modo in cui sembra selezionare i vincitori.

Anche senza sapere nulla sulla densità delle applicazioni durante i periodi di tempo, è possibile impostare regole basate sul tempo come: Se i vincitori X non hanno vinto entro il tempo T, selezionare il vincitore tra i candidati. Dovresti comunque fare affidamento su un modello statistico preimpostato, ma fino al momento in cui avevi un set di dati più ampio per costruire il tuo modello, questo avrebbe aiutato la coerenza.

    
risposta data 17.01.2018 - 07:33
fonte
0

Un'altra tecnica che potrebbe essere utile è campionamento del serbatoio pesato per ottenere il tuo X vincitori su un flusso di richieste n . Il problema che risolve assomiglia molto al tuo problema. L'idea principale è quella di scegliere k campioni da n elementi con una probabilità ponderata quando n è sconosciuto.

Dato che sei limitato ad annunciare immediatamente a qualcuno se vince o meno, significa che devi eseguire alcune modifiche all'algoritmo (ad esempio, usa prima alcuni vincitori fittizi e poi sostituiscili con alcune probabilità ponderate). Se la sostituzione di un vincitore fittizio avviene con una nuova richiesta, l'utente dichiara di essere un vincitore, altrimenti non lo è.

I pesi delle probabilità di sostituzione potrebbero variare in termini di volume di richieste al fine di mitigare il rischio di lasciare vincitori fittizi alla fine della giornata e anche il rischio di accettare troppi utenti troppo presto.

Non sono sicuro che possa funzionare, ma lo fornisco come alternativa alle soluzioni già citate, sperando che si rivelino utili.

    
risposta data 17.01.2018 - 10:16
fonte
-2

Questo non ha senso. Se vuoi due vincitori al giorno e ricevi quattro richieste al primo minuto. Come farai a sapere se quelle sono le uniche richieste che riuscirai a superare l'intera giornata o se ci sarà un milione di richieste in più l'ora successiva? Ma se ti aspetti che il numero di richieste sia prevedibile, allora la tua soluzione è probabilmente ok, ancora meglio sarebbe un algoritmo ML basato sull'afflusso di richieste.

    
risposta data 18.12.2017 - 10:34
fonte

Leggi altre domande sui tag