協同過濾筆記

想你时风起發表於2024-04-07

筆記

記錄一下學習工作中遇到的一些知識,以防遺忘,不清楚的可以回來再看。

一些專有名詞

embedding: 隱向量 非常重要 無處不在

召回: 粗略計算要返回結果,例如從100W商品中取比較可能的100個

負取樣

負取樣(Negative Sampling)是一種用於訓練詞嵌入模型的技術。在自然語言處理中,詞嵌入模型被用於將詞語表示為連續向量空間中的向量,以便於計算機處理和理解自然語言。

在傳統的Skip-gram模型中,為了預測目標詞語的上下文,需要對訓練資料集中的每個詞語生成一對(目標詞語,上下文詞語)。然而,這種全域性計算上下文的方法會導致訓練過程非常耗時,尤其是在大規模資料集上。

負取樣透過減少訓練樣本的數量來加速訓練過程。它的基本思想是對於每個目標詞語和其上下文詞語,只選取部分負面樣本進行訓練,而不是使用全部的上下文詞語。具體來說,對於每個訓練樣本,我們會隨機選取一些與目標詞語不相關的詞語作為負面樣本。這些負面樣本不僅能夠加速訓練過程,還能夠幫助模型學習到更好的詞嵌入表示。

負取樣的過程通常涉及兩個引數:取樣數量和取樣分佈。取樣數量決定了每個正樣本應該選擇多少個負面樣本進行訓練,而取樣分佈用於選擇負面樣本。常見的取樣分佈方法是根據詞語的頻率進行取樣,即頻率越高的詞語被選中為負面樣本的機率越大,這樣可以更好地處理高頻詞語的訓練。

透過負取樣,可以顯著減少訓練時間,同時保持較好的詞嵌入質量。這使得負取樣成為了訓練大規模詞嵌入模型的常用技術。

RecBole推薦平臺總體架構

image

協同過濾

image

基於使用者的協同過濾推薦演算法 —— 計算量大 矩陣稀疏

  1. 首先找到使用者相似度
  2. 屬性特徵,行為特徵等都可以作為計算輸入
  3. 計算兩個使用者的相似度,如果相似度較高,那麼就可以將item推薦給使用者
  4. 較難
    image

基於物品的協同過濾推薦演算法 —— 計算量大 矩陣稀疏

先得到使用者和商品的互動資料,計算相關度。
不適合實時的內容。
image

基於矩陣分解 —— 更快

最終目的是降低計算量,最佳化隱向量。

  1. 因為資料量大了以後,矩陣非常大,很難計算,那麼如何計算呢?—— 矩陣分解:
    image

  2. 只要近似就行,可以不用在數學上那麼嚴謹。
    image

  3. 矩陣分解後:是有一些特點的!
    image

  4. 矩陣還原:
    image

  5. 怎樣才能讓矩陣分解更好?

需要不斷實驗進行調參
image

隱式

image

image

image

顯式

目標函式

image

image

embedding

image

L2正則化限制

在防止過擬合的方法中有L1正則化和L2正則化,L1和L2是正則化項,又叫做懲罰項,是為了限制模型的引數,防止模型過擬合而加在損失函式後面的一項。

參考CSDN-什麼是L1和L2正則化,以及它們有什麼區別

L2是模型各個引數的平方和的開方值。L2會選擇更多的特徵,這些特徵都會接近於0。最優的引數值很小機率出現在座標軸上,因此每一維的引數都不會是0。

參考CSDN-什麼是L1和L2正則化,以及它們有什麼區別

SLIM(Spares Linear Methods)

SLIM對基於記憶的方法提出了一些改進,該演算法從使用者互動記錄中為所有物品學習一個稀疏矩陣來同時實現高效率和高質量的推薦。

相關文章