[ExI] standard form for creating a test
Anders Sandberg
anders at aleph.se
Sun Dec 9 07:35:52 UTC 2012
Here is my take on it. Start with Bayesian statistics, end up with a
fairly simple algorithm:
Let us use Bayes theorem:
P(skill|answers)=P(answers|skill)P(skill)/P(answers)
=K P(a1,a2,a3,...|skill)P(skill) [K is a normalization factor; we only
care about relative differences of skill, not the absolute probability]
=K P(a1|skill)P(a2|skill)...P(skill) [assume independent answers]
=K P(a1|skill)P(a2|skill)...P(skill) [assume uniform prior]
So if we get a sequence to answers we can calculate the likeliehood of
different skill levels. Let's assume the questions have different
difficulties i. Then the probability for a particular question that a
person with skill j will be:
P(right answer difficulty i| skill=j) = C sigmoid(j-i)
P(wrong i|j)=1-C sigmoid(j-1)
where C is a normalization and sigmoid represents some suitable
monotonic sigmoid function like .5+.5*tanh(x). In fact, I think we can
use a step function like .5+.5*sign(x) - people better than the question
difficulty are assumed to always answer right.
So this gives us an algorithm:
Assume we have N skill levels
Set P(j) = 1/N
while (not done)
ask question of difficulty i
for j=1:N
if (right answer)
P(j) = P(j)* sigmoid(j-i)
else
P(j)=P(j)*(1-sigmoid(j-i))
end
normalise P
end
The final issue is how to select the question. We want to get as much
information as possible, so a good method would be to ask the question
where an answer maximises the change of sum P(j) log(P(j)), the
entropy/uncertainty about the skill. I don't have the time to calculate
the right solution, but it would not be hard to either loop over j to
find the right difficulty i, or to use the heuristic to ask a question
that is close to the expectation of j: i = round(sum j*P(j))
There you are.
--
Anders Sandberg,
Future of Humanity Institute
Philosophy Faculty of Oxford University
More information about the extropy-chat
mailing list