1. 程式人生 > >大資料——從推薦策略演算法到推薦系統,到資料架構,再到產品設計

大資料——從推薦策略演算法到推薦系統,到資料架構,再到產品設計

01 推薦策略以及演算法的百花齊放

承上,我們講了最基礎的基於內容屬性本身的相似關係進行鍼對物品的推薦,再到基於使用者的興趣屬性進行推薦,再過渡到基於協同關係進行推薦,其實這些都算是推薦的策略,說的更技術點就是推薦的演算法。

而推薦策略的想象力其實無限的,並不侷限於某種固定的策略,只要從業務的角度走的通,其實都是可以的,當然具體的選擇以及搭配問題,後面我會講到。



加我的群號大資料:   710219868, 邀請碼 南風 (必填)有大神有資源一起交流學習,共同進步

我們來看已經歸屬於大騰訊的“起點中文網”的推薦。

PS:截圖是我隨意點選的一本小說《飛劍問道》,不重要,可以不care。

從他的推薦理由“喜歡這本書的人還喜歡”來看,顯然是通過使用者之間的閱讀關聯性來做的這次推薦,說的更通俗易懂點就是購物籃分析:買這個商品的人還經常一起買其他商品。

是不是邏輯關係很像?當然實際上到底是不是這種推薦策略,就需要起點的演算法工程師出來講話了,我個人只是從業務層往下進行追溯從而得出的結論。你看,我說的對不對,策略一層是沒有定式,購物籃分析的邏輯依然是可以用在看文學站的推薦邏輯上,沒毛病。

我們再來看一個策略,依然是騰訊的,騰訊社交廣告一直對外宣稱的技術“Lookalike”,翻譯成技術語言就是“人群擴散演算法”。簡單的邏輯是,先找種子使用者,然後基於使用者畫像和關係鏈(這是騰訊強項)挖掘相似使用者,然後再將受眾進行擴大。

你覺得這是推薦?看著更像是廣告投放,但廣告的投放誰說不是一次資訊主體的推薦呢?本質上應該是沒有這麼大的差距的,只是一個從業務的角度去描述,一個是更偏技術的角度的說法。

隨著阿法狗諸如此類的人工智慧應用的推廣(造勢),以及近幾年計算能力的大幅提升,使得依賴於大計算能力的神經網路的相關演算法得以大放光彩,基於神經網路的一些推薦演算法或者策略也是一個大的研究方向。

綜上,不必舉過多的推薦策略或者演算法例子了,核心想說的就是,其實策略層本身就是百花齊放的狀態,甚至你隨意光顧一些平臺網站,都能遇到不同的策略和演算法,甚至是搭配組合,沒有限定的策略和演算法層,只有不同不適應的應用場景,以及從策略到推薦系統層,其實還是有很多東西的。

02 從推薦策略演算法到推薦系統

接上面的話題,從策略演算法層到系統層,差的有哪些東西:

1.首先是策略並不等於系統,這是明確的,推薦的整體邏輯也未必是一種邏輯在裡頭,也可能是多種的策略組合。

2.其次,如何選擇策略,如何組合策略,如何去評判,如何追蹤效果,這點尤其重要。

3.對於整個系統級的支撐,在工程化,以及資料架構上如何去實現,才能支援上層的演算法邏輯層。

4.產品層的策略對整個推薦系統的影響有多大。

如上四個問題都是從推薦系統的角度出發進行分析的,從這裡我們知道,光知道策略或者推薦演算法,是不是離推薦系統的構建還差那麼好幾個量級,02這個小節,我們先從1/2兩個小點進行分析。

策略!=系統,這點是明確的,並且選擇哪些策略去做推薦,本身就有嚴格的選擇機制以及評判機制在裡頭的。

再多的例子這裡就不舉了,很多看其推薦的列表大致能猜測一些其推薦的策略重點,其實或多或少還真是與調侃的有一些相似之處,那從表面看起來大部分的推薦系統都不像那麼高大上,問題出在哪,是他們的策略就是這麼Low?是他們的演算法工程師太菜?

其實核心問題在於推薦系統的評價機制,在實際的場景中,一切以效果評價為導向,將策略,甚至是組合推薦的策略往評價得分高的方向進行調整,對於整個系統來說才是有意義的,並不是說演算法高深就一定好。

那麼,具體什麼是合理的評價方式呢,大部分來說都是為了讓使用者的挺溜時間加長,最直接的表現就是點選轉化,但並不是完全絕對的。以百度的調侃為例,你要的是饅頭,人家給你推薦的是饅頭製造機。

這跟其商業模式是有一定的關聯的,百度之前的核心就是關鍵詞競價廣告,那麼,他必然要衡量幾個方面的東西,第一是關鍵詞與搜尋詞的相關性,離太遠太扯淡的不行;第二相關廣告的競價。

於是,他就需要衡量準與商業價值之間的關係了,所以,並不是一味地追求準確,而是追求在其中最佳的平衡點,能給百度帶來最佳的廣告收益轉化。

