推薦系統之路

2019-09-26     AI公園
作者:Dimitris Apostolopoulos
編譯:ronghuaiyang

導讀

在本系列文章中,我將與你分享掌握推薦系統的經驗,以及從基本模型到推薦系統相關的高級模型的實現。

個性化客戶體驗推薦系統

我會簡要介紹你在構建這樣一個系統時將遇到的與推薦系統相關的挑戰,以及我為克服這些挑戰所做的工作。

最後,我將向你介紹一些想法、不成功的嘗試,以及我用來跟蹤模型性能的驗證框架,還有我構建的其他機器學習模型,希望能得到成功的方式。

但首先,…

什麼是推薦系統?

推薦系統可以說是大數據最常見的應用,通過為你的網站推薦內容,來提高個人的用戶體驗

推薦系統是信息過濾系統和人工智慧的一部分,目的是預測人們對過多選擇的偏好。

我們在哪裡會使用推薦系統?

最常見的使用領域是產品推薦過濾,並通過客戶的偏好進行學習,以便將這些知識應用到其他人身上。

背後的故事

大約一年前,我所在的電子郵件營銷和自動化公司把我分配到一個全新的項目。

這個項目的概念是創建一個數據驅動的推薦引擎,可以適用於每個電子商務商店。這個通用系統必須從他們自己的客戶產品交互(我們已經有了)中生成個性化的產品推薦。

這方面的挑戰是,它必須是「完全動態的」,並能夠適應各種模式,即季節性的購買模式(例如在聖誕節、光明節、復活節等送禮期間),但也要收入最大化

理解推薦引擎

每次我得到一個新項目,我做的第一件事就是試著去了解基本知識,什麼時候用用來幹什麼,系統的結構多樣性,以及它可能具有的可擴展性

有不同類型的推薦系統(RecSys),你選擇什麼取決於你想遵循什麼樣的策略來接近你的客戶。

在過去,世界從來沒有被數據驅動過。但現在,大多數大型電子商務網站都依賴數據驅動的決策系統來擴大銷售。

個性化的產品推薦是人工智慧給電子商務的禮物,因為它們可以幫助你提高點擊率(CTR)和銷售率

就像我說的,有5種不同類型的人工智慧推薦系統:

  • 基於內容的引擎根據其屬性(即每個產品的特徵)識別相似的產品。
  • 我們用每個產品的屬性來表示每個產品(例如,一個手機的屬性是螢幕大小、價格、相機、軟體等),並試圖找到最相似的。
  • 通過這種方式,我們向那些對特定特徵的手機感興趣的人推薦類似的「手機」
  • 協同過濾引擎識別相似客戶的偏好,基於具有相似行為的人共享相似興趣這個想法。
  • 在這些系統中,我們用每一個客戶的互動來代表每一個客戶,通過這種方式,我們預測他們對每一個產品感興趣的機率,也就是說,客戶實際喜歡我們推薦給他們的產品的可能性。
  • 這樣,我們可以向新客戶推薦和他最相似的人喜歡的產品。
  • 混合系統是基於內容和協同過濾系統的結合。
  • 用兩種模型分別產品進行打分,並分別給與權重。最終的推薦結果將由這兩個分數的線性組合得出。
  • 關聯規則市場籃子分析引擎與前面的引擎略有不同。
  • 擁有一個大的交互數據集,我們可以為經常一起購買的商品找到模式並作為一個序列,例如,如果有人在他的購物車中添加了咖啡,但沒有添加糖,我們推薦添加糖。
  • 重複購買引擎預測客戶購買特定產品的具體時間或近似時間
  • 該算法使用產品持續時間、購買歷史和日期統計數據來預測未來的日期。
  • 例如,如果有人每月購買一次隱形眼鏡,我們建議他們每30天購買一次同樣的產品,以防他們忘記購買。這樣,我們鼓勵他們繼續與我們的商店購物。

協同過濾

