大數據帶來了「機器學習的原料」,個性化在此基礎上進行挖掘,但是也就帶來了問題,「大數據帶來了大計算」,想要獲取較優的結果,需要構建更加大的數據集,更好的模型去建模,由於「用戶決策的複雜性」,必然導致模型會往複雜方向發展(或者說往更「細粒度」「多決策模型發展」)。

機器學習的核心就是「基於過去的事實和數據」,用來「發現趨勢和模式」;這裡體現的兩過程就是從「學習過程到決策過程」(配圖);傳統數據分析旨在回答關於過去的事實,機器學習模型提供了「對於結果的洞察力」,機器學習幫助揭示未來的一個結果的概率而不僅僅是過去發生的事情,回答關於未來事件的可能性的問題。在推薦領域的核心問題就是如何構建一個用戶對商品的評價模型。推薦系統通過收集用戶和商品數據,利用機器學習演算法構建用戶模型,最終影響推薦結果。形象地來說,我們通過機器學習構建了模型f(也可稱之為映射),然後我就可以用這個模型預測出人對商品的感興趣程度,即「f(人,商品)=人對商品的感興趣程度」

所以你會說那麼推薦豈不是很簡單,只要利用數據構建特徵與訓練數據,然後學習到上面所述的打分模型f,那麼一個用戶來到平臺,「把所有商品逐個和用戶組合放到模型裡面打分」,最終「按分數從大到小排序」就可以了?對,你非常聰明,但是你可能忽略了以下若干問題:

2.1成本與資源問題

▏2.1.1時間與資源

互聯網時代個性化推薦的典型應用場景中,商品/內容一般是「海量」的(百萬-萬億級別),如果要做到「對每個用戶商品預測分數」那麼這將是一件「耗時耗力」的事情,而在「體驗至上」的互聯網時代,留給計算機的時間在「百毫秒以內」,那麼必然需要機器資源來解決海量計算問題,而這就涉及到了「成本與效果問題」

如果推薦效果滿分是100分,則使用其它不那麼完美的技術可以使用「20%資源達到80分的效果」,但是可能另外的20分可能需要80%的資源甚至更多;所以這時候我們是不是可以在模型打分之前先做一層「初篩」,簡單的做法有很多,比如在總的商品池子裡面先刪除一些低質量的商品(比如售後評價低,退貨率較高的等等);再比如「根據用戶行為」,提取少量不在用戶興趣範圍但熱銷的商品等等。當然這肯定會損失一定的效果,所以我們是不是在初篩這一層好好下功夫做一下,這樣既能「保證效果」,也能「節省成本」。其實不光有初篩這一步,整個推薦還可以做其它拆解,引入「流水線式推薦流程」,每個環節專註自己的事情,可以把「效率」「效果」都做好。只要做好各個環節的銜接工作(「api」),那麼整個流程將可以高效運轉。 ??

▏2.1.2流水線

讓我們來看一下推薦系統常見的模塊分解圖(架構圖),分別為「召回,過濾,排序,重排序」

「召回模塊」主要是根據各種任務類型在全站商品庫進行商品篩選,其中任務類型主要為上一講中介紹的基於用戶,商品,內容,模型等等常見方法;「過濾模塊」則更多地考慮用戶購買力/性別/年齡/已購商品等問題,利用規則或模型剔除召回模塊初篩後的商品

「排序模塊」會更細化地利用用戶/商品特徵/召回各類模型得分等因素,並以點擊率/轉化率等指標為目標,對用戶商品對打分預測,並根據得分進行排序

「重排序/打散」則會更多考慮多樣性,當然還有新穎性,驚喜性,實時性,商品覆蓋率等指標。而最近推薦系統地發展,則開始探索強化學習(反饋學習),深度學習等技術,開始對原有模塊深挖與拓展。後面幾章我們會具體展開。

▏2.1.3架構圖

為了配合上述模塊的構建,系統工程架構上需要考慮日誌收集與迴流模塊,演算法離線計算模塊,近實時/實時計算模塊,推薦服務與容器,api業務耦合模塊等,當然上述模塊還可以單獨再做拆分,類似現在普遍採用的微服務概念,具體我們也會在後面講到,並作拆解的分析與介紹。

推薦閱讀:

相關文章