Algoritmo: ricerca binaria quando i valori sono incerti


11

Ho bisogno di un algoritmo per fare una ricerca binaria quando il test in ogni fase può dare il risultato sbagliato.

Contesto: devo posizionare gli studenti sul livello di difficoltà 12 più appropriato. L'approccio attuale è la forza bruta e pone 60 domande a 4 risposte a risposta multipla di difficoltà crescente, fermandosi dopo tre errori e pone lo studente al livello: floor((score - 1) / 5) + 1con un minimo di 1.

Siamo preoccupati che i clienti siano spenti quando affrontano un test con un massimo di 60 domande prima di poter effettivamente utilizzare il programma, quindi vorremmo ridurre al minimo il numero di domande poste nel test. Siamo anche preoccupati che i clienti saltino il test di posizionamento (perché sembra lungo) e quindi abbandonano il programma perché sembra troppo facile.

Il posizionamento mediano è in realtà al livello 2, quindi il 50 +% degli studenti ha un punteggio <11 (cioè risposta <14 domande). Aneddoticamente, questo può essere perché si annoiano e smettono di prendere sul serio le domande (sono bambini piccoli).

Soluzione proposta: implementare il test come una ricerca binaria su dodici elementi iniziando con una domanda a livello di difficoltà 6/7 e procedendo in base alla risposta corretta o errata. In teoria, questo potrebbe trovare il livello di difficoltà appropriato per loro in 3-4 domande.

Il problema: come si può immaginare dal test esistente che termina solo dopo tre risposte sbagliate e utilizzando 60 domande per scegliere tra 12 livelli, vogliamo tenere conto degli studenti che rispondono correttamente alle risposte (che dovrebbero fare il 25% delle volte) o accidentalmente dare risposte errate (dita grasse, domande male interpretate ecc.). Questo è ancora più importante con una ricerca binaria perché la risposta corretta alla prima domanda potrebbe metterti nella metà superiore dei livelli di difficoltà anche se sbagli ogni altra domanda.

Quindi esiste un algoritmo riconosciuto per una ricerca binaria in cui non è possibile garantire che un singolo test sia accurato?

Ingenuamente potrei provare meglio di 3 o 5 domande ad ogni passaggio e, poiché le domande iniziali hanno un effetto maggiore sul risultato finale rispetto alle domande successive, forse aggiungere queste domande aggiuntive solo ai passaggi iniziali e non a quelli successivi. C'è di più?


Perché pretest affatto? Regola da solo le domande sul test effettivo
Scott Stensland,

@ScottStensland, pensiero interessante. Tuttavia, il programma attuale è composto da 12 "mappe" di 10 "lezioni" ciascuna con ciascuna lezione composta da 8-15 "attività" su tela HTML5 o giochi ciascuno con un design altamente variabile. Gli studenti avanzano attraverso le mappe e ricevono premi e riconoscimenti / certificati dopo ogni lezione e mappa. Se dovessimo regolare costantemente il loro livello dopo ogni partita, sarebbe piuttosto disorientante, e dovremmo creare feedback in tutti i nostri giochi esistenti e capire le regole per il feedback anche per ogni gioco.

@Kirill, c'è un modo semplice per spostare / incrociare una domanda in un'altra sezione?

@jim Puoi contrassegnarlo per l'attenzione del moderatore per chiedere che spostino la domanda, oppure puoi anche eliminare questa domanda qui e creare una nuova domanda identica lì. Il crossposting (che ha domande identiche su siti diversi contemporaneamente) è generalmente sconsigliato. Ho dato questo suggerimento perché mi sembra una domanda relativamente semplice di statistica / apprendimento automatico che otterrebbe una risposta chiara molto più rapidamente laggiù.
Kirill,

Risposte:


2

Tratta il problema come una serie di probabilità bayesiane; inizialmente, supponiamo che ci sia una probabilità 1/13 che il bambino sia appena al di sotto di ogni livello e, per completezza, una probabilità 1/13 che sono in cima. Quindi: 1) Trova il livello mediano del tuo array, cioè il livello in cui la probabilità di essere al di sopra è più vicina al 50% 2) Poni al bambino una domanda da quel livello. 3) Usa la regola di Bayes per aggiornare la probabilità di ogni cella, ipotizzando un tasso di errore del 25%. Terminare e restituire il livello più probabile quando una cella raggiunge una probabilità sufficientemente elevata, o immagino che quando si esauriscono le domande a un livello.

Un trattamento più rigoroso di questo algoritmo è qui ; Consiglio di leggerlo prima di implementarlo.

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.