推荐系统笔记:使用分类模型进行协同过滤
1 適用問題限制
????????許多其他分類方法可以擴展到協同過濾的情況。這些方法的主要挑戰是數據的不完整性質。在某些分類器的情況下,更難以調整模型來處理缺失屬性值的情況。一個例外是一元數據的情況,其中缺失值通常估計為 0,并且指定的條目設置為 1。
????????因此,底層矩陣類似于高維的稀疏二進制數據。在這種情況下,可以將數據視為一個完整的數據集,并且可以使用為稀疏和高維數據設計的任何分類器。
????????幸運的是,許多形式的數據,包括客戶交易數據、Web 點擊數據或其他活動數據,都可以表述為一元矩陣。值得注意的是,文本數據也是稀疏高維的;因此,的許多分類算法都可以直接適應這些數據集。
????????對于評級矩陣不是一元的情況,不再可能在不引起顯著偏差的情況下用 0 填充矩陣的缺失條目。
? ? ? ? 我們可以使用降維方法來創建數據的低維完整表示。 在這種情況下,通過將低維表示作為訓練數據的特征變量,可以有效地使用任何已知的分類方法。 任何需要補全的列都被視為類變量。
????????這種方法的主要問題是在分類過程中失去了可解釋性。 ?很難對預測提供合理的解釋 ...????????
2 解決方法
????????為了在原始特征空間中工作,可以將分類/回歸方法作為元算法與迭代方法結合使用。 ?換句話說,現成的分類算法被用作黑盒來預測其中一個項目的評分與其他項目的評分。
????????如何克服訓練數據不全的問題? 訣竅是通過連續迭代更新訓練列的缺失值。 這種連續的更新是通過使用我們的黑盒實現的,這是一種現成的分類(或回歸建模)算法 ?
????????考慮任意分類/回歸建模算法 A,該算法旨在處理數據完全的矩陣。
????????第一步是使用行平均值、列平均值或任何簡單的協同過濾算法初始化矩陣中缺失的條目。
,迭代循環由兩小步組成:
- 迭代循環第一小步:使用算法A估計每一列的缺失條目,將其設置為目標變量,將剩余的列設置為特征變量。 對于其他特征列,第一次迭代使用行平均值、列平均值或任何簡單的協同過濾算法補全矩陣中缺失的條目。之后輪次的迭代使用上一輪更新的矩陣。?目標列中觀察到的評分用于訓練,并預測缺失的評分。(此時只記錄,不更新)
- 迭代循環第二小步:將第一步求得的每一列的預測結果進行更新,得到本輪迭代結束后的矩陣
????????這兩個步驟迭代執行直到收斂。
????????該方法可能對初始化的質量和算法 A 很敏感。不過,該方法的優點是它是一種簡單的方法,可以很容易地使用任何現成的分類或回歸模型來實現。 數值評級也可以用線性回歸模型處理。
3 舉例:使用最簡單的神經網絡進行協同過濾
????????考慮一個包含四個項目的評分矩陣,如圖 3.4 的左側所示。
????????這里做了一個小trick,就是對每一行的觀測值進行均值居中,以消除用戶偏見。(每一行的觀測值減去這一行的觀測值均值。)。然后我們將0填入缺失值。得到的矩陣如圖3.4右側所示。【不進行均值矩陣的話,也就類似于我們將每一行的均值填入缺失值)
????????由于有四個項目,因此有四種可能的神經網絡模型,其中每個模型都是通過使用其他三個項目的評分輸入作為訓練列,第四個作為測試列來構建的。
????????這四個神經網絡如圖 3.5 所示。圖 3.4 的完整矩陣用于在第一次迭代中訓練這些神經網絡中的每一個。
? ? ? ? 第一次迭代結束后,會使用神經網絡做出的預測結果來創建一個新矩陣,其中用預測值更新缺失的條目。
????????換句話說,3.4用均值補全的矩陣僅使用一次。
????????更新后,圖 3.4 的陰影條目將不再為零。更新后的該矩陣現在用于預測下一次迭代的條目。迭代地重復這種方法直到收斂。
????????請注意,每次迭代都需要應用 n 個訓練程序,其中 n 是項目數。然而,不需要在每次迭代中從頭開始學習神經網絡的參數。上一次迭代的參數可以作為一個很好的起點。
總結
以上是生活随笔為你收集整理的推荐系统笔记:使用分类模型进行协同过滤的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推荐系统笔记:基于贝叶斯的协同过滤
- 下一篇: 推荐系统笔记:基于模型的协同过滤