當咱們打開一個資訊APP刷新聞時,有沒有想過,系統是如何迅速推送給咱們想看的內容?資訊APP背後有一個巨大的內容池,系統是如何判斷要不要將某條資訊推送給咱們的呢?這就是今天想跟你們探討的問題——推薦系統中的「召回」策略。算法
1. 推薦系統中的召回數據庫
召回策略主要知足的是可以從海量的數據中召回一部分相關的候選集,在實現方法上也有不少種,主要能夠分爲離線召回和在線召回。離線召回的方法主要有協同過濾、聚類算法。協同過濾能夠分爲基於用戶的協同過濾和基於物品的協同過濾。在線召回主要是基於搜索的方式,從該用戶的歷史記錄中利用不一樣的算法抽取相關信息,這裏的相關信息能夠是物品的基本信息,也能夠是離線標註的標籤,而後將這些抽取到的關鍵信息從索引中快速的查詢出相關的結果集。網絡
2. Elastic Search與TF-IDF運維
Elastic Search是基於Apache Lucene(TM)的一個開源搜索引擎,是一個分佈式且具備高擴展性的全文檢索的搜索引擎,並且還提供了近乎實時的索引、分析、搜索功能。 Lucene是現今搜索領域被認爲速度最快、性能最穩定、功能最全的搜索引擎庫,而Elastic Search是以Lucene爲核心進行二次開發的搜索引擎,主要完成索引和搜索的功能,它能夠經過簡單的接口隱藏Lucene的複雜性,從而讓整個搜索引擎變得更方便。分佈式
在基於內容推薦的算法中,關鍵詞的提取是相當重要的一環,關鍵詞提取直接影響了物品類似度計算的效果。假如沒有關鍵詞提取的話,物品所有信息做爲特徵維度會形成維度災難,使得維度巨大,且構造的矩陣會至關稀疏,不利於計算。在關鍵詞提取的過程當中,TF-IDF算法是頗有效率的一種算法。關於TF-IDF算法咱們再也不這裏展開詳述。post
3. Elastic Search與推薦系統的結合性能
Elastic Search的搭建過程能夠參考官網。安裝配置完成Elastic Search以後,當數據進入Elastic Search並完成分詞和索引之後,如今只可以根據指定輸入的詞語進行搜索,與推薦系統並無任何聯繫。所以,咱們能夠根據用戶的歷史記錄進行TF-IDF構造關鍵詞而且輸入Elastic Search,採用倒排索引的方式進行存儲,以便全文搜索。搜索引擎
簡單來講,用戶的瀏覽、收藏等行爲會被記錄在數據庫中,推薦系統會收集用戶的各類行爲記錄,利用TF-IDF關鍵詞提取算法,實現一個機率模型,這個機率模型能夠計算出近期用戶記錄中用戶偏好的關鍵詞,因爲這些關鍵詞由用戶的記錄產生,所以就具備了個性化的特性,再將關鍵詞輸入到Elastic Search,就能夠召回與用戶強相關的內容集合。3d
利用這種方法搭建的推薦系統,其優點也很明顯:一是可以對內容池中的全部物料作可計算的精細整合,實現對全部物料的召回,特別是對長尾物料的召回,從而極大地提升物料利用率;二是自帶物品冷啓動,在沒有大量用戶數據的狀況下也能實現個性化推薦,而且讓用戶對推薦結果滿意。索引