I have 100,000 students who have each answered some multiple choice questions. Given their performance I want to work out what the chances are of a particular student answering the next question correctly.
- not each student has answered every question
- the probability of getting a question correct by chance changes with each question
Can I turn this into a machine learning problem using past questions as features? If so, how should I code them up? From what I know of other ML systems (e.g. bag of words) people generally use 1 to show presence of a word and 0 to denote its absence. But in this case I would need 1 to show they got the question right, -1 if they got it wrong and 0 if they didn't answer it. Or can I just use 1 for correct, 0 for incorrect and then omit the feature if the student never answered that question?
Which algorithms are best suited for this kind of problem? I've been reading a bit about Latent Trait/ Latent Class analysis and Item Response Theory but unsure how to implement them. Using Python/Octave/Matlab.
The representation of the dataset in Zhubarb's answer below is correct btw. To make my question clearer, imagine i have been given a new question today, to which nobody knows the answer. I can see that 20 people have answered it and I can look through their exam history where i know which questions they got right and which they got wrong. I want to find out who the smartest person is so that I know who to copy but everyone has answered different questions and different numbers of questions (e.g. person 1 may have answered 20 and got 18 correct whereas person 2 has answered 12 and gotten them all correct. Person 3 has 5/5 correct but they were all quite easy questions, whereas person 4 only got 3/4 but the ones they got right were tricky).