固執的推薦引擎

dagis發表於2021-02-09

一直認為推薦引擎可以是很簡單AI應用,也可以是最有潛力做複雜的。

數字化時代之前的推薦是怎麼做的。試想一個初次當家的小姑娘跑進百貨商店,和售貨員阿姨說:"我想買一塊香皂,阿姨有什麼推薦的嗎?”售貨價上一共只有三款香皂,售貨員阿姨根據記憶,嗯,這麼大的小姑娘一般都是選這款,於是就推薦了這款。這個過程數字化之後,就是最簡單的推薦引擎。

隨著物資越來越豐富,香皂選項可能上升到幾千種,香皂的屬性從只有價格和香味擴充套件為功能,成分,產地等幾十上百個屬性後,每個人的需求也更加精細化,那售貨員阿姨的推薦就沒那麼簡單了。這也是一般購物網站的推薦引擎需要實現的功能,從琳琅滿目的商品中做推薦。每個使用者都用一個向量來表示,其中每個元素都對應一個使用者屬性,比如說性別,年齡,區域,終端裝置,訪問時間,消費級別,購物慾…,你可能會質疑,使用者終端裝置資訊有什麼用,使用者的購物慾是怎麼得到。因為本文是講推薦引擎,所以不跑題去討論這個了,有興趣的可以參考之前的一篇文章<最瞭解你的人是誰----是他是她還是它>。有了這個使用者屬性後,要在顧客資料庫裡找出最相近的那個使用者或一組使用者,把他們的選擇推薦出去就好啦。

可能你還是會覺得這很簡單。但仔細一想,很容易就會發現兩個問題。

問題一,當你的資料庫客戶有幾個million,使用者屬性增多後,實時的找出最相似的使用者,計算量相當驚人。而作為線上推薦,據實驗統計,時延的增加會直接降低點選率。

問題二,根據相似客戶的選擇做推薦,會使得新上架產品永遠沒有機會出現在推薦當中。

對於問題一,很自然的大家會想到clustering之類的離線計算來降低線上計算的壓力。不過在某些情況下會降低推薦的效果。

對於問題二,我覺得吳恩達的<機器學習>課程當中舉的例子可以很好的解決這個問題。就是商品的屬性也向量化,匹配使用者的結果並不是直接targe到某個商品,而是target某組屬性的商品,只要新上架的商品滿足屬性,就在推薦範圍之內。建立這個數學模型和求解應該不是個難題。在推薦引擎技術領域,稱之為從使用者協同過濾,轉換到使用者內容混合協同過濾。

之前提到,使用者的各種屬性可以根據商家們長期積累的收集資料手段,應該不難解決。那商品的屬性呢,特別是像電影,音樂,書籍之類的推薦,僅僅僅靠類屬,年份,拍攝地等硬屬性,是遠遠不夠的。於是很多推薦引擎會去網上爬資料,針對某部電影或某個音樂通過自然語言處理做情感分析。比如說Spotify會從部落格上收集使用者對歌手和歌曲評論的關鍵詞,然後收取top的一些評論語作為內容屬性。(配圖來自網路)

Image

以上的討論我們沒有提及到客戶在某個網站已經有了購買記錄。實際上,商家們常常會根據使用者已經購買過的商品做推薦,這就是比較有名的”猜你喜歡”推薦。亞馬遜稱自己的推薦演算法就是不做使用者協同過濾,而是完全依賴使用者的已購買選項來推薦。通過商品之間的相似度,來推銷相近商品。而商品與商品之間是否相近很大取決於歷史上客戶的購買組合,並不是物理上的相似度。舉個例子,如果你買了印表機,那可能相似度最高的是列印紙和墨水,而不是另一款類似印表機。這個演算法的很大優勢是,由於商品屬性在短時間內較為穩定,所以大部分的計算量可離線完成。同時,將必要組合商品推薦給使用者,很大的提高了使用者體驗。

文中開始提到推薦引擎是很有潛力做複雜的。使用者的品味不僅僅是商品的硬屬性決定的。對於軟屬性,除了網上公開評論的情感分析,對於音樂本身的分析也是一個相當大的領域可以鑽研,同理與電影,書籍或其他和taste關係比較大的商品。對此,Spotify的推薦引擎引入了音樂模型來分析音樂本身,這也使得新上榜的音樂有同等的機會出現在推薦列表裡。

之前一個朋友轉過一篇文章,分析AI為什麼不能超越人類創作出最好的曲子,論點是人類對於某個歌曲的喜好,不僅僅是歌曲本身,歌曲相關的故事,超越自我的創作都是歌曲能夠驚世的重要因素,是AI無法做到的。同理,對於主觀非常強的內容推薦,AI是難以做到突破性的推薦。這也類屬於推薦引擎比較糾結的經典問題,多樣性Diversity。

我有在Medium上看blog的習慣,如果我看了一兩篇和python visualization的文章,接下來的日子我的medium主頁就充滿了這類文章,非常的煩人,不如不推薦。瑞典本土聽書軟體storytel,估計非常自信與自己的推薦引擎,所以分類瀏覽做得很簡陋。由於冷啟動問題,初次使用者費很大精力找到自己感興趣的書,之後由於推薦缺乏多樣性,就被鎖定在你看過的書的類屬裡。一個朋友很明確的告訴我,就是很不滿它的推薦,所以不聽了。相比之下,Spotify就做得比較好,可能也不一定做得比較好,而是由於人們對於歌曲的喜好的風格比較執著,換來換去,只要風格一致,還是比較喜歡聽,不容易膩。歌曲可以反覆聽,文章,書或電影一般不會反覆看。

在開始寫這篇文章之前,一直想著一個問題,推薦引擎到底是商家受益更多還是使用者收益更多,商家提高推薦引擎推薦質量的動力在哪裡?然後我又想起了電商還不普及的那個年代,經常在超市拿起一件你經常用的商品放進購物籃,就會有推銷阿姨過來,把你的選擇刺裸裸的鄙視了一番,之後極力推薦自己的商品。利益驅動之下,怎麼防止商家把這個功能做進推薦引擎呢。就比如搜尋引擎,怎麼確保放在最前面的搜尋結果不是收了最多錢的。使用者的確就是羔羊。好在和推薦引擎技術相關的論文或文章中,單純的工程師們,要致力提高的還是點選率購買率以及推算出來的使用者滿意度。

去年夏天看過一本書,叫做<nudge>。作者提到,很好的選擇架構,選擇人會受益很大。比如說選單的菜品順序擺放,會極大的影響顧客是選擇健康的沙拉,還是油炸垃圾食品。推薦功能從這個角度來說,不僅是nudge,甚至是push。做一個良心的推薦引擎對使用者來說有多重要。

 

部分引用: 

https://medium.com/datadriveninvestor/behind-spotify-recommendation-engine-a9b5a27a935

https://www.cs.umd.edu/~samir/498/Amazon-Recommendations.pdf

https://marutitech.com/recommendation-engine-benefits/

 

作者微信公眾號:

Image

相關文章