推薦系統 5 隱語義模型 LFM

2021-09-11 20:39:23 字數 2884 閱讀 8122

2019-03-02 14:27:17

對於usercf,我們可以先計算和目標使用者興趣相似的使用者,之後再根據計算出來的使用者喜歡的物品給目標使用者推薦物品。

而itemcf,我們可以根據目標使用者喜歡的物品,尋找和這些物品相似的物品,再推薦給使用者。

我們還有一種方法,先對所有的物品進行分類,再根據使用者的興趣分類給使用者推薦該分類中的物品,lfm就是用來實現這種方法。

如果要實現最後一種方法,需要解決以下的問題:

(1)給物品分類

(2)確定使用者興趣屬於哪些類及感興趣程度

(3)對於使用者感興趣的類,如何推薦物品給使用者

對分類,很容易想到人工對物品進行分類,但是人工分類是一種很主觀的事情,比如一部電影使用者可能因為這是喜劇片去看了,但也可能因為他是周星馳主演的看了,也有可能因為這是一部屬於西遊型別的電影,不同的人可以得到不同的分類。

而且對於物品分類的粒度很難控制,究竟需要把物品細分到個程度,比如一本線性代數,可以分類到數學中,也可以分類到高等數學,甚至根據線性代數主要適用的領域再一次細分,但對於非專業領域的人來說,想要對這樣的物品進行小粒度細分無疑是一件費力不討好的事情。

而且乙個物品屬於某個類,但是這個物品相比其他物品,是否更加符合這個類呢?這也是很難人工確定的事情。

每個使用者(user)都有自己的偏好,比如a喜歡帶有小清新的吉他伴奏的王菲等元素(latent factor),如果一首歌(item)帶有這些元素,那麼就將這首歌推薦給該使用者,也就是用元素去連線使用者和**。每個人對不同的元素偏好不同,而每首歌包含的元素也不一樣。我們希望能找到這樣兩個矩陣:

一.使用者-潛在因子矩陣q

表示不同的使用者對於不用元素的偏好程度,1代表很喜歡,0代表不喜歡。比如下面這樣:

二.潛在因子-**矩陣p

表示每種**含有各種元素的成分,比如下表中,**a是乙個偏小清新的**,含有小清新這個latent factor的成分是0.9,重口味的成分是0.1,優雅的成分是0.2……

利用這兩個矩陣,我們能得出張三對**a的喜歡程度是:張三對小清新的偏好***a含有小清新的成分+對重口味的偏好***a含有重口味的成分+對優雅的偏好***a含有優雅的成分+……

即:0.6*0.9+0.8*0.1+0.1*0.2+0.1*0.4+0.7*0=0.69

每個使用者對每首歌都這樣計算可以得到不同使用者對不同歌曲的評分矩陣r'。(注,這裡的破浪線表示的是估計的評分,接下來我們還會用到不帶波浪線的r表示實際的評分):

因此我們隊張三推薦四首歌中得分最高的b,對李四推薦得分最高的c,王五推薦b。

如果用矩陣表示即為:

下面問題來了,這個潛在因子(latent factor)是怎麼得到的呢?

事實上這是個非常非常稀疏的矩陣,因為大部分使用者只聽過全部**中很少一部分。如何利用這個矩陣去找潛在因子呢?這裡主要應用到的是矩陣的uv分解。也就是將上面的評分矩陣分解為兩個低維度的矩陣,用q和p兩個矩陣的乘積去估計實際的評分矩陣,而且我們希望估計的評分矩陣r'

和實際的評分矩陣不要相差太多,也就是求解下面的目標函式:

以下公式便是隱語義模型計算使用者u對物品i興趣的公式:

其中,p為使用者興趣和第k個隱類的關係,q為第k個隱類和物品i的關係,f為隱類的數量,r便是使用者對物品的興趣度。

接下的問題便是如何計算這兩個引數p和q了,對於這種線性模型的計算方法,這裡使用的是梯度下降法,大概的思路便是使用乙個資料集,包括使用者喜歡的物品和不喜歡的物品,根據這個資料集來計算p和q。

下面給出公式,對於正樣本,我們規定r=1,負樣本r=0:

這裡涉及到最優化理論,在實際應用中,往往還要在後面加上2範數的罰項,然後利用梯度下降法就可以求得這p,q兩個矩陣的估計值。

例如我們上面給出的那個例子可以分解成為這樣兩個矩陣:

這兩個矩陣相乘就可以得到估計的得分矩陣:

將使用者已經聽過的**剔除後,選擇分數最高**的推薦給使用者。這就是lfm的思想,這種演算法理解起來比較簡單。

推薦系統 02 隱語義模型LFM

隱語義模型 lfm 圖形解釋 lfm的前生今世 隱語義模型的適用性 關於訓練集 基本概念 那麼如何產生負樣本呢?負樣本的選擇 小結 如何計算權重 負樣本取樣過程 如何求解c的極小值 演算法原理 原函式 deffun x,y return x y 2 x x 2 x y y y 偏x導 defpxfu...

LFM隱語義模型

此外我們還需要注意的兩個問題 我們在可見的使用者書單中歸結出3個類別,不等於該使用者就只喜歡這3類,對其他類別的書就一點興趣也沒有。也就是說,我們需要了解使用者對於所有類別的興趣度。對於乙個給定的類來說,我們需要確定這個類中每本書屬於該類別的權重。權重有助於我們確定該推薦哪些書給使用者。下面我們就來...

推薦系統 隱語義模型

繼續學習推薦系統,還是推薦演算法的部分。因為我的學習是圍繞 推薦系統實踐 展開,這邊書是12年寫成的,所以一開始都是那年比較流行的演算法模型,裡面總共講了三個演算法,乙個是協同過濾,乙個是隱語義模型,乙個圖模型。圖模型我覺得現在實際上用的比較少,所以我就只看了一下,這裡不寫出來了。後面我會研究一下深...