推薦系統中的EE問題——Bandit演算法
Exploration and Exploitation(EE問題,探索與開發)是推薦領常見的問題,主要是為了平衡準確性和多樣性。
Exploitation是指我們要迎合使用者興趣給他推薦他想要的,Exploitation指的是怕使用者膩,所以要推一些新的東西,萬一使用者感興趣呢是吧。
多臂老虎機問題就很像推薦這個場景,我們不知道每個機器吐錢的分佈,只能根據現有的知識搖,如果一直搖所知最高的就是Exploitation,但這個吐錢最多的未必是真的,還需要通過Exploitation來探索。
先驗知識
-
累積遺憾
錯誤的選擇到底有多少遺憾,累計遺憾如下
t表示輪數,r表示回報。左邊可以認為是最理想情況下的總收益,右邊是自己策略的總收益。 -
Beta分佈
beta分佈可以看作一個概率的概率分佈,當你不知道一個東西的具體概率是多少時,它可以給出了所有概率出現的可能性大小。
a和b分別代表在a+b次伯努利實驗中成功和失敗的次數
樸素Bandit演算法
先隨機嘗試若干次,統計每個臂的平均收益,選最多的那個一直搖
Epsilon-Greedy演算法
選0-1間較小的數epsilon,每次以epsilon的概率選一個臂,以1-epsilon的概率選目前最好的臂,根據該次回報值對回報期望進行更新。
優點是有了探索的行為,並且可以調整權重,epsilon=0相當於完全不探索。
缺點是實際上epsilon理想情況下應該是動態的,前期多探索,等後期穩定了就少探索一點。
湯普森取樣
使用了beta分佈,假設每個臂都有一個吐錢的概率p,同時每個臂都可以維護一個beta分佈。
誒次選擇臂的方式是:用每個臂現有的beta分佈產生一個隨機數b,選擇所有數中最大的那個搖
UCB演算法
解決Epsilon-Greedy的缺點,因為之前提到了Epsilon-Greedy並沒有利用到之前的資訊,包括臂吐錢的概率和探索的次數。
根據當前每個臂探索的次數和吐錢的次數,其實可以計算出每個臂吐錢的觀測概率P’,真實的概率假設是P,核心就是計算gap
我們先確定兩個事實:(1)每個臂選擇的次數越多,gap越小 (2)對於沒被選中的老虎機,gap會隨著輪數的增大而增大
ucb演算法中p=p’+gap的計算如下:
T是目前的試驗次數,n是臂被試次數
LinUCB
傳統的實現方法存在很大的缺陷,主要是缺乏用附加資訊刻畫決策過程的機制。
在推薦系統中,通常把待推薦的商品作為MAB問題的arm。UCB是context-free類的演算法,沒有充分利用推薦場景的上下文資訊,為所有使用者的選擇展現商品的策略都是相同的,忽略了使用者作為一個個活生生的個性本身的興趣點、偏好、購買力等因素,因而,同一個商品在不同的使用者、不同的情景下接受程度是不同的。故在實際的推薦系統中,context-free的MAB演算法基本都不會被採用。
在LinUCB中,每一個arm維護一組引數,使用者和每一個arm的組合可以形成一個上下文特徵(上下文特徵的特徵維度為d),那麼對於一個使用者來說,在每個arm上所能夠獲得的期望收益如下:
對於一個老虎機來說,假設收集到了m次反饋,特徵向量可以寫作Da(維度為md),假設我們收到的反饋為Ca(維度為m1),那麼通過求解下面的loss,我們可以得到當前每個老虎機的引數的最優解:
其實就是嶺迴歸,我們很容易得到最優解為:
既然是UCB方法的擴充套件,我們除了得到期望值外,我們還需要一個置信上界,但是,我們沒法繼續用Chernoff-Hoeffding Bound的定理來量化這個上界,幸運的是,這個上界已經被人找到了:
因此,我們推薦的item就能夠確定了:
可以看到,我們在計算引數及最後推薦結果的時候,用到了以下幾部分的資訊:上下文特徵x,使用者的反饋c。而這些資訊都是可以每次都儲存下來的,因此在收集到了一定的資訊之後,引數都可以動態更新,因此我們說LinUCB是一種線上學習方法。
相關文章
- 推薦系統中的冷啟動問題和探索利用問題
- 【推薦演算法】推薦系統的評估演算法
- 雲音樂推薦系統(二):推薦系統的核心演算法演算法
- 推薦系統實踐學習系列(三)推薦系統冷啟動問題
- 推薦系統之冷啟動問題
- 推薦系統一——深入理解YouTube推薦系統演算法演算法
- 推薦系統之資訊繭房問題
- 【推薦系統】:LFM演算法解析演算法
- 基於內容的推薦系統演算法演算法
- YouTube深度學習推薦系統的十大工程問題深度學習
- AutoML 在推薦系統中的應用TOML
- 【推薦系統篇】--推薦系統之訓練模型模型
- Netflix 推薦系統 (Part One)-排序演算法排序演算法
- 【轉】推薦系統演算法總結(一)演算法
- 推薦演算法在商城系統實踐演算法
- elasticsearch演算法之推薦系統的相似度演算法(一)Elasticsearch演算法
- 知了 | 基於NLP的智慧問答推薦系統
- 推薦系統實踐 0x0a 冷啟動問題
- Mahout的taste推薦系統引擎(影片推薦案例)AST
- 【推薦系統篇】--推薦系統之測試資料
- 推薦系統概述
- python 推薦系統Python
- 破解YouTube、Facebook推薦系統背後的那些演算法演算法
- 《推薦系統實踐》筆記 01 推薦系統簡介筆記
- 問題解決:構建基於深度學習架構的推薦系統!深度學習架構
- 淺談微視推薦系統中的特徵工程特徵工程
- 推薦系統論文之序列推薦:KERL
- 【推薦系統篇】--推薦系統介紹和基本架構流程架構
- 推薦系統應該如何保障推薦的多樣性?
- PredictionIO:開源的推薦系統
- 序列推薦系統的前世今生
- 推薦系統的評估方法
- 如果我是推薦演算法面試官,我會問哪些問題?演算法面試
- 《推薦系統》-DIN模型模型
- 《推薦系統》-PNN模型模型
- 推薦系統概念篇
- PyCon 2018: SVD推薦系統在Python中的實踐Python
- 推薦Linux系統中4款好用的編譯器!Linux編譯