基本思路
我們的基本思路是以被審覈用戶的用戶正確率,以及用戶之間的答案相似程度爲基礎,採用加權平均策略來生成預測正確率。
我們將所有用戶劃分爲兩個集合:已經被審覈的用戶集合以及還未被審覈的用戶集合。通過上述的基本思路,只要已經被審覈的用戶集合足夠,且未審覈集合中不存在“孤島”(這些用戶沒有和其他用戶一起回答過題目),那麼經過數輪迭代,所有用戶都可以獲得各自的正確率。
測試數據
表中列出了所有假設的題目的標準答案和每個用戶的答案。其中,產品線僅審覈題目1-3,而用戶A和B被定爲已被產品線審覈的用戶。C和D雖然也有審覈正確率,但是僅作爲最終預測正確率的參考。由於設計時間較短,這裏數據較少,也沒有覆蓋所有情況,最終的效果希望直接使用用戶的答案進行測試和驗證。
|
題目1 |
題目2 |
題目3 |
題目4 |
題目5 |
產品線審覈正確率 |
實際正確率 |
正確答案 |
A |
A |
A |
A |
A |
- |
- |
用戶A答案 |
A |
A |
A |
A |
A |
100% |
100 |
用戶B答案 |
A |
B |
B |
B |
A |
33% |
40% |
用戶C答案 |
A |
C |
A |
A |
A |
66% |
80% |
用戶D答案 |
B |
C |
A |
B |
B |
33% |
20% |
爲了推測C和D的正確率,需要分析一下用戶C和D和其他用戶的相似度,結果如下表:
|
用戶A |
用戶B |
用戶C |
80% |
40% |
用戶D |
20% |
20% |
使用用戶相似度傳遞正確率
一個最簡單的加權方案是使用用戶的相似度來傳遞正確率,公式爲:
根據我們的假設,根據該公式計算結果爲:
用戶C的正確率爲(100*0.8+33*0.4)/(0.8+0.4) = 77.7%。
用戶D的正確率爲(100*0.2 + 33*0.2)/(0.2 + 0.2) = 66.5%。
這種算法存在的問題是當被審覈的用戶正確率都很高時,通過相似度傳遞的正確率也會很高,那麼答題非常差的用戶是難以被直接篩選出來的。例子中,用戶D的答題實際非常差,但是直接根據相似度傳遞的正確率卻達到了66%,偏離實際正確率非常多。
對於這種bad case,我們只要分析其相似度即可篩選出這些低質量用戶。一般這類答題較差用戶和其他用戶的相似度較低,如果某個用戶的相似度一直非常低,那麼這個用戶本身就是非常可疑的。
直接用相似度分析正確率
前一種方式對於低正確率用戶難以正確評價,因此我們換一個角度,即把相似度作爲基準正確率,而將用戶原本的正確率作爲權重係數。這樣做的依據是:如果某個用戶正確率很高,那麼與他相似度越高的用戶正確率也不會低,同時高正確率用戶的權重也應該高於其他一般用戶。
這種思路下的公式轉化爲:
基於上述策略計算的答案如下:
用戶C的正確率爲(80*1+40*0.33)/(1+0.33)= 70%。
用戶D的正確率爲(20*1+ 20*0.3)/(1+ 0.3) = 20%。
這種方式可以瞬間發現用戶D是在亂答,但是對於用戶C的評價偏離較多。這是因爲我們例子中答題正確和答題錯誤的用戶比例爲1:1,導致答題錯誤的正確率影響過高。正常情況下,我們的用戶都純潔善良,因此我們可以假設有10個A一樣的用戶和1個B一樣的用戶,這樣用戶C的正確率爲(80*1*10+40*0.33)/(1*10+0.33)= 78.7%,和實際值非常接近。
優化的一些討論
實裝算法前,我們需要進一步考慮的參數包括:審覈題目數的有效下限,以及已審覈正確率權值。
所謂審覈題目數的有效下限,指的是當產品線審覈該用戶超過某個閾值時,該正確率纔會被正常使用。設定這個值的道理很簡單,如果一個用戶僅被產品線審覈了3道題,其中他只答對了1道題,而其他沒有審覈的題目實際上他都答對了,那麼用這三題來評判這個人是相當不理智的。所以設定這個下限是必要而科學的。
考慮到有效下限的問題,此時有一部分產品線已經審覈產生的正確率因爲不滿足下限要求而不能加入到迭代過程中,這將浪費這些爲數不少的極具參考價值的數據。因此對於這些審覈正確率,可以考慮使用一定的權值混入到我們的正確率預測公式中,例如修正公式爲:
對於審覈題數,我們只需要考慮較小情況,該公式的表現(較大情況中,審覈正確率可以直接體現用戶正確率,不需要預測啊喂!)。
如果用戶答題較多,但是被審覈較少,那麼用戶基於其他用戶預測的影響就會較大,那麼加權作用並不會起到決定性影響。這種作用正好解決了“審覈題目數的有效下限”中討論的以偏概全問題,因爲羣衆的眼睛是雪亮的。。。
如果用戶答題較少,那麼和其他用戶的相似性數據也較少,此時已審覈正確率會主導用戶預測正確率。這種情況下,已被審覈題目在用戶所有答題中佔比不低,具有一定代表性。退一步講,用戶答題較少,正確率評價依據過少,同時預測準確的必要性也不強。所以這種情況下,公式也挺好的。
結語
不論是“使用用戶相似度傳遞正確率”還是“直接用相似度分析正確率”,以及加權修正公式,都是比較粗糙但是具備一定依據的預測方式。更多的優化方案還是需要結合已有數據進行測試和調優的,不是瞎BB能夠解決的。
由於水平和時間有限,這裏給出的主要是設計和思路,希望大家能夠指出不足,多提意見。