為何要根據(jù)損失函數(shù)推導公式以及關(guān)于推導的方式

為何要根據(jù)損失函數(shù)推導公式以及關(guān)于推導的方式

目錄:

  1. 原因:解釋了為何要推導這些公式的原因
  2. 舉例說明:根據(jù)文章來說明這個推導的必要性
  3. 分析如何推導添加用戶相似度的公式

1. 原因

首先來先說一下原因鄙陡,接著舉例分析這個原因感帅,最后再來分析一下到底要如何推導加了用戶相似度的兩個矩陣的計算方式。

那么先說原因:

  1. ALS 模型不是輸入一條損失函數(shù)的公式隘冲,然后輸入數(shù)據(jù)就能直接跑起來模型的。
  2. 模型的更新是要根據(jù)損失函數(shù)推導出來的公式來設(shè)定的穆壕。
  3. 眾所周知盲厌,ALS 是一個交替最小二乘法燎孟,意思是先固定用戶矩陣或者項目矩陣中的其中 1 個,然后計算另一個矩陣的镜盯,最終得到兩個最優(yōu)解矩陣岸裙。而如何計算另一個矩陣辦法或者公式我們是未知的。
  4. 因此速缆,我們要根據(jù)損失函數(shù)來推導出這兩個矩陣(用戶矩陣和項目矩陣)的是怎么在固定一個矩陣的情況下來計算更新另一個矩陣的降允。
  5. 總結(jié),以上就是我們需要從損失函數(shù)推導公式的原因艺糜。

那么接下來就按照知乎文章中的損失函數(shù)推導公式過程以及代碼來舉例說明整個過程

2. 舉例說明

接下來就舉例說明一下文章中的 ALS 算法的推導過程剧董,以及解說一下配套代碼的含義

2.1 文章中的 ALS 損失函數(shù)

首先是損失函數(shù),下面是知乎文章中的 ALS 模型的損失函數(shù):

文章鏈接: https://zhuanlan.zhihu.com/p/47584486?utm_source=wechat_session&utm_medium=social&utm_oi=896399378548404224

L=-\frac{1}{2} \sum_{i=0}^{n}\left(R_{a i}-U^{T} a * I i\right)^{2}

這個是損失函數(shù)破停。

2.2 推導的過程

由于 ALS 算法的流程是先固定 1 個矩陣翅楼,然后求另一個矩陣的。然而現(xiàn)在不知道是如何計算另一個矩陣的真慢,也就是不知道另一個矩陣的計算公式毅臊。因此我們需要來推導這個另一個矩陣的計算公式。

由損失函數(shù)推導出用戶矩陣 U_a 和項目矩陣 I_b 的計算公式黑界,那么推導的過程主要分 3 步:

  1. 對損失函數(shù)求 U_a 的一階偏導數(shù)管嬉,得到結(jié)果如下:

\begin{aligned} \frac{d L}{d U_{a}} &=\left(R_{a}-U^{T} a * I\right) * I^{T} \\ \frac{d L}{d U a} &=I *\left(R^{T} a-I_{T} * U_{a}\right) \end{aligned}

  1. 然后再令一階偏導數(shù)等于0 ,即等式左邊項為 0 朗鸠,得到了用戶矩陣 U_a 蚯撩,結(jié)果如下:

\begin{array}{l}{I * R^{T} a=I * I^{T} * U a} \\ {U a=\left(I * I^{T}\right)^{-1} * I * R_{a}^{T}}\end{array}

  1. 同理,可證得項目矩陣 I_b 的計算公式

I_童社=\left(U * U^{T}\right)^{-1} * U * R_求厕

2.3 推導的公式在代碼上的應(yīng)用

下面截取了 ALS 算法的代碼中核心部分

  • 含義
    • 這段代碼的內(nèi)容是按照上面推導出來的、用來計算兩個矩陣 U 和 I 的公式設(shè)計出來的扰楼。
  • 作用
    • 輸入數(shù)據(jù)后通過調(diào)用該方法呀癣,最終計算得到 U 和 I 的兩個矩陣。
