推荐系统炼丹笔记:令人着迷的时间动态CF算法
背景
本文是一篇較老的文章,是Yahoo的研究員關(guān)于協(xié)同過濾中時(shí)間動(dòng)態(tài)建模的最為細(xì)致的討論。
顧客對(duì)產(chǎn)品的偏好隨著時(shí)間的推移而變化。隨著新選擇的出現(xiàn),產(chǎn)品的認(rèn)知和受歡迎程度也在不斷變化。同樣地,顧客的偏好也在不斷演變,導(dǎo)致他們不斷地重新定義自己的品味。因此,在設(shè)計(jì)推薦系統(tǒng)或一般客戶偏好模型時(shí),時(shí)間動(dòng)態(tài)建模是一個(gè)關(guān)鍵。然而,這會(huì)有獨(dú)特的挑戰(zhàn)。在跨多個(gè)產(chǎn)品和客戶的生態(tài)系統(tǒng)中,許多不同的特征同時(shí)發(fā)生變化,而其中許多特征又相互影響,這些變化往往是微妙的,并與一些數(shù)據(jù)實(shí)例相關(guān)聯(lián)。這將問題與概念漂移(concept drift)探索區(qū)分開來。傳統(tǒng)的時(shí)間窗或?qū)嵗p方法可能無法奏效,因?yàn)樗鼈冊趤G棄數(shù)據(jù)實(shí)例時(shí)會(huì)丟失太多信號(hào)。需要一種更敏感的方法,以便更好地區(qū)分瞬態(tài)效應(yīng)和長期模式。我們提供的范例是創(chuàng)建一個(gè)模型來跟蹤數(shù)據(jù)生命周期中隨時(shí)間變化的行為。這允許我們利用所有數(shù)據(jù)實(shí)例的相關(guān)組件,同時(shí)丟棄那些被建模為不相關(guān)的組件。
跟蹤不斷變化的客戶偏好
消費(fèi)者的喜好會(huì)伴隨著時(shí)間而變化, 客戶喜好漂移的這一方面突出了文獻(xiàn)中一個(gè)共同的范式,即全球漂移概念影響整個(gè)數(shù)據(jù)。在推薦系統(tǒng)中,我們面臨一種更為復(fù)雜的概念漂移(concept drift),即許多用戶的相互關(guān)聯(lián)的偏好在不同的時(shí)間點(diǎn)以不同的方式漂移。
這需要學(xué)習(xí)算法來跟蹤多種變化的概念。此外,與單個(gè)消費(fèi)者相關(guān)聯(lián)的典型的低量的數(shù)據(jù)實(shí)例需要更簡潔有效的學(xué)習(xí)方法,從而最大限度地利用數(shù)據(jù)中的信號(hào)。
- instance selection: (1).丟棄和系統(tǒng)當(dāng)前狀態(tài)低相關(guān)的;一個(gè)常見的變體是時(shí)間窗口方法,只考慮最近的實(shí)例。這個(gè)簡單模型的一個(gè)可能的缺點(diǎn)是,它對(duì)所考慮的時(shí)間窗口內(nèi)的所有實(shí)例都賦予相同的意義,而完全丟棄所有其他實(shí)例。當(dāng)時(shí)間偏移突然時(shí),這可能是合理的,但當(dāng)時(shí)間偏移是漸進(jìn)的時(shí),則不太合理。(2).一個(gè)精化是實(shí)例權(quán)重是基于實(shí)例的估計(jì)相關(guān)性進(jìn)行加權(quán)的。使用時(shí)間衰減函數(shù),當(dāng)實(shí)例發(fā)生在更深的過去時(shí),我們會(huì)對(duì)其進(jìn)行加權(quán)。(3).第三種方法是基于集成學(xué)習(xí),它保持了一系列預(yù)測因素,這些因素共同產(chǎn)生最終結(jié)果。這些預(yù)測因素根據(jù)其與當(dāng)前時(shí)間點(diǎn)的感知相關(guān)性進(jìn)行加權(quán),例如,在最近的實(shí)例中更成功的預(yù)測者獲得更高的權(quán)重。
所以我們嘗試對(duì)變化的用戶喜好進(jìn)行建模:
- 尋求能夠解釋整個(gè)時(shí)間段內(nèi)用戶行為的模型,而不僅僅是當(dāng)前行為(同時(shí)受到性能限制)。這是能夠從每個(gè)時(shí)間點(diǎn)提取信號(hào)而忽略噪聲的關(guān)鍵;
- 應(yīng)該捕捉到多個(gè)不斷變化的概念。有些依賴于用戶,有些依賴于商品。同樣,有些是漸進(jìn)的,有些是突然的;
- 雖然我們需要為每個(gè)用戶和/或商品分別建模獨(dú)立的漂移“概念”或喜好,但必須在單個(gè)框架內(nèi)組合所有這些概念。這允許跨用戶和商品建模交互,從而識(shí)別更高級(jí)別的模式;
- 一般來說,我們不會(huì)試圖推斷未來的時(shí)間動(dòng)態(tài),例如,估計(jì)用戶偏好的未來變化。這可能非常有用,但太難了,尤其是在已知數(shù)據(jù)量有限的情況下。相反,我們的目標(biāo)是捕獲過去的時(shí)間模式,以便將持續(xù)信號(hào)從瞬態(tài)噪聲中分離出來。這確實(shí)有助于預(yù)測未來的行為.
時(shí)間感知的分解模型
因子模型剖析
這種純因子模型很好地捕捉了用戶和項(xiàng)目之間的交互作用。然而,大部分觀察到的評(píng)分值都是由于與用戶或者商品相關(guān)聯(lián)的影響,而與它們的交互作用無關(guān)。一個(gè)主要的例子是,典型的CF數(shù)據(jù)顯示出很大的用戶和項(xiàng)目偏差,即一些用戶給出的評(píng)分高于其他用戶,而某些項(xiàng)目的評(píng)分高于其它商品。
我們將把這些不涉及用戶商品交互的影響封裝在基線預(yù)測值中。這些基線預(yù)測器傾向于捕捉大部分觀察到的信號(hào),特別是數(shù)據(jù)中的大部分時(shí)間動(dòng)態(tài)。因此,對(duì)它們進(jìn)行精確的建模是至關(guān)重要的,這樣可以更好地識(shí)別真正代表用戶-商品交互的信號(hào)部分,并且應(yīng)該進(jìn)行因式分解。
時(shí)變基線預(yù)測因子
通過兩個(gè)主要的時(shí)間效應(yīng),大部分時(shí)間變異性包含在基線預(yù)測因子中。
- 第一個(gè)問題是解決:一個(gè)商品的受歡迎程度隨著時(shí)間的推移而變化。例如,電影可能會(huì)因?yàn)橥獠渴录?#xff08;如演員在新電影中的出現(xiàn))而進(jìn)入或退出流行狀態(tài)。這一點(diǎn)在我們的模型中得到了體現(xiàn),即項(xiàng)目偏差不是一個(gè)常數(shù),而是一個(gè)隨時(shí)間變化的函數(shù)。
- 第二個(gè)主要的時(shí)間效應(yīng)與用戶偏見有關(guān)-用戶隨著時(shí)間的推移改變了他們的基準(zhǔn)評(píng)分。例如,一個(gè)傾向于給一部普通電影評(píng)“4星”的用戶,現(xiàn)在可能會(huì)給這樣一部電影評(píng)“3星”,這是因?yàn)榍懊娼忉屵^的各種原因。因此,在我們的模型中,我們希望將參數(shù)bu作為時(shí)間的函數(shù)。
基于上述的問題,我們對(duì)之前我們的假設(shè)進(jìn)行修改:
決定如何將時(shí)間線劃分為多個(gè)箱子時(shí),應(yīng)在實(shí)現(xiàn)更高分辨率(因此,更小的箱子)和每個(gè)箱子有足夠評(píng)級(jí)(因此,更大箱子)的需求之間取得平衡。對(duì)于電影分級(jí)數(shù)據(jù),有各種各樣的垃圾箱大小,它們的準(zhǔn)確度大致相同。在我們的實(shí)現(xiàn)中,每個(gè)bin對(duì)應(yīng)于大約連續(xù)10周的數(shù)據(jù),因此在數(shù)據(jù)集中,總共有30個(gè)bin跨越所有的時(shí)間。一天t與一個(gè)整數(shù)Bin(t)相關(guān)聯(lián)(在我們的數(shù)據(jù)中是一個(gè)介于1和30之間的數(shù)字),因此電影偏差被分成固定部分和時(shí)間變化部分:
雖然binning參數(shù)在項(xiàng)目上工作得很好,但對(duì)用戶來說這是一大的挑戰(zhàn)。一方面,我們想要一個(gè)更好的分辨率,以便用戶檢測非常短暫的時(shí)間效應(yīng)。另一方面,我們不期望每個(gè)用戶有足夠的打分,以產(chǎn)生可靠的估計(jì)孤立的bins。不同的函數(shù)形式可以用來參數(shù)化用戶時(shí)間行為,但也伴有不同的復(fù)雜性和準(zhǔn)確性。
上面的函數(shù)已經(jīng)非常好了,但在許多應(yīng)用程序中,會(huì)出現(xiàn)與一天或一個(gè)會(huì)話相關(guān)的突然漂移。例如,在電影分級(jí)數(shù)據(jù)集中,我們發(fā)現(xiàn)一個(gè)用戶在一天內(nèi)給出的多個(gè)評(píng)分往往集中在一個(gè)值上。這種影響不會(huì)超過一天。這可能反映了用戶當(dāng)天的情緒,一天內(nèi)給出的評(píng)分對(duì)彼此的影響,或多人帳戶中實(shí)際評(píng)分者的變化。為了解決這種短暫的影響,我們?yōu)槊總€(gè)用戶和每一天分配一個(gè)參數(shù),吸收特定日期的變化。這個(gè)參數(shù)用表示。注意,在某些應(yīng)用程序中,要使用的基本原始時(shí)間單位可以短于或長于一天。
所以我們得到線性函數(shù):
基于曲線的模型變?yōu)?#xff1a;
將上面所說的綜合起來,我們使用線性函數(shù)加入突變的情況來建模得到:
于是我們最終就需要優(yōu)化下面的式子:
實(shí)驗(yàn)對(duì)比
上面的時(shí)間沒有考慮時(shí)間的周期性影響,我們也可以將其加入進(jìn)來(但在我們但數(shù)據(jù)集中并沒有發(fā)現(xiàn)明顯但周期性,所以暫時(shí)就沒有使用).
時(shí)變因子模型
上面主要都是在討論時(shí)間對(duì)于baseline predictor的影響,同時(shí)這也會(huì)影響用戶和商品的交互。此處我們使用用戶的每個(gè)喜好.
于是我們有:
于是我們便可以得到 timesSVD++.
實(shí)驗(yàn)對(duì)比
所有的方法都得益于越來越多的因素維度,這使得它們能夠更好地表達(dá)復(fù)雜的電影用戶交互。請(qǐng)注意,timeSVD++相對(duì)于SVD++的改進(jìn)比SVD++相對(duì)于SVD++的改進(jìn)更為顯著
鄰域模型的時(shí)間動(dòng)力學(xué)
原先的加入i2i的信息,
于是我們的優(yōu)化目標(biāo)變?yōu)?#xff1a;
通過加入時(shí)間信息,我們可以將原先的RMSE從0.9002降低為0.8885.
小結(jié)
跟蹤客戶對(duì)產(chǎn)品偏好的時(shí)間動(dòng)態(tài)帶來了獨(dú)特的挑戰(zhàn)。每個(gè)用戶和商品都可能在其特性上經(jīng)歷一系列不同的變化。此外,我們通常需要在一個(gè)模型中對(duì)所有這些變化進(jìn)行建模,從而將用戶(或產(chǎn)品)相互連接,以識(shí)別共同的行為模式。僅僅是老的實(shí)例的衰減或多個(gè)獨(dú)立模型的使用會(huì)損失太多信號(hào),從而降低預(yù)測精度。我們采用的解決方案是在整個(gè)時(shí)間段內(nèi)建立時(shí)間動(dòng)態(tài)模型,使我們能夠智能地將時(shí)間因素和全局時(shí)間因素分離開來。我們將此方法應(yīng)用于兩種主要的推薦技術(shù)。在因子分解模型中,我們模擬了用戶和產(chǎn)品特性隨時(shí)間的變化方式,以便從噪聲模式中提取長期趨勢。在一個(gè)商品-商品鄰域模型中,我們展示了如何通過學(xué)習(xí)用戶評(píng)價(jià)的兩個(gè)項(xiàng)目之間的影響如何隨時(shí)間衰減來揭示項(xiàng)目之間更基本的關(guān)系。在因子分解和鄰域模型中,時(shí)間動(dòng)態(tài)的包含被證明對(duì)提高預(yù)測質(zhì)量非常有用,比各種算法的增強(qiáng)更有效。這導(dǎo)致了迄今為止在廣泛分析的電影分級(jí)數(shù)據(jù)集上公布的最佳結(jié)果。
參考文獻(xiàn)
總結(jié)
以上是生活随笔為你收集整理的推荐系统炼丹笔记:令人着迷的时间动态CF算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推荐系统炼丹笔记:RecSys2020-
- 下一篇: 2020年推荐系统工程师炼丹手册RecS