推送的廣告都跟我看的內容有關,怎麼回事?一文看懂推薦引擎


來源:大數據DT

本文約6000字,建議閱讀10分鐘

本文我們簡單介紹了各種類型的流行推薦引擎,如協同過濾、基於內容的推薦引擎、混合推薦引擎、情境感知系統、可擴展的推薦系統和基於圖的實時推薦引擎。

[ 導讀 ]讀完關於數據分析的文章,就收到Python課程的廣告?沒錯,這就是數據叔的親身經歷。如今,這種現象正在變得稀鬆平常。一方面,我們在擔心隱私問題,爲什麼商家們比我自己更瞭解我自己?另一方面,這種廣告也確實提高了我們的生活效率,有時候快速刷過去,甚至意識不到這是個廣告。

實際上,無論從商家還是消費者的角度來看,一個優秀的推薦引擎都是非常有益的。那麼應該怎麼做呢?

我們是如何決定購買某些商品的呢?在日常生活中,我們在決定購買之前會詢問朋友或者家人;網購時,我們會閱讀匿名用戶對產品的評論,對產品進行比較,之後纔會決定是否購買。

當今互聯網中的信息正以指數級速度增長,尋找有效的信息將是一項挑戰,而增加用戶對檢索結果的信心則是更大的挑戰。

推薦系統的出現可以爲用戶提供優質的相關信息或重要信息,一些大型網站的參與則更好地推動了推薦引擎的普及。例如,亞馬遜的商品推薦,Facebook的人脈圈推薦,Twitter、LinkedIn、YouTube上的視頻推薦,谷歌新聞推薦等。這些案例的成功爲諸如旅遊、醫療健康、金融等領域的其他行業打開了一扇窗。

01 推薦引擎定義

推薦引擎是從信息檢索和人工智能派生出來的技術,是分析巨量數據(特別是產品和用戶信息)強有力的工具,能夠基於數據挖掘提供相關推薦。

在技術上,推薦引擎要求開發一個數學模型或者目標函數,用來預測用戶對商品的喜歡程度。

假設U={用戶},I={商品},F表示目標函數,通過F計算I對U的有用性,表示成:

F:U×I->R,其中R={推薦商品}

對於每位用戶u,我們要選擇使目標函數最大的商品i,表示成:

推薦系統的主要目的是在用戶做決定的時候提供相關推薦,以便在線用戶從網絡上的大量可用選項中做出更好的決定。一個優秀的推薦系統更趨向於個性化推薦,它可以通過收集用戶有價值的數字足跡(如人口統計、事務細節、交互日誌)和關於產品的信息(例如規格、用戶反饋、與其他產品比較等),來完成推薦之前的數據分析。

用戶標籤

推薦引擎最大的挑戰是如何給參與者提供好的推薦,一個好的推薦系統會充分考慮消費者信息(如上圖所示用戶標籤)和銷售信息。

從消費者角度來說,一個有價值的推薦可以影響消費者的最終決定,所以推薦的動機是考慮如何增強消費者的購買信心。從商家的角度來說,爲不同層次的消費者提供個性化推薦,做到精準營銷是十分必要的。

伴隨着網購的興起壯大,很多公司通過收集大量用戶交互信息日誌,對用戶行爲進行越來越深入的分析。此外,對推薦引擎的實時性也有更高的要求。隨着技術和研究的進步,將大數據分析和人工智能技術加入推薦引擎也是一個挑戰。下圖顯示了推薦引擎的一些應用。

02 推薦系統的必要性

我們知道構建推薦系統是非常複雜的,它需要大量的工作量和人員、技術、資金的投入。如此巨大的投入值得嗎?來看一些事實:

  • Netflix客戶觀看的電影有2/3是由推薦系統推薦的。

  • Google新聞上有38%的點擊是推薦鏈接。

  • 亞馬遜35%的銷售量來自推薦產品。

  • ChoiceStream銷售數據顯示:有28%的用戶通過推薦購買自己喜歡的音樂。

03 大數據對推薦系統的推動作用

推薦系統在很多方面成功地影響着我們的生活,這種影響的一個很明顯的例子就是如何重新定義我們的網購體驗。當我們瀏覽電子商務網站併購買商品時,底層的推薦引擎會立即實時響應,向消費者提供各種相關推薦。

