Many Facet Rasch Model
定义:
- \(P_{nijk}\) 是考官 j 针对题目 i 给考生 n 打 k 分的概率
- \(P_{nij(k-1)}\) 是考官 j 针对题目 i 给考生 n 打 k-1 分的概率
- \(B_n\) 是考生 n 的能力
- \(D_i\) 是题目 i 的难度
- \(C_j\) 是考官 j 的严格程度
- \(F_k\) 是评分从 k-1 增加到 k 的难度
完全交叉:J 个考官,对 N 个考生做的 I 个题目,给出了 \(J*N*I\) 个打分,打分范围是 0 到 K。目标:求解上述各数。
JMLE
JMLE 求解算法:初始化各参数,得到一系列的 \(P_{nijk}\),根据实际的打分,计算出似然概率,然后优化参数,使得似然概率极大化。
先考虑简单情形:K=1,此时打分只有 0 和 1 两种情况。此时:
所以:
假如实际上有两个考生,两个考官,两个题目,已知得分情况如下:
| 考生 | 题目 | 考官 | 得分 |
|---|---|---|---|
| 0 | 0 | 0 | 1 |
| 0 | 0 | 1 | 1 |
| 0 | 1 | 0 | 0 |
| 0 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 |
| 1 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 |
| 1 | 1 | 1 | 1 |
那么目标就是最大化 \(P_{0001}P_{0011}P_{0100}P_{0110}P_{1001}P_{1010}P_{1100}P_{1111}\)。
因为 \(K=1\),只有一种 \(F_k\),所以 \(F_1\) 是常数项,直接让它等于 0。
如果所有 \(B_n\) 同时增加一个数 \(c\),同时 \(D_i\) 或 \(C_j\) 增加同一个数 \(c\),概率不变。所以为了避免无穷多组解,添加约束:\(\Sigma_n{D_i} = 0, \Sigma_j{C_j} = 0\)。
因为最大化目标是个乘积,不方便计算,对它求对数,就得到了 \(\log P_{0001}+\log P_{0011}+\log P_{0100}+\log P_{0110}+\log P_{1001}+\log P_{1010}+\log P_{1100}+\log P_{1111}\),成为新的最大化目标。
已知:
设 \(L_{nij}=B_n - D_i - C_j - F_1 = B_n - D_i - C_j\),那么:
设 \(s_{nij} \in \{0,1\}\) 即考生 n 在题目 i 被考官 j 打的实际得分,那么极大化目标里,每一项的表达式就是:
即 \(s_{nij}=0\) 时等于 \(\log(P_{nij0})\),\(s_{nij}=1\) 时等于 \(\log(P_{nij1})\)。上式可以化简:
有了这个优化目标以后,就可以对 \(B_n, D_i, C_j\) 求偏导,通过多次迭代来最大化对数极大似然。
比如每一项对 \(B_n\) 求导:
类似地,每一项对 \(D_i\) 或 \(C_j\) 求导:
上述数据,迭代出来的结果是:
- 考生能力 B:\(B_0=0.00000, B_1=0.00000\)
- 题目难度 D:\(D_0=-1.09861, D_1=1.09861\),这个数刚好等于 \(\ln(3)\)
- 考官严厉度 C:\(C_0=0.00000, C_1=-0.00000\)
得到的结论就是,两个考生的能力相同,考官的严厉程度相同,但题目难度不同,题目 1 比题目 0 更难。