0

我使用矩陣分解作爲基於用戶點擊行爲記錄的推薦系統算法。我嘗試2點矩陣因式分解方法:我的方法檢測矩陣分解中的過擬合是否正確?

第一種是基本SVD,其預測爲用戶因子矢量的只是產品ù和項目因子:R = ü *

我使用的第二個是帶偏差分量的SVD。

R = ü * + b_u + b_i

其中b_ub_i表示用戶和項目的偏好傾向。

我使用的一個模型的性能非常低,另一個是合理的。我真的不明白爲什麼後者表現更差,我懷疑它是否過度配合。

我使用搜索過濾方法來檢測過度擬合,發現學習曲線是一個好方法。但是,x軸是訓練集的大小,y軸是精度。這讓我很困惑。我怎樣才能改變訓練集的大小?從數據集中挑出一些記錄?

另一個問題是,我試圖繪製迭代損失曲線(損失是)。它似乎曲線是正常的:

enter image description here

但我不知道,因爲我用的指標是準確率和召回這種方法是否正確。我應該繪製迭代精度曲線嗎?或者這個已經告訴我的模型是正確的?

任何人都可以告訴我我是否正朝着正確的方向前進嗎?非常感謝。 :)

回答

0

我會以相反的回答:

所以你想兩個不同的模式,一種是採用直板矩陣分解R = U * i和其進入偏差,另外,R = U * 1 + b_u + b_i。

您提到您正在爲查看用戶點擊的推薦系統執行Matrix因式分解。所以我的問題在於:這是一個隱性評級案例嗎?或明確的?如果是關於點擊次數的話,我認爲這是一個隱含評級問題。

這是您需要非常清楚的第一件重要的事情,無論您的問題是關於顯式還是隱式評級。因爲它們的使用和實施方式存在一些差異。

如果您點擊這裏: http://yifanhu.net/PUB/cf.pdf

隱含評級的方式,多次有人數量點擊或購買例如一個給定的項目處理被用來推斷的置信水平。如果您檢查錯誤函數,則可以看到置信度幾乎被用作權重因子。所以整個想法是,在這種情況下,偏見沒有意義。

在明確評級的情況下,其中一個評分爲例如1-5的評分,可以計算用戶和產品的這些偏差(這些有界分數的平均值)並將它們引入評級公式中。他們的情景是有意義的。

重點在於,無論您是在一種情況下,還是在其他情況下,您都可以使用偏差。

另一方面,您的問題是關於過度擬合,因爲您可以根據測試錯誤繪製訓練錯誤,具體取決於數據的大小,您可以保留測試數據,如果錯誤差異很大,則您過度貼合。

另一件事是矩陣分解模型通常包括正則化術語,請參閱此處發佈的文章,以避免過度擬合。

所以我認爲在你的情況下,你有一個不同的問題,我之前提到的。

相關問題