無論從商家還是消費者的角度來看,推薦引擎都是非常有益的。毫無疑問,大數據是推薦系統的驅動力。一個好的推薦系統應該具備可靠性、可擴展性、高可用性,並且能夠向它所包含的大型用戶羣實時提供個性化推薦。

一個典型的推薦系統如果沒有足夠的數據作爲支撐,就不能有效地工作。大數據技術的引入使得企業能夠捕獲大量的用戶數據,比如,用戶的過往購買記錄、瀏覽歷史和反饋信息等,並能將這些數據反饋給推薦引擎,實時生成相關和有效的推薦。

簡而言之,即使是最先進的推薦系統,如果沒有大數據的支持也不可能完成推薦。大數據技術在軟硬件方面不斷進步,不僅能夠提供海量的數據存儲能力,還在更多方面顯示出作用,比如提高對數據的操作速度,對實時數據的處理能力等。

要了解相關技術,可以訪問下面的網站:

http://www.kdnuggets.com/2015/10/big-data-recommendation-systems-change-lives.html

04 推薦系統類型

前面介紹了什麼是推薦系統、它要達到的目標、它的益處以及其背後的驅動力。接下來,我們將介紹正在使用的不同類型的常見推薦系統。

1. 協同過濾推薦系統

協同過濾推薦系統是推薦引擎的基本形式。這種類型的推薦引擎可以簡單理解爲在用戶偏好的協同下,從大型備選項集合中選出推薦的商品。

協同過濾推薦系統的基本假設是,如果兩個用戶在過去有相同的興趣,那麼未來他們也將有相似的興趣。例如,如果用戶A和用戶B有相似的電影偏好,用戶A最近看了電影《泰坦尼克號》,而用戶B還沒看過,然後我們就將該電影推薦給B用戶。Netflix的電影推薦方案是協同過濾推薦系統的一個很好的例子。

協同過濾推薦系統有以下兩種類型。

1)基於用戶的協同過濾

基於用戶的協同過濾給出的推薦項主要是考慮用戶的喜好。

基於用戶的協同過濾分兩步:

  • 基於共同興趣識別相似用戶。

  • 根據與活躍用戶相似的用戶所給出的對新項目的評級,爲活躍用戶進行新項目推薦。

2)基於項目的協同過濾

基於項目的協同過濾,是根據相鄰項目產生推薦。與基於用戶的協同過濾不同,我們要先找項目,然後根據活躍用戶對相似項目的歷史評估進行新項目的推薦。

基於項目的推薦系統的構建過程分爲兩個步驟:

  • 根據用戶對項目喜好計算相似項目。

  • 找出相似度最高並未被活躍用戶評估的項目進行推薦。

在構建協同過濾推薦系統時,我們將關注以下問題:

  • 用戶之間的相似度是如何計算的?

  • 項目之間的相似度是如何計算的?

  • 推薦是如何產生的?

  • 對新產生的項目和用戶數據該如何處理?

協同過濾系統的優點是實現簡單,推薦準確。然而,它也有自己的侷限性,比如冷啓動問題,這是指協同過濾系統不能對系統無法獲得其數據的用戶(即第一次登錄的用戶)進行推薦,如下圖所示。

2. 基於內容的推薦系統

在協同過濾推薦系統中,只需考慮用戶-項目-喜好之間的關係就可以構建推薦系統。雖然這種類型的推薦信息是準確的,但是如果我們想把推薦做得更好一些,還需要加上用戶屬性和項目屬性的考量。與協同過濾不同,基於內容的推薦系統是建立在項目屬性結合用戶對項目屬性的偏好基礎之上,根據相關內容信息構建推薦模型。

內容推薦系統對活躍用戶進行推薦時,通常包含用戶畫像、項目畫像、生成模型等相關步驟。基於內容的推薦系統推薦的項目,是對項目的信息或特徵、用戶屬性等分析之後形成的推薦項。

舉個例子,當你在YouTube搜索Lionel Messi的視頻時,基於內容的推薦系統會學習你的偏好,並且會推薦其他與Lionel Messi相關的視頻或者其他與足球有關的視頻。

簡單來說,基於內容的推薦系統提供的推薦項信息是基於相似用戶的歷史喜好數據產生的。項目的相似度是根據與其他的比較項相關聯的特徵計算得出的,並與用戶的歷史偏好相匹配。

