推薦系統常見問題(一):數據集按照用戶行爲比例進行劃分的問題?

問題:數據集按照用戶行爲比例進行劃分的問題?

推薦系統若按照每個用戶的交易記錄按比例進行數據集的劃分,比如每個用戶留下80%的數據作爲訓練集,20%的數據作爲測試集,那麼對於一個有5個交易記錄的用戶來說,訓練集應該有4個,測試集應該有1個,但是有時候不是這樣的情況?

我覺得還是取決於自己的代碼怎麼寫,一般會有以下兩種寫代碼的方式:

  1. 比如如果是直接計數的代碼,直接把用戶交易數據的前80%個數據留下來作爲訓練集,後20%作爲測試集,這種情況不會出現問題。
  2. 如果使用的是random函數生成(0,1)之間的數,小於等於0.8的數據作爲訓練集,其他作爲測試集,由於random函數是一個採樣的過程,它遵循的是某種分佈(具體不同的random函數遵循的分佈不一樣),所以並不一定能夠保證5個數據中,完全是4個劃分到訓練集,1個劃分到測試集。
 if random.random() < 0.9:
    self.trainset.append([user,item,rating])
 else:
    self.testset.append([user,item,rating])

但,不管怎麼,以上兩種代碼都是可以寫的,都沒有任何問題。

這是原問題鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章