前言
模型的實現固然重要,但是模型的驗證也是不可或缺的一塊。只有模型,沒有驗證就行代碼不經測試直接上線一樣的道理,質量是無法保證的。
近期研究對象的排行,實踐各種算法之後,得出了對目標對象的排行結果。但這僅是完成了工作的2/3,對所得結果的準確性是不能夠僅僅憑藉模型設計者的主觀經驗來判斷好壞的,畢竟不是業界的專業人士,對業務信息各種通透的理解。當然,如果你足夠權威,業務知識無人能敵,你的經驗足以驗證,那也無話可說。驗證方式
1. 交叉驗證
利用三方榜單,根據你的榜單,選擇多個權威性的三方榜單進行定量交叉驗證,例如前100名中,自定義的模型結果與三方榜單中交叉作品比例;但並不是交叉作品越多越好,畢竟選取的指標和計算方式是不同的,但需要有一定的量,權威之所以權威在於他的已被驗證的準確性,量的確定需根據實際情況來看。
2. 縱向比較
基於三方榜單,自定義榜單與權威榜單間排名的差距,從方向來看,驗證同一個作品與其他作品排序前後順序兩個榜單的一致性,通俗的說就是在權威榜單中A優於B,在自定義榜單中A是否也優於B,驗證自定義榜單排序的合理性。
首先構建作品間方向的0,1變量,並計算出作品相同位勢的比例,通過所有參與排名作品的平均同位勢比例作爲驗證指標。
3. 橫向比較
方向上進行了驗證,下一步則是衡量具體排名的差距大小,通過對比自定義排名與權威排名的具體差異,來進行比較,可採用相同樣本集的作品排名求同一作品的排名絕對差,爲了獲取排名的整體情況,採用絕對差和與排名效果差異最大的情況下的比值,來比較自定義排名與權威排名的差異度。
4. 小結
驗證指標作爲一種參考方式,具有合理性,起到驗證作用,但並非絕對的越大或越小爲最好,允許一定差異,需綜合與各個驗證指標結果得出結論。
5. 附帶R代碼
爲方便操作不同的文件,參數設置較多
##求同位勢差比例及差異絕對差和比例
getRatio<-function(data,name_col,rank1,rank2,num){##參數解釋:數據集、名稱列、排行1對應的列、排行2對應的列、前num部作品
works<-unique(data[,name_col])
n=length(works)
if(num<n){
n=num
}
result<-array(,n)
total=0
abssum=0
for(i in 1:n){
abssum=abssum+abs(data[i,rank1]-data[i,rank2])
sum=0
for(j in 1:n){
if(i==j){
sum=sum+1
}else{
if((data[i,rank1]-data[j,rank1])/(data[i,rank2]-data[j,rank2])>=0){
sum=sum+1
}
}
}
total=total+sum
}
diff=2*abssum/(n^2)
ratio=total/n^2
return(list(ratio,diff))
}