為了刷新你的記憶,這種類型的推薦引擎試圖通過使用用戶的產品交互(購買、產品視圖和添加到購物車產品)來識別具有類似興趣的用戶。

你可以使用以下兩種方法之一實現協同過濾,基於內存的或基於模型的。在這兩種方法中,我們用客戶的交互表示客戶,就像用向量表示矩陣一樣

在基於內存的模型中,度量所有向量(客戶)之間的距離,並推薦最相似的產品。

在模型方法中,即眾所周知的矩陣分解模型中,我們識別數據中的潛在因素

在統計學中,潛在因素並不是我們直接觀察或測量的變量,而是一組在不丟失信息的情況下,在較低維度空間中解釋(描述)其他變量及其關係的變量。

在我們的例子中,潛在因素為每個客戶查找和解碼模式,以便識別它們之間的相似性。

推薦系統模型#1(我的第一次)

我提出的第一個模型是標準矩陣分解模型

在這個特殊的例子中,我們用一個名為R的二維稀疏矩陣來表示客戶的產品交互,稀疏矩陣是一種眾所周知的高效計算和高效存儲的方法來存儲大量的數據在一起,並準備好處理。

矩陣行表示你的客戶,列表示像向量一樣的產品,然後我們用值1填充customer-product interaction單元格。

可以想像,沒有與客戶交互的產品所在的單元格仍然是空的:

下一步是將R矩陣分解為兩個矩陣,一個用於客戶(P),一個用於產品(Q)及其潛在因素。然後,我們使用lambda函數對兩個矩陣進行調優,並通過原始R矩陣的值來度量錯誤率。當錯誤率下降到給定的閾值時,我們中斷這個過程。

為了格式化R-hat矩陣,我們計算P和Q的點積。在線性代數中,點積是矩陣乘法的結果。

最後一步是推薦一組產品,按特定客戶的最高購買機率排序。

性能度量

為了監控模型的性能,我們必須對模型生成的推薦的質量進行度量。

在推薦系統中,我們使用Precision@k和Recall@k來度量引擎的性能,這兩種引擎在信息檢索場景中得到了廣泛的應用。

Precision定義為與客戶交互的推薦商品數量(:查看、添加到購物車等),除以推薦集k中的商品數量。

Recall是與客戶交互的推薦集k中的推薦項數,除以與客戶交互的總的項數,即使在推薦集之外也是如此。

此外,我們還為我們的系統使用了一個稱為Accuracy分數的度量,以便測量總體性能。我們將Accuracy分數定義為與客戶進行交互的推薦集的和(最少1個交互/集),除以客戶推薦的總數。

在所有模型中,我們對前5名(k=5)的推薦產品度量模型的性能

優點和缺點

這個模型的缺點多於優點。

在實現方面的好處是,對於能夠理解基本知識並在該領域有一些經驗的人來說,模型和流程非常簡單。此外,該模型的實現允許我們將所有信息放入一個單獨的「訓練過的」矩陣中,以便在生產中提供推薦。

現在,關於缺點。當把新商店加入推薦引擎時,考慮到矩陣的稀疏性,計算量和花費在它們上的時間呈指數增長。

因此,經過幾十個站點之後,系統將消耗大量內存,並且將花費數天時間進行調優並正常工作

在進行個性化產品推薦時,最重要的是數據,例如,大量的中小型商店沒有足夠的交互數據來產生他們自己的個性化推薦。

看到令人失望的結果,我決定改變我的課程,專注於如何處理和分發信息

因此,我可以幫助較小的、數據較弱的商店,並減小交互矩陣的大小。

在下一篇文章中,我將介紹如何自動合併產品信息和不同商店之間的交互。

英文原文:https://medium.com/moosend-engineering-data-science/the-road-to-recommender-systems-d6bb79bd169d

請長按或掃描二維碼關注本公眾號


文章來源: https://twgreatdaily.com/gBjdb20BJleJMoPMSYWv.html