在構建基於內容的推薦系統時,我們考慮以下幾個問題:

  • 如何選擇產品的內容或特徵?

  • 如何創建具有相似產品內容喜好的用戶畫像?

  • 如何根據項目的特點創建項目之間的相似度?

  • 如何連續創建和更新用戶畫像?

因爲這種技術不考慮近鄰用戶的喜好,所以它不需要維護一個大規模的用戶組對項目的喜好來提高推薦精度。它只需考慮用戶過去的喜好和項目的屬性或者特性。該系統以及它的優點和缺點,如下圖所示。

3. 混合推薦系統

這種類型的推薦引擎是結合多種推薦系統而建立的,是一個更強大的系統。通過組合各種系統,可以構建一個更健壯的系統。比如,通過組合協同過濾方法,當新項目因爲沒有評級而導致模型失敗時,在基於內容的系統中,關於項目的特徵信息是可用的,仍然可以使新項目被更準確、更有效地推薦。

舉個例子說明一下,假設你是一個經常閱讀谷歌新聞的人,推薦引擎會在流行新聞的基礎上,找到與你相似的人讀的新聞,並根據你的個人喜好、歷史點擊信息等進行計算,從而得到要向你推薦的新聞。這種類型的推薦系統混合使用基於內容的推薦系統和協同過濾系統。

在構建混合模型時,應該考慮以下幾個問題:

  • 採用何種技術方案來滿足我們的業務需求?

  • 何種混合技術方案能提供更好的預測?

與單一推薦技術相比,混合推薦引擎(如下圖所示)的好處是增強了推薦效果。這種方式對用戶來說也提供了一個好的混合推薦,在個性化水平或者近鄰水平上也有更好的表現。

4. 情境感知推薦系統

個性化推薦系統有時效果也不是很理想,比如基於內容的推薦系統,主要原因是沒有考慮情境。

假設一個姑娘非常喜歡喫冰激凌,但是這個姑娘現在在北極。個性化的推薦系統推送了一款非常受歡迎的冰激凌。請問推薦冰激凌是對的嗎?對於一個寒冷的下午,是不是一杯熱咖啡更值得推薦?這種類型的推薦就是情境感知推薦系統,這裏的位置信息就是情境。

用戶喜好會根據情境的變化而不同,例如,時間、季節、心情、地點、位置、系統中的選項等都可以是情境。當一個人在不同的地點、不同的時間、面對不同的人時,可能需要不同的東西。情境感知推薦系統在推薦之前會考慮這些情境。這種推薦系統可以根據用戶所處的不同情境來滿足用戶的各種需求。

在建立情境感知模型之前,我們需要考慮以下問題:

  • 在推薦系統中如何定義情境?

  • 使用何種技術構建推薦系統可以實現業務需求?

  • 如何根據情境推薦產品來滿足用戶喜好?

  • 何種技術可以用來混合情境和用戶喜好從而搭建混合推薦系統?

05 推薦系統技術的發展

隨着技術、研究和基礎設施的進步,推薦系統發展迅速。推薦系統正在遠離基於相似度量的簡單方法,並向諸如機器學習方法、深度學習等非常先進的方法靠近。

從商業角度來看,用戶和組織正在尋求能滿足即刻響應需求的更加個性化的推薦系統。通過構建個性化推薦系統來迎合龐大的用戶羣和產品,可以得到我們需要的複雜系統,以便實現輕鬆擴展和快速響應。以下幾種類型的推薦系統可以幫助解決這個挑戰。

1. Mahout在可擴展推薦系統中的應用

如前所述,大數據是驅動推薦系統發展的主要因素。大數據平臺使研究人員能夠訪問大型數據集並在個人層面分析數據,從而爲構建個性化推薦系統鋪平道路。

隨着互聯網使用量的增長和源源不斷的數據的提供,有效的推薦系統不僅需要龐大的數據,而且需要支持可擴展並具有最小化停機時間的基礎設施。爲了實現這一點,諸如Apache Hadoop生態系統這樣的大數據技術提供了基礎設施和平臺,用來提供大量數據。

Mahout可以實現這種巨大數據的供應,它是建立在Hadoop平臺上的機器學習庫,使我們能夠搭建可擴展的推薦系統。Mahout爲建設、評估和調整不同類型的推薦引擎算法提供基礎設施。由於Hadoop是爲離線批量處理而設計的,所以基於它還可以建立可擴展的離線推薦系統。