for i in range(max_iter):
    if i % 2:
      # U = (I * I_transpose) ^ (-1) * I * R_transpose
      items = self.item_matrix
      self.user_matrix = self._items_mul_ratings(
        items.mat_mul(items.transpose).inverse.mat_mul(items),
        ratings
      )
    else:
      # I = (U * U_transpose) ^ (-1) * U * R
      users = self.user_matrix
      self.item_matrix = self._users_mul_ratings(
      users.mat_mul(users.transpose).inverse.mat_mul(users),
      ratings_T
        )

3. 如何處理加了相似度的損失函數(shù)

3.1 加了相似度的損失函數(shù)

首先需要先了解加了用戶相似度的損失函數(shù)是怎樣的弦赖。

加了相似度的損失函數(shù)如下项栏,這是在論文中截取到的:

\begin{aligned} L=& \min _{U, V} \frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{n} I_{i j}\left(r_{i j}-\mathbf{u}_{i}^{T} \mathbf{v}_{j}\right)^{2} \\ &+\frac{\alpha}{2} \sum_{i=1}^{m} \sum_{f \in \mathcal{F}+(i)} s_{i f}\left\|\mathbf{u}_{i}-\mathbf{u}_{f}\right\|_{F}^{2} \\ &+\frac{\lambda_{1}}{2}\|U\|_{F}^{2}+\frac{\lambda_{2}}{2}\|V\|_{F}^{2} \end{aligned}

這個損失函數(shù)的參數(shù)解釋如下:

  • 其中 α 是正則化參數(shù),s_if 表示用戶 i 與用戶 f 之間的相似度蹬竖,\mathcal{F}+(i) 表示用戶的外向好友沼沈,即相似度較高朋友

3.2 推導步驟

  1. 對損失函數(shù)求 u_i 的一階偏導數(shù)
  2. 然后再令一階偏導數(shù)等于0 流酬,即等式左邊項為 0 ,得到了用戶矩陣 u_i
  3. 然后就可以同理可得項目矩陣 v_j

我主要是在這里卡主了列另,不會推導這些公式

3.3 推導過程參考文章

推導過程參考文章:

https://blog.insightdatascience.com/explicit-matrix-factorization-als-sgd-and-all-that-jazz-b00e4d9b21ea

文章從下圖開始詳細介紹了 ALS 算法的推導過程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末芽腾,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子页衙,更是在濱河造成了極大的恐慌摊滔,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件店乐,死亡現(xiàn)場離奇詭異艰躺,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來傻铣,“玉大人,你說我怎么就攤上這事页响。” “怎么了段誊?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵拘泞,是天一觀的道長。 經(jīng)常有香客問我枕扫,道長,這世上最難降的妖魔是什么辱魁? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任烟瞧,我火速辦了婚禮,結(jié)果婚禮上染簇,老公的妹妹穿的比我還像新娘参滴。我一直安慰自己,他們只是感情好锻弓,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布砾赔。 她就那樣靜靜地躺著,像睡著了一般青灼。 火紅的嫁衣襯著肌膚如雪暴心。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天杂拨,我揣著相機與錄音专普,去河邊找鬼。 笑死弹沽,一個胖子當著我的面吹牛檀夹,可吹牛的內(nèi)容都是我干的筋粗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼炸渡,長吁一口氣:“原來是場噩夢啊……” “哼娜亿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蚌堵,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤买决,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后辰斋,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體策州,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年宫仗,在試婚紗的時候發(fā)現(xiàn)自己被綠了够挂。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡藕夫,死狀恐怖孽糖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情毅贮,我是刑警寧澤办悟,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站滩褥,受9級特大地震影響病蛉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瑰煎,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一铺然、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧酒甸,春花似錦魄健、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至农尖,卻和暖如春析恋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背卤橄。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工绿满, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人窟扑。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓喇颁,卻偏偏與公主長得像漏健,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子橘霎,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容