2017-07-27 149 views
0

我們使用ALS作爲基於用戶/點擊數據通過Spark/Scala的推薦模型。交替最小二乘輸入

該評級列是一個得分[0,1]

val als = new ALS() 
    .setImplicitPrefs(true) 
    .setRank(myrank) 
    .setRegParam(mylambda) 
    .setAlpha(myalpha) 
    .setMaxIter(numIter) 
    .setUserCol("myuseridx") 
    .setItemCol("myitemidx") 
    .setRatingCol("rating") 
val model = als.fit(training) 

我的問題是:必須爲隱性模型輸入數據在技術上包含所有用戶的項目組合,即其還沒有買的人?

回答

1

ALS通過固定用戶或項目矩陣並使用最小二乘法求解它來解決推薦器問題。實質上,對於隱式數據集,這意味着所有未設置爲1的項目都被視爲零。所以你只需要包括積極的觀察。

一些更多的討論在這裏: http://yifanhu.net/PUB/cf.pdf

+0

「不像明確的數據集,這裏的模型應該採取的所有用戶,項目偏好的輸入,包括那些不涉及任何輸入觀測數據(從而暗示爲零偏好)這是至關重要的,因爲給定的觀察結果本質上偏向於正面的偏好,因此不能很好地反映用戶配置文件 但是,將所有用戶項目值作爲模型的輸入引起嚴重的可伸縮性問題「 –

+0

是,這是正確的。正如我所提到的,即使您沒有明確設置零點,模型也會將它們視爲零。 – jamborta

+0

此引用來自:http://yifanhu.net/PUB/cf.pdf 但現在我記得hyperparameter alpha的目的是什麼。我想你是對的。但是現在如果你不介意幫助我,我還有另外一個問題。我如何計算我的模型的AUC分數? 我有我的訓練集的評分標籤,如果我遵循不將零值置於RDD內的邏輯[評級],我很難理解如何計算我的TP - FP - TN - FN分數。 謝謝 –