綠色排版工具|熱門專題|網站地圖|移動官網
您的當前位置:網站首頁 > 網站分析 > 數據可視化 > 正文

推薦系統相關的算法

來源:未知 編輯:小螞蟻 時間:2019-08-21 09:59:19 閱讀:

      對于技術人員來講,或許算法才是大家最感興趣的部分,但是這里只是簡要的概括推薦系統相關算法體系,不會具體到算法細節,因為任何一種算法的細節都可以講上一天半載。

    總的來說常見的推薦系統算法體系可以分為這幾類:內容推薦、協同過濾推薦、矩陣分解、模型融合。
推薦系統相關的算法

    1.內容推薦

    內容推薦是推薦系統的孩童時代,但是在今天它依然適用于各個領域。內容推薦有其內容數據比較好獲取的優點,在從零開始構建一個推薦系統時起到了非常重要的作用。基于內容的推薦要做到四步:抓取數據、清洗數據、挖掘數據、應用算法。

    1.1抓取數據

    數據是整個推薦系統的源泉,所以即使是在用戶越來越注重數據隱私的今天,哪怕是上千億的大廠,都有自己的數據爬取團隊不斷地從外部和內部抓取數據,他們整天在爬取和反爬取中斗法,就為了多獲取或者少流失一點數據,只有當內容具有了多樣性,一個推薦系統才有存在的合法性。

    1.2清洗數據

    無論是抓來的數據還是自己生產的數據都需要經過清洗,畢竟大家都是借鑒來借鑒去,存在重復的內容是很正常的事情,所以需要去重,在去重的同時,還需要識別垃圾內容、色情內容、政治敏感內容。

    1.3挖掘數據

    基于內容的推薦,最重要的不是推薦算法,而是內容挖掘和分析,內容數據尤其是文本數據,只要深入挖掘,就可以挖掘出一些信息供推薦系統使用。內容分析的越深入,能抓住的用戶群體就越細致,推薦的轉化率就越高。

    內容分析的結果主要有兩類:一個是用戶畫像和物品畫像的結構化內容庫,另一個是分析過程中可能得到的模型,如主題模型、分類器模型、實體識別模型、嵌入模型等,這些模型主要用于實時推薦剛剛加入的新物品,通過對物品內容的實時分析,提取結構化內容,再用于用戶畫像匹配。

    內容挖掘主要會用到自然語言處理(NLP)相關技術,如:

    使用IF-IDF和TextRank進行關鍵詞提取;

    使用隱式馬爾科夫模型(HMM)或者條件隨機場(CRF)進行實體識別(序列標注);

    在有分類體系的前提下使用SVM或FastText工具對文本進行分類;

    使用LDA等無監督算法對文本聚類或從文本中抽取主題模型;

    使用Word2Vec、Embedding的方式挖掘出字面意思下的語義信息。

    同時可以使用卡法檢測(CHI)和信息增益(IG)等方法從眾多標簽中選出主要的標簽。

    1.4相似度計算

    基于內容的推薦,最簡單的算法就是計算相似性,可以把用戶畫像和物品畫像表示成稀疏的向量,兩者之間計算余弦相似度,根據相似度對推薦物品排序,也可以使用信息檢索中的相關性計算方法如BM2F算法來做推薦匹配計算。同時在傳統機器學習方面,可以結合邏輯回歸(LogisticRegression)和梯度提升樹(GBDT)訓練一個二分類模型,把用戶、物品的結構化內容,日志記錄的上下文信息(如時間、地點、設備)作為特征,從而預測用戶“喜歡”和“不喜歡”的用戶行為。隨著近幾年深度學習的大火大熱,同樣可以根據用戶、物品畫像以及上下文信息訓練一個類似Deep&Wide的端到端的神經網絡預測模型。

    2.協同過濾推薦

    當推薦系統度過了只能使用基于內容的推薦結果后,就已經積累的一定的用戶行為了,這些行為通常是正向的,也就是或明或暗的表達著用戶喜歡的行為。這些行為可以表示成用戶和物品的關系矩陣,而近鄰推薦主要基于這個關系矩陣來計算用戶之間、物品之間的相似度從而達到推薦的目的。

    協同過濾是推薦系統算法里面最著名的算法,協同過濾通常分為兩類:基于記憶的協同過濾(Memory-Based)和基于模型的協同過濾(Model-Based),基于記憶的協同過濾又可以分為基于用戶的協同過濾(User-Based)和基于物品的協同過濾(Item-Based)

    2.1原理

    基于用戶的協同過濾就是根據歷史用戶行為,通過計算用戶相似度的方式,找到和目標用戶的相似用戶群體,然后將相似用戶群體消費過的、喜歡的物品推薦給目標用戶。

    基于物品的協同過濾也是根據歷史用戶行為,不過計算的是物品之間的相似度,先找到一批和用戶消費過的物品的相似物品,然將這些相似物品推薦給用戶。

    相對于基于用戶的協同過濾,基于物品的協同過濾在物品數遠遠小于用戶數的時候比較適用,同時物品之間的相似度比較靜態,它們的變化速度遠遠沒有用戶口味變化快。

    2.2存儲

    在實踐過程中,我們往往會先構建用戶和物品的關系矩陣,然而這個矩陣是非常稀疏的,所以在大數據量存儲的時候可以選擇典型的稀疏矩陣存儲方式CSR或者COO。

    2.3改進

    協同過濾可能會帶來馬太效應,所以會有一些常見的改進方法。

    基于用戶的協同過濾主要改進在用戶對物品的喜好程度上,比如懲罰對熱門物品的喜好程度,增加喜好程度的時間衰減等方法;

    基于物品的改進主要有物品中心化和用戶中心化,即先分別減去物品、用戶分數的均值,再進行相似度計算。

    2.4輸出

    協同過濾推薦有兩類輸出:相似用戶、物品列表,基于用戶、物品的推薦結果。

    推薦結果也有兩種表現形式:第一種是TopK推薦,形式上有點類似“猜你喜歡”,也就是先降序排序用戶對物品加權求和后的預測評分,然后選取前K個物品推薦給用戶;另外一種是相關推薦,也就是我們經常看到的“看了又看”,“買了又買”的推薦結果。

    2.5相似度計算

    相似度計算是協同過濾算法的核心部分,針對不同問題會選擇不同的相似度計算方式,常用到的計算方式有:

    適用于分析用戶能力模型之間差異的歐式距離;

    在文本、物品、用戶相似度計算比較常用的余弦相似度;

    同時針對余弦相似度對絕對值大小不敏感的問題,還有調整的余弦相似度(AdjustedCosineSimilarity),也就是先計算向量每個維度的均值,然后每個向量在每個維度上減去均值,再計算余弦相似度;

    度量兩個隨機變量是不是同時增減的皮爾遜相關度(Pearson);

    適合于布爾值的杰拉德相似度(Jeccard);

    2.6SlopeOne算法

    經典的協同過濾算法,相似度矩陣無法實時更新,整個過程都是離線計算的,同時相似度計算沒有考慮相似的置信問題,比如兩個物品有且僅被一個用戶喜歡了,余弦相似度的結果為1,然而這兩個物品可能并不相似。所以有針對此類問題的改進算法,如的SlopeOne算法等,但是SlopeOne算法只適用于評分問題。

    3.矩陣分解

    推薦系統的經典問題中有一類是評分問題,這類問題只是很典型,但不是很大眾,主要原因是評分數據很難收集,與此相對的行為預測問題會更普及一些。

    矩陣分解的盛行得益于多年前NetflixPrize那份關于評分預測比賽一百多萬美元的獎賞。話說2006年10月2號那天,影視界的土財主Netflix廣發英雄帖召集四海八荒各路豪杰,在已有推薦系統的基礎上降低電影評分預測的均方根誤差,只要誤差降低了10%的大俠,就可以瓜分100萬美刀,消息一出,群賢畢至。評分預測問題在一百萬美刀的加持上,催生出了無數的推薦算法,最為著名的就是矩陣分解系列算法,其中最著名的是SVD及各種變體。

    3.1SVD

    在矩陣分解算法出現之前,推薦領域的算法主要還是以近鄰推薦為主,但是近鄰推薦有幾個問題:一是物品之間的相關性,信息量不會隨著物品向量的維度而線性增加,二是關系矩陣元素稀疏,增加和減少一個向量維度,導致結果的差異性很大。橫空出世的矩陣分解可以解決上面的問題,直觀上來講,就是把原來一個很大的關系矩陣,近似的分解為兩個分別代表用戶和物品矩陣的乘積,推薦的時候不再使用大的矩陣,而直接使用分解之后的小矩陣。一個矩陣由代表用戶偏好的用戶隱因子向量組成,另一個矩陣由代表物品語義主題的隱因子向量組成,矩陣的奇異值分解(SVD)就是最基本的分解算法之一。

    3.2增加偏置信息

    基礎的SVD沒有考慮用戶和物品的偏置信息,會使得在一些現實情景下整個平臺的評分會很高。比如標準寬松的用戶常常會給出偏高的分值,同時一些電影的鐵粉也會對追隨的電影,無論質量高低,都打較高的分值。所以在基礎的SVD基礎上,出現了第一個變種:將用戶、物品偏置信息抽出來的SVD,和基本的SVD相比,它要多學習兩個參數:用戶偏置和物品偏置。

    3.3增加隱式信息和用戶屬性

    在增加完偏置之后,還有另外一個問題需要解決:有的用戶評分少,也就是顯示反饋比隱式反饋少(通俗來講,顯式反饋是指能明確表達用戶喜好的反饋行為,如評分,評分越高表示用戶越喜歡;相反隱式反饋指不能直接表達用戶是否喜歡的行為,如點擊、閱讀,用戶點擊或者閱讀了一個物品,并不能表示用戶喜歡這個物品,有可能就是簡單的看了一下發現不敢興趣就離開了,所有我們常常要從其它維度來判斷用戶是否喜歡這個物品,比如點擊的次數、閱讀的時長等)。所以后來的SVD++在前面的基礎上增加了隱式反饋和用戶屬性等基本信息,在學習的過程中又多了兩個向量:隱式反饋的物品向量,用戶屬性的特征向量。

    3.4增加時間因素

    解決完上面的問題之后,又正視了另外一個問題:人是善變的,一年前的我們和現在我們的偏好可能發生了翻天覆地的變化,那么在SVD中考慮時間因素也變得順理成章了。在SVD中考慮時間因素主要有這幾種做法:對評分按時間加權;對評分按時間段劃分區間,不用時間區間分別學習對應的隱因子;對特殊的期間如節假日等訓練對應的隱因子。

    3.5ALS

    矩陣分解除了上面提到的SVD系列算法之外,還有一種的比較流行的算法:交替最小二乘(ALS),他們的區別是SVD在優化過程中主要使用隨機梯度下降(SGD),而交替最小二乘則是利用矩陣的逆矩陣計算方式不斷優化目標,交替最小二乘的一個好處是可以參數并行化,而且在不是很稀疏的數據集上,會比隨機梯度下降要更快的得到結果。

    3.6WeightedALS

    矩陣分解算法是為解決評分問題而生的,而實際上推薦系統更關注的是預測行為,也就是一再強調的隱式反饋。可以使用One-Class的思維將預測評分問題轉換成預測行為問題,相對應的有改進后的加權交替最小二乘(WeightedALS),專門解決隱式問題的矩陣分解。

    3.7貝葉斯個性化排序

    矩陣分解在推薦系統的地位很高,因為它既有協同過濾的血統,又有機器學習的基因。但是由于它的目標優化函數的定義,它提倡的方法還是讓人頗有微詞。因為目標是使矩陣分解結果的乘積盡量接近原始矩陣,但是在實際使用的過程中,卻是拿這兩個矩陣乘積的預測結果來排序。這種針對單個物品的偏好程度進行預測,得到結果后再排序的問題,在排序學習中稱為point-wise,與之相對的,有直接預測物品兩兩之間相對順序的問題,叫pair-wise。所以貝葉斯學派提出的貝葉斯個性化排序(簡稱BPR模型)直接預測物品的相對順序,而非精確的評分。

    4.模型融合

    推薦系統在技術實現上一般分為三個階段:挖掘、召回、排序。

    挖掘的工作就是對用戶和物品做非常深入的結構化分析,各角度各層面的特征都被呈現出來,并建立好索引,供召回階段使用,大部分挖掘工作都是離線進行的。

    那么召回又是什么呢?因為物品數目太多,每次給用戶計算推薦結果的時候,如果對全部物品依次計算將會是一個災難,取而代之的就是利用各種簡單的、復雜的推薦算法從全量的物品中先篩選一部分比較靠譜的。

    最后的排序就是對篩選出來的靠譜結果做一個統一的排序,這個排序過程就會涉及到各模型結果的融合。不同的算法只負責推舉出候選結果,真正的是否推薦給用戶,由另外一個模型說了算,這個就叫做模型的融合。

    4.1模型融合

    在推薦系統模型融合階段,要以產品的目標為導向,比如在信息流推薦中,如果要以提高CTR為目標,那么就可以在推薦一個物品之前,使用邏輯回歸預估用戶對它的點擊率有多大,再根據這個點擊率對物品的輸出排序。邏輯回歸主要的兩個任務就是組合特征、學習權重。

    特征組合有一個難點就是組合數目非常龐大,而且不是所有組合都有效,只有少數組合有效。權重的學習主要看兩個方面:一個是損失函數的最小化,也就是模型的偏差是否足夠小;另一個是模型的正則化,也就是模型的方差是否足夠小。偏差代表著模型在訓練集上的準確性,偏差越小,預測值和真實值也就接近;方差代表著模型的穩定性和泛化能力,方差越小,模型越穩定,泛化能力越好,越能在真實環境適用。偏差和方差的權衡一直是機器學習領域老生常談的話題。

    此外邏輯回歸使用隨機梯度下降法優化損失函數,隨機梯度下降常常被人詬病的是它很難得到稀疏的模型,效果收斂也很慢。幸運的是Google在2013年KDD上發表了一種新的結合了L1正則和L2正則的在線優化算法:FTRL,被廣大廠家應用在自己的在線訓練平臺中。

    4.2邏輯回歸和梯度決策樹

    在邏輯回歸中,特征組合能有效表達出數據中的非線性事實,但是發現成本很高,需要花大量的人力和物力,而我們之前提到的梯度提升決策樹(GBDT)可以解決這個問題。梯度提升決策樹分為兩個部分:沿著殘差梯度下降的方向構建子模型的集成模型方案(GB)和構建子模型時用到的決策樹(DT)。在定義損失函數時,把邏輯回歸中的誤差平方和換成適合分類的損失函數,例如對數損失函數。業界往往在模型融合的時候把邏輯回歸和梯度決策樹結合起來使用,GBDT的任務就是產生高階特征組合,從而取代邏輯回歸中的手工組合特征的工作。

    4.3因子分解機模型

    前面提到特征組合是一個很龐大的工程,在組合二階特征時,兩兩組合會導致特征災難,同時大多數特征組合都不會產生效果,由于對應樣本的限制,沒辦法學習到對應組合特征的權重,所有只能放棄。而另一類算法模型能夠解決這個問題:因子分解機模型(FM,FactorizationMachine)。FM也常被拿來做模型融合。FM模型最直接的觀點就是每一個特征學習一個隱因子向量,在特征組合的時候將兩兩特征的隱因子向量做一個向量內積,作為兩者組合的權重,取代了前面去學習組合特征后的權重的方法。一定程度上講,前面提到的SVD系列的矩陣分解法只是FM中的特例,在特定條件下,可以使用FM推導出SVD系列的算法。

    4.4Field-awareFactorizationMachine

    在特征數目比較多時,有時候對兩個特征的隱因子做內積計算也是一件比較耗費時間的事情,那么我們可以通過先對特征聚類的方法將特征聚類成幾個類簇,每個類簇有自己的隱因子向量,在內積計算的時候,只需要選取當前特征和對應特征所在類簇進行內積就行了,使用這種方法可以大大的減輕計算量。這種改進被稱為Field-awareFactorizationMachine,簡稱FFM。

    4.5Deep&Wide

    類似邏輯回歸這樣的廣義線性模型主要采用特征海洋戰術來做模型融合,不斷的挖掘新特征、挖掘特征組合模型、尋找新的離散特征分散方法。這種單模型加特征的方式有很多好處:模型簡單,訓練和預測計算復雜度相對低;工程師們挖掘特征工程可以并行化;線性模型的可解釋性相對非線性模型好。

    特征工程讓線性模型表現為一個比較寬的模型,能在訓練集上得到不錯的性能,但是泛化能力稍有欠缺。在深度學習大行其道的今天,深度學習的泛化能力強于線性模型。所以前面提到的Deep&Wide模型結合兩者的優點,將寬度和深度模型結合起來進行模型融合。寬度模型就是我們前面提到的廣義線性回歸模型,如LogisticRegression等,而深度模型指的的多層的前饋神經網絡。

    深度模型對原始的高維稀疏類別型特征,先進行嵌入學習,轉換為稠密、低維的實值型向量,轉換后的向量維度通常在10-100這個范圍。這里的嵌入學習,就是先隨機初始化嵌入向量,再直接扔到整個前饋網絡中,用目標函數來優化學習。最后在融合的時候,由邏輯回歸作為最終輸出單元,深模型最后一個隱藏層作為特征接入邏輯回歸,寬模型的原始特征與之一起接入邏輯回歸,然后端到端的訓練參數。

    4.6MAB

    前面提到了融合階段會基于召回階段各推薦算法產生的推薦結果進行排序,從另外一個角度來看,這其實是一個選擇哪個算法輸出的結果作為最終結果的問題,針對不同的業務場景,制定不一樣的融合策略。選擇問題往往是現實生活中最頭疼的問題之一,而Bandit算法就是為選擇而生。

    Bandit算法來源于人們喜聞樂見的賭博學,它描述的是一個賭徒去賭場搖老虎機的故事,不同的老虎機外表一模一樣,但是吐錢的概率不一樣,在不知道每臺老虎機吐錢的概率分布分別是什么的情況下,怎么最大化收益。這個問題又被稱為多臂賭博機問題(Multi-armedbanditproblem,K-armedbanditproblem,MAB)簡稱MAB問題。只要是關于選擇的問題,都可以簡化成MAB問題。

    推薦系統里面有兩個頑疾,一個是冷啟動,另一個是探索利用問題,后者又稱為Exploit-Explore問題。Bandit算法都可以對著兩個問題對陣下藥。冷啟動問題是指針對于新加入的用戶、物品或者推薦系統剛啟動時,沒有足夠的歷史數據,就無法進行準確的預測。而Exploit-Explore問題描述的是兩個方向的權衡問題,以用戶的興趣為例,利用(Exploit)指的是要充分利用我們挖掘到的用戶的興趣,而探索(Explore)指的是用戶的興趣會隨時間發生變化,在利用的同時,我們應該繼續探索挖掘新的用戶興趣,不要故步自封,坐吃山空。

    另外需要指出的是Bandit算法并不是指一個算法,而是一類算法。Bandit算法的思想是:看看選擇會帶來多少遺憾,遺憾越少越好。在MAB問題里,用來量化選擇好壞的指標就是累計遺憾。常見的Bandit算法有:湯普森采樣算法、UCB(UpperConfidenceBound)算法、Epsilon貪婪算法。

    基本的Bandit算法沒有使用候選臂的特征信息,特征是機器學習的核心要素,是機器學習泛化的依賴元素,于是乎Yahoo的科學家們在2010年基于UCB提出了LinUCB算法,和傳統的UCB相比,最大的改進就是加入了特征信息。

    前面提到了協同過濾是推薦系統里面最經典的算法,因為它利用的全體的智慧,但是它無法捕捉到用戶的興趣變化,而且容易造成馬太效應,也就是典型的Exploit過了頭,而Bandit提倡走一步看一步,不斷Explore行的東西,將兩者結合起來,就有了COFIBA算法。

    5.其它算法

    5.1排行榜算法(熱門推薦算法)

    前面已經提到了推薦系統有一個頑疾,冷啟動,一個新用戶來了,推薦系統對他一無所知,這個時候可以嘗試給他推薦最熱門的東西,等積累一定的數據之后,再選擇其它的個性化推薦方案。然而排行榜算法不僅僅是計算賣的最好的或者閱讀量最多那么簡單。最簡單的排行榜,就是直接統計某種指標,按照大小去排序。在社交網站上,按照點贊數、轉發數、評論數去排序,這是一種最常見、最樸素的排行榜。這些做法不是很靠譜,因為很容易被攻擊,也就是被刷榜;并且馬太效應一致存在,除非強制替換,否則榜上永遠都是那些信息;同時這樣的計算不能反應排行榜隨時間的變化。所以在算法設計的時候,需要考慮到時間因素,可以用熱力學定律來定義每個物品,即排行榜里的每個物品都是炙手可熱具有一定溫度的,隨著時間的推移一定會耗散到周圍,溫度就會下降。

    5.2用戶標簽的加權采樣

    在數據挖掘完成后,我們一般會為用戶計算興趣標簽,如果計算的標簽太多的話,每次召回候選集的時候,計算的復雜度會很大,如果能給每個標簽設定對應的權重,這個時候可以使用簡單的加權采樣法,每次召回的時候不使用全部的用戶標簽,而是按照權重采樣一部分標簽來使用,這樣做有很多好處:減少了計算復雜度;可以保留更多的標簽;每次召回計算時還能有所變化,添加了隨機性,有利于模型泛化。

    加權采樣有兩種方式,一是知道全部樣本個數,每次采樣時遍歷所有的標簽,來依次決定每個標簽輸出的概率;另外一種就是不知道數據集有多大,獲取的數據是數據流,對應的就是流采樣,又叫蓄水池采樣,就是可以在模型融合之后加一層蓄水池抽樣,或者在召回階段加一層蓄水池采樣,這樣在不影響整個推薦流程和轉化概率的前提下,降低計算復雜度,提升推薦多樣性。

    同時在線階段要使用用戶的反饋行為做實時推薦,對于不同的用戶,活躍程度不同,產生的反饋行為數量不同,也可以用蓄水池采樣,為每個用戶取出固定數量的行為用于更新推薦結果。蓄水池采樣的做法是假設一批數據有n個,先直接獲取K個樣本保留,然后從K+1個樣本起,每個樣本以k/n的概率替換保留的K個樣本中的一個。

    5.3去重算法

    在推薦系統中,去重是剛需,主要用在兩個地方:一是內容源去重,二是不重復給用戶推薦。前面已經提到由于“相互借鑒”的原因,我們獲取的數據很大程度上存在重復值,所以需要對內容做重復性檢測。直觀的思路是分詞,然后提取關鍵詞,再兩兩計算詞向量之間的距離,距離小于一定閾值后就判定為重復。但是對應海量的內容,兩兩比較簡直是一個災難。內容去重在搜索引擎時代就已經是一個剛需了,所以可以復用搜索引擎的做法,Google在2007年的時候公開了他們的內容重復檢測算法Simhash,這個算法簡單有效,甚至造就了今天的信息流推薦產品。

    Simhash核心思想也是為每個內容生成一個整數來表示指紋,然后用這個指紋去做重復或者相似的檢測。當然這個指紋肯定不像MD5那樣的指紋計算那么簡單,常常會用Jenkins算法把每個詞哈希成一個多位二進制的整數,然后不同詞之間再做加減運算獲得內容的指紋,獲取到內容的指紋之后,可以兩兩計算漢明距離,比較二進制位不同個數,然后再和閾值比較得到是否相同的結論。

    除了內容重復檢測,還有一個需求是防止已經推薦的內容被重復推薦。和上述內容去重相比,最大的不同是過濾對象不同,Simhash過濾的是內容本身,而這里一般指的是內容的ID,在數據量不是太多的情況下,可以為每個內容建立一個UUID,然后用專門的數據庫來保存,還可以為它建上索引來保證查詢時的高效性。但是數據巨大時,對于存儲的消耗又是一個問題,有一個比較老但是比較有用的做法是布隆過濾器Bloomfilter,布隆過濾器的原理也要用到哈希函數。它包含兩部分:一個很長的二進制位向量,和一系列哈希函數。Bloomfilter也并不是百分之百保證的,有很小的概率把原本不存在集合中的模式串判斷為存在,但是這個小概率是可以承受的。

    5.4深度學習算法:

    近幾年,深度學習的圣火燎原般地燃燒到各個領域,推薦也不例外,大廠商們不斷地在將神經網絡融入到推薦服務的路上上下而求索。

    攜程不斷演進的AutoEncode系列算法,將用戶和物品關系矩陣中每一行或者每一列作為網絡的輸入和輸出,訓練用戶和物品的編碼器,同時在后續的改進版本中把噪聲、用戶屬性、物品屬性信息作為sideinformation以及上下文情景融入到網絡中提升模型的性能。

    電商巨擘阿里提出了最大堆樹模型TDM(Tree-basedDeepMatch),它將樹結構和神經網絡結合起來的,在超大數據量下,通過對用戶興趣進行層次切分和逐層圈選,避免了直接在全量候選集上的超大計算,它采用將大問題切割成多個小問題遞歸求解的方式實現全庫檢索,從而提升結果的新穎比例并保持了召回效果。同時在廣告領域,借助類似注意力(Attention)模型新增網絡結構DIN(DeepInterestNetwork),對用戶的歷史數據和待估算的物品進行部分匹配、計算權重(匹配度越高的歷史數據就對結果的影響越大)。

    社交網絡廣告領域,領英提出的AudienceExpansionforOnlineSocialNetworkAdvertising嘗試解決如何定位目標受眾和原始受眾的相似屬性的問題。

    除此此外,還有些其它的網絡結構,Node2Vec,Wide&Deep,DeepNeuralNetworksforYouTubeRecommendations,ConvolutionalMatrixFactorizationforDocumentContext-AwareRecommendation。

    除了各大廠商的研究以外,學術界也研究了各種網絡結構,如PNN(Product-basedNeuralNetwork),NFM(NeuralFactorizationMachine),AFM(AttentionFactorizationMacine),NCF(NeuralCollaborativefiltering)。具體細節代碼可參考Github代碼

    5.4強化學習算法:

    把推薦系統當成Agent,獲取用戶信息和上下文信息(state),將物品推薦(action)給用戶,用戶及時做出反饋(reward),Agent評估ExploitationNetworkQ和ExplorationNetworkQ~的表現,如果Q效果更好,即推薦的準確,得到了正向的reward,那么保持模型不變,如果Q~的表現更好,則將Q的參數向Q~變化,一段時間后,再根據積累的歷史經驗對Q模型參數進行更新,這就是DQN在推薦領域的案例。通過這樣的方式,將強化學習應用到推薦領域。強化學習特別適合于需要及時捕捉到動態變化的情景。

上一篇:設計推薦系統的關鍵元素是什么?
下一篇:沒有了

圖文精選:

Copyright?2012-2019 小螞蟻信息網版權所有 粵ICP備14061018號-1


鄭重聲明:本網站資源、信息來源于網絡,完全免費共享,僅供學習和研究使用,版權和著作權歸原作者所有,如有不愿意被轉載的情況,請通知我們刪除已轉載的信息。

Top 双色球10000期走势图表