深度學習 2 3

2021-10-06 17:22:26 字數 1708 閱讀 9747

矩陣分解演算法框架:

矩陣分解演算法將mxn的共現矩陣r分解為mxk維的使用者矩陣u和kxn維的物品矩陣v相乘的形式,其中m是使用者數量,n是物品數量,k是隱向量的維度。k的大小決定了隱向量表達能力的強弱,k的取值越小,隱向量包含的資訊越少,模型泛化能力越高,反之,k越大,包含的資訊越大,模型的泛化能能力越小。此外,k的取值還與矩陣分解的求解複雜度直接相關。

基於使用者矩陣u和物品矩陣v,使用者u對物品i的預估值:

pu是使用者u在使用者矩陣u中的對應行向量,qi是物品i在物品矩陣v中的對應列向量。

2.3.2矩陣分解的求解過程

對矩陣分解的方法主要有三種:特徵值分解、奇異值分解、和梯度下降,但是特徵值分解只能用於方陣,不適用於使用者-物品矩陣。

svd分解的具體過程:

假設矩陣m是乙個mxn的矩陣,則一定存在乙個分解

取對角陣

svd的缺點:

1,奇異值分解要求原始的共現矩陣是稠密的,但,實際情況,使用者-專案矩陣是稀疏的。如果應用奇異值分解,就必須對其進行缺失值填充。

2,傳統的奇異值分解的計算複雜度達到了o(mn2)的級別,這對商品數量動輒上百萬、千萬的網際網路幾乎不可能接受。

svd的目標函式:

svd梯度下降求解目標函式

1,確定目標函式

2,對目標函式求偏導

結果:對qi求偏導:

對pu求偏導

3,利用2求導的結果,沿梯度的反方向更新引數:

4,當迭代達到上限n時,或者低於設定的閾值時,結束訓練,否則迴圈第3步驟。

當矩陣分解完成分解過程後,即可得到使用者和物品的隱向量。在對某使用者進行推薦時,可以利用該使用者的隱向量進行逐行統一內積運算,得出該使用者對所有物品的評分**,再次依次進行排序,得到最終的推薦列表。

因此矩陣分解較協同過濾有更好的泛化能力,由於隱向量的存在,使得任意的使用者和物品之間都可以得到**值,隱向量的生成其實是對共現矩陣進行全域性擬合的過程,因此隱向量其實是利用全域性資訊生成的,有更強的泛化能力。

2.3.3消除使用者和物品的打分偏差

為消除使用者和物品之間存在的打分偏差則有

第一項是全域性偏差,bi是物品偏差(物品i收到的所有評分的均值),bu是使用者偏差(使用者所有評分的均值),此時矩陣分解的目標函式為:

矩陣分解的優缺點

優點:

1,泛化能力強,在一定程度上解決了資料稀疏的問題

2,空間複雜度低:不需要儲存龐大的使用者和物品的相似度矩陣,只需要儲存使用者和物品的隱向量。

3,更好的擴充套件性和靈活性:分解後得到使用者和物品的隱向量,便於深度學習網路進行無縫結合。

缺點

PyTorch 深度學習實踐 第2 3講

第2講 linear model 源 import numpy as np import matplotlib.pyplot as plt x data 1.0,2.0,3.0 y data 2.0,4.0,6.0 def forward x return x w def loss x,y y pr...

2 3 tensorflow 2 3學習 向量

自己開發了一 票智慧型分析軟體,功能很強大,需要的點選下面的鏈結獲取 方法說明 tf.range start,limit,delta 1,dtype none,name range 等差序列,包括start,不包括limit,delta是增量,預設1 tf.lin space start,stop,...

學習日誌2 3

1.復合語句?答 復合語句被括在一起的時候,會整體一起執行。復合語句內部宣告和定義的變數,在離開復合語句後失效。復合語句內外都宣告同乙個變數名。2.布林變數?答 布林型變數是有兩種邏輯狀態的變數,它包含兩個值 真和假。如果在表示式中使用了布林型變數,那麼將根據變數值的真假而賦予整型值1或0。要把乙個...