下圖顯示瞭如何使用Mahout設計可擴展的推薦系統。

2. Apache Spark在可擴展實時推薦系統中的應用

在瀏覽任何一個電子商務網站時,經常看到“你可能也喜歡”這個功能。這個看似簡單的功能正是用戶關係管理新時代的實時表現。企業開始投資推薦系統,這些系統可以爲客戶生成精準且實時的個性化推薦。

建立這樣一個系統不僅會帶來良好的投資回報,而且高效的系統也會增強用戶的購買信心。這要求可擴展的實時推薦系統不僅可以捕獲用戶的購買歷史、產品信息、用戶偏好,並提取模式和推薦產品,還可以基於用戶在線交互和多標準搜索偏好進行即時響應。

這種能力需要得到新技術的支持。這種技術必須考慮由用戶購買歷史、用戶偏好、在線互動等信息組成的大型數據庫,比如頁面內導航數據和多目標搜索記錄,然後對這些信息進行實時分析,並根據用戶當前和長期的需求進行準確響應。

大多數流行的推薦引擎協同過濾都需要在推薦時將用戶和產品信息作爲整體來考慮。假設有這樣一個場景:100萬個用戶對1萬個產品進行評級。

爲了建立一個系統來處理這樣大量的計算量,並實現在線響應,我們需要一個與大數據兼容並在內存中處理數據的系統。實現可擴展、實時推薦的關鍵技術是Apache Spark Streaming,它可以利用大數據的可擴展性並實時生成推薦,還可以在內存中處理數據,如下圖所示。

  • Neo4j在基於圖的實時推薦系統中的應用

圖數據庫已經徹底改變了人們發現新產品、探索有價值信息的方式。在人類的大腦裏,對人、事物、位置等信息的記憶,往往採用圖、關係或者網絡。

當我們試圖從這些網絡中獲取信息時,會直接轉到所需的連接或圖,並準確獲取信息。同樣,圖數據庫將用戶和產品信息作爲節點和邊緣(關係)進行存儲。在圖數據庫中可以實現快速檢索。近年來,圖數據庫推薦系統可以提供實時、準確、個性化的推薦信息。

Neo4j是使用圖數據庫實現實時推薦的關鍵技術之一,它是一種NoSQL圖數據庫,在爲客戶提供洞見和產品趨勢方面,它可以輕鬆勝過任何其他關係型和NoSQL系統。

NoSQL(意指“not only SQL”)數據庫是一種新型數據庫。不同於關係數據庫,它可以存儲和管理諸如柱狀、圖、鍵值對等數據。這種新的存儲和管理數據的方法使我們可以更好地構建可擴展的實時系統。

圖數據庫主要由節點和邊組成,其中,節點代表實體,邊代表實體之間的關係。這些邊是連接節點的定向線或箭頭。在下面的圖像中,圓圈是代表實體的節點,連接節點的線稱爲邊,表示關係。箭頭方向指示信息流向。通過顯示圖的所有節點和鏈接,幫助用戶對結構有一個全局的視圖。

下圖顯示的是用戶電影評級信息。綠色和紅色的圓圈分別代表用戶和電影節點。用戶對電影的評級用邊表示,以表示用戶與電影之間的關係。每個節點和關係可以包含屬性以存儲數據的進一步細節。

該圖中顯示的是採用圖論的概念實時生成推薦,檢索和搜索速度非常快。

06 小結

在本文中,我們簡單介紹了各種類型的流行推薦引擎,如協同過濾、基於內容的推薦引擎、混合推薦引擎、情境感知系統、可擴展的推薦系統和基於圖的實時推薦引擎。我們還介紹了大數據和各大IT巨頭的實際應用是如何推動推薦引擎發展的。

關於作者:蘇雷什·庫馬爾·戈拉卡拉(Suresh Kumar Gorakala)是一位專注於人工智能方向的數據科學家。他擁有近10年的專業經驗,曾爲多個領域的全球客戶服務,並幫助他們使用先進的大數據分析技術解決業務問題。他主要從事推薦引擎、自然語言處理、高級機器學習和圖數據庫等方面的工作。

本文摘編自《自己動手做推薦引擎》,經出版方授權發佈。

編輯:王菁

校對:林亦霖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章