再說其他的之前我所體驗的推薦系統,他們就一定不準嗎?或許以我個人的角度講,他們推薦的並不是很符合我的口味,但是如果他們是從整體轉化進行評判呢?這種機制是他們所有目前方案中的最佳轉化方案,那為什麼不能用?少數的個體badcase並不會影響整體的策略,也不用管low還是不low,抓住核心問題。

當然,不可否認的是,如果能滿足所有的人的意願認為它很準,又能讓整體系統的轉化做到最大化,那當然最好了。

所以,從推薦策略演算法到推薦系統,最核心的一個東西就是評估機制,構建起完善並且合理的評估機制,有利於整體推薦系統的優化和改進。說到評價,那不得不說的就是AB測試了,一個好的推薦系統,一定是會帶AB測試的,能夠很好的進行策略對比,進行流量分配,效果展示等等。

03 推薦系統架構

前幾天記得分享過朋友的一篇文章,核心就是講推薦系統架構的。對於整個推薦系統來說,系統的架構設計會嚴重影響到整個系統的效果與上層應用的體驗。

在推04中,記得大致提到過基於使用者畫像推薦的短期興趣與長期興趣,其實長期興趣的挖掘還好,基本基於離線的計算結果依然還是可行的,但是對於很多推薦機制來說,就是短期興趣,更切確的說是你當前行為的興趣表現。

這意味著,我需要實時的對你的瀏覽行為進行興趣分析,然後實時的反饋給你推薦列表,這種機制看似簡單腦殘,但往往很有效,因為他足夠實時,而在段時間內,人的注意力一般只會放在很垂直的某個點上,所以往往就很有效。

但是,看似簡單的機制,對於這種需要支援實時分析,實時反饋的機制來說,架構的設計就是一個挑戰。此外,在整體的系統構建過程中,你需要考慮演算法邏輯層可迭代性的問題,即通過反饋資料能夠不斷的自動調整你的演算法策略,從而讓效果更佳,這些都是需要資料架構進行支撐的。

此外,就是上面說的AB測試,效果反饋機制,都是需要整合至整個推薦系統中,再有承接上層應用,你需要考慮好計算的效率與結果輸出的效率問題,所以快取的設計與快取更新的機制又是個問題。

從整個架構層來說,其實是相對繁雜的,與我們之前所說的策略演算法層,這是另外一個維度上的東西,需要我們從整體系統級別去考量。

05 綜上

到這裡,整個推薦系列基本就結束了,從整個系列的邏輯我們知道,如果你要架設一個推薦系統,那麼首先對於推薦系統的一些基本概念需要熟悉,然後瞭解不同的推薦策略,然後結合場景分析最佳的一些推薦策略演算法,然後基於架構的考慮(不同層級的分離),搭建整個推薦系統,然後從產品的思維角度去優化,最終產出符合你業務特徵的推薦系統。看著容易,其實操作起來還是有一定困難的。

推薦系統在一般業務規模小的時候,其實鳥用不大的,只有在業務有了一定規模之後,那麼就到了錙銖必較的階段了,使用推薦哪怕增加了5個點的增長轉化,也是極好的,更何況可能遠遠不止呢。

目前很多主流推薦系統都是基於使用者的畫像、興趣愛好推薦的(這是一種相對靠譜,又容易在大規模使用者場景中使用的策略),你越是被他推薦的東西牽著走,你後續就會越陷入其中,最終導致了你所獲取的資訊一直都是圈定在某個範圍內的,這就是所謂的“資訊繭房”。

其實要形成資訊繭房一方面是由於推薦機制導致的,另一方面跟場景也是有很大關係的,比如如果使用者被你所推薦的東西所推動,那麼就容易陷入這種狀態,如果使用者獲取資訊的渠道有多種(比如導航、搜尋等等),那麼就不那麼容易。

典型如今日頭條,如果在前期你不小心點選了一些比較low的內容,然後它就越給你推類似的文章,結果你越看,它就越推,於是你所看到的東西都是一大坨類似離譜八卦了。從直觀的角度看,今日頭條重度依賴於使用者的閱讀行為,而頭條又是一個重推薦場景的產品,所以會相對容易陷入“資訊繭房”的這種情況。

單純從轉化的角度看來,短期內可能對於系統側來說是正向的,因為他才不會關注到底是不是“資訊繭房”,他只關注轉化有沒有提升,但長期來說,對於使用者就是一種損害。所以,我們在考慮設計推薦策略演算法的時候,多多少少都會考慮推薦的新穎性。

但新穎性這東西就是一個雙刃劍,新的東西意味著不確定,不確定意味著可能低的轉化,所以好的推薦系統一定是在確保你興趣的同時,又會考慮新穎,並且這是一種順其自然的推薦資訊主體的過渡,構建起你偏好資訊與新資訊之間的關聯性,讓你同樣有慾望去點選那些新的東西,不過這就很難是了。