導航:首頁 > 源碼編譯 > 個性化推薦系統演算法

個性化推薦系統演算法

發布時間:2023-09-21 04:13:49

㈠ 07_推薦系統演算法詳解

     基於人口統計學的推薦與用戶畫像、基於內容的推薦、基於協同過濾的推薦。

1、基於人口統計學的推薦機制( Demographic-based Recommendation)是一種最易於實現的推薦方法,它只是簡單的根據系統用戶的基本信息發現用戶的相關程度,然後將相似用戶喜愛的其他物品推薦給當前用戶。

2、對於沒有明確含義的用戶信息(比如登錄時間、地域等上下文信息),可以通過聚類等手段,給用戶打上分類標簽。

3、對於特定標簽的用戶,又可以根據預設的規則(知識)或者模型,推薦出對應的物品。

4、用戶信息標簽化的過程一般又稱為 用戶畫像 ( User Profiling)。

(1)用戶畫像( User Profile)就是企業通過收集與分析消費者社會屬性、生活習慣、消費行為等主要信息的數據之後,完美地抽象出一個用戶的商業全貌作是企業應用大數據技術的基本方式。

(2)用戶畫像為企業提供了足夠的信息基礎,能夠幫助企業快速找到精準用戶群體以及用戶需求等更為廣泛的反饋信息。

(3)作為大數據的根基,它完美地抽象出一個用戶的信息全貌,為進一步精準、快速地分析用戶行為習慣、消費習慣等重要信息,提供了足夠的數據基礎。

1、 Content- based Recommendations(CB)根據推薦物品或內容的元數據,發現物品的相關性,再基於用戶過去的喜好記錄,為用戶推薦相似的物品。

2、通過抽取物品內在或者外在的特徵值,實現相似度計算。比如一個電影,有導演、演員、用戶標簽UGC、用戶評論、時長、風格等等,都可以算是特徵。

3、將用戶(user)個人信息的特徵(基於喜好記錄或是預設興趣標簽),和物品(item)的特徵相匹配,就能得到用戶對物品感興趣的程度。在一些電影、音樂、圖書的社交網站有很成功的應用,有些網站還請專業的人員對物品進行基因編碼/打標簽(PGC)。

4、 相似度計算:

5、對於物品的特徵提取——打標簽(tag)

        - 專家標簽(PGC)

        - 用戶自定義標簽(UGC)

        - 降維分析數據,提取隱語義標簽(LFM)

     對於文本信息的特徵提取——關鍵詞

        - 分詞、語義處理和情感分析(NLP)

        - 潛在語義分析(LSA)

6、 基於內容推薦系統的高層次結構

7、 特徵工程

(1)特徵( feature):數據中抽取出來的對結果預測有用的信息。

         特徵的個數就是數據的觀測維度。

         特徵工程是使用專業背景知識和技巧處理數據,使得特徵能在機器學習演算法上發揮更好的作用的過程。

         特徵工程一般包括特徵清洗(采樣、清洗異常樣本),特徵處理和特徵選擇。

         特徵按照不同的數據類型分類,有不同的特徵處理方法:數值型、類別型、時間型、統計型。

(2)數值型特徵處理

        用連續數值表示當前維度特徵,通常會對數值型特徵進行數學上的處理,主要的做法是歸一化和離散化。

        * 幅度調整歸一化:

            特徵與特徵之間應該是平等的,區別應該體現在 特徵內部 。

            例如房屋價格和住房面積的幅度是不同的,房屋價格可能在3000000~15000000(萬)之間,而住房面積在40-300(平方米)之間,那麼明明是平等的兩個特徵,輸入到相同的模型中後由於本身的幅值不同導致產生的效果不同,這是不合理的

                        

        * 數值型特徵處理——離散化

        離散化的兩種方式:等步長——簡單但不一定有效;等頻——min -> 25% -> 75% -> max

        兩種方法對比:

            等頻的離散化方法很精準,但需要每次都對數據分布進行一遍從新計算,因為昨天用戶在淘寶上買東西的價格分布和今天不一定相同,因此昨天做等頻的切分點可能並不適用,而線上最需要避免的就是不固定,需要現場計算,所以昨天訓練出的模型今天不一定能使用。

            等頻不固定,但很精準,等步長是固定的,非常簡單,因此兩者在工業上都有應用。

(3) 類別型特徵處理

        類別型數據本身沒有大小關系,需要將它們編碼為數字,但它們之間不能有預先設定的大小關系,因此既要做到公平,又要區分開它們,那麼直接開辟多個空間。

        One-Hot編碼/啞變數:One-Hot編碼/啞變數所做的就是將類別型數據平行地展開,也就是說,經過One-Hot編碼啞變數後,這個特徵的空間會膨脹。

(4) 時間型特徵處理

        時間型特徵既可以做連續值,又可以看做離散值。

        連續值:持續時間(網頁瀏覽時長);間隔時間(上一次購買/點擊離現在的時間間隔)。

        離散值:一天中哪個時間段;一周中的星期幾;一年中哪個月/星期;工作日/周末。

(5) 統計型特徵處理

        加減平均:商品價格高於平均價格多少,用戶在某個品類下消費超過多少。

        分位線:商品屬於售出商品價格的分位線處。

        次序性:商品處於熱門商品第幾位。

        比例類:電商中商品的好/中/差評比例。

8、 推薦系統常見反饋數據 :

9、 基於UGC的推薦

     用戶用標簽來描述對物品的看法,所以用戶生成標簽(UGC)是聯系用戶和物品的紐帶,也是反應用戶興趣的重要數據源。

    一個用戶標簽行為的數據集一般由一個三元組(用戶,物品,標簽)的集合表示,其中一條記錄(u,i,b)表示用戶u給物品打上了標簽b。

    一個最簡單的演算法:

        - 統計每個用戶最常用的標簽

        - 對於每個標簽,統計被打過這個標簽次數最多的物品

        - 對於一個用戶,首先找到他常用的標簽,然後找到具有這些標簽的最熱門的物品,推薦給他

        - 所以用戶u對物品i的興趣公式為 ,其中 使用戶u打過標簽b的次數, 是物品i被打過標簽b的次數。

    簡單演算法中直接將用戶打出標簽的次數和物品得到的標簽次數相乘,可以簡單地表現出用戶對物品某個特徵的興趣。

    這種方法傾向於給熱門標簽(誰都會給的標簽,如「大片」、「搞笑」等)、熱門物品(打標簽人數最多)比較大的權重,如果一個熱門物品同時對應著熱門標簽,那它就會「霸榜」,推薦的個性化、新穎度就會降低。

    類似的問題,出現在新聞內容的關鍵字提取中。比如以下新聞中,哪個關鍵字應該獲得更高的權重?

10、 TF-IDF:詞頻逆文檔頻率 ( Term Frequency- -Inverse Document Frequency,TF-DF)是一種用於資訊檢索與文本挖掘的常用加權技術。

        TFDF是一種統計方法,用以評估一個字詞對於一個文件集或一個語料庫中的其中份文件的重要程度。字詞的重要性隨著它在文件中出現的次數成正比增加,但同時會隨著它在語料庫中出現的頻率成反比下降。

                    TFIDF=TF IDF

         TF-IDF的主要思想是 :如果某個詞或短語在一篇文章中出現的頻率TF高,並且在其他文章中很少出現,則認為此詞或者短語具有很好的類別區分能力,適合用來分類。

        TF-DF加權的各種形式常被搜索引擎應用,作為文件與用戶查詢之間相關程度的度量或評級。

         詞頻( Term Frequency,TF) :指的是某一個給定的詞語在該文件中出現的頻率。這個數字是對詞數的歸一化,以防止偏向更長的文件。(同一個詞語在長文件里可能會比短文件有更高的詞數,而不管該詞語重要與否。) ,其中 表示詞語 i 在文檔 j 中出現的頻率, 表示 i 在 j 中出現的次數, 表示文檔 j 的總詞數。

         逆向文件頻率( Inverse Document Frequency,IDF) :是一個詞語普遍重要性的度量,某一特定詞語的IDF,可以由總文檔數目除以包含該詞語之文檔的數目,再將得到的商取對數得到 ,其中 表示詞語 i 在文檔集中的逆文檔頻率,N表示文檔集中的文檔總數, 表示文檔集中包含了詞語 i 的文檔數。

(11) TF-IDF對基於UGC推薦的改進 : ,為了避免熱門標簽和熱門物品獲得更多的權重,我們需要對「熱門進行懲罰。

          借鑒TF-IDF的思想,以一個物品的所有標簽作為「文檔」,標簽作為「詞語」,從而計算標簽的「詞頻」(在物品所有標簽中的頻率)和「逆文檔頻率」(在其它物品標簽中普遍出現的頻率)。

           由於「物品i的所有標簽」 應該對標簽權重沒有影響,而 「所有標簽總數」 N 對於所有標簽是一定的,所以這兩項可以略去。在簡單演算法的基礎上,直接加入對熱門標簽和熱門物品的懲罰項: ,其中, 記錄了標簽 b 被多少個不同的用戶使用過, 記錄了物品 i 被多少個不同的用戶打過標簽。

(一)協同過濾(Collaborative Filtering, CF)

1、基於協同過濾(CF)的推薦:基於內容( Content based,CB)主要利用的是用戶評價過的物品的內容特徵,而CF方法還可以利用其他用戶評分過的物品內容。

    CF可以解決CB的一些局限:

         - 物品內容不完全或者難以獲得時,依然可以通過其他用戶的反饋給出推薦。

        - CF基於用戶之間對物品的評價質量,避免了CB僅依賴內容可能造成的對物品質量判斷的干。

        - CF推薦不受內容限制,只要其他類似用戶給出了對不同物品的興趣,CF就可以給用戶推薦出內容差異很大的物品(但有某種內在聯系)

    分為兩類:基於近鄰和基於模型。

2、基於近鄰的推薦系統:根據的是相同「口碑」准則。是否應該給Cary推薦《泰坦尼克號》?

(二)基於近鄰的協同過濾

1、 基於用戶(User-CF): 基於用戶的協同過濾推薦的基本原理是,根據所有用戶對物品的偏好,發現與當前用戶口味和偏好相似的「鄰居」用戶群,並推薦近鄰所偏好的物品。

     在一般的應用中是採用計算「K-近鄰」的演算法;基於這K個鄰居的歷史偏好信息,為當前用戶進行推薦。

    User-CF和基於人口統計學的推薦機制:

        - 兩者都是計算用戶的相似度,並基於相似的「鄰居」用戶群計算推薦。

        - 它們所不同的是如何計算用戶的相似度:基於人口統計學的機制只考慮用戶本身的特徵,而基於用戶的協同過濾機制可是在用戶的歷史偏好的數據上計算用戶的相似度,它的基本假設是,喜歡類似物品的用戶可能有相同或者相似的口味和偏好。

2、基於物品(Item-CF):基於項目的協同過濾推薦的基本原理與基於用戶的類似,只是使用所有用戶對物品的偏好,發現物品和物品之間的相似度,然後根據用戶的歷史偏好信息,將類似的物品推薦給用戶。

    Item-CF和基於內容(CB)的推薦

       - 其實都是基於物品相似度預測推薦,只是相似度計算的方法不一樣,前者是從用戶歷史的偏好推斷,而後者是基於物品本身的屬性特徵信息。

   同樣是協同過濾,在基於用戶和基於項目兩個策略中應該如何選擇呢?

        - 電商、電影、音樂網站,用戶數量遠大於物品數量。

        - 新聞網站,物品(新聞文本)數量可能大於用戶數量。

3、 User-CF和Item-CF的比較

     同樣是協同過濾,在User-CF和ltem-CF兩個策略中應該如何選擇呢?

     Item-CF應用場景

       -  基於物品的協同過濾( Item-CF ) 推薦機制是 Amazon在基於用戶的機制上改良的一種策略因為在大部分的Web站點中,物品的個數是遠遠小於用戶的數量的,而且物品的個數和相似度相對比較穩定,同時基於物品的機制比基於用戶的實時性更好一些,所以 Item-CF 成為了目前推薦策略的主流。

     User-CF應用場景

        - 設想一下在一些新聞推薦系統中,也許物品一一也就是新聞的個數可能大於用戶的個數,而且新聞的更新程度也有很快,所以它的相似度依然不穩定,這時用 User-cf可能效果更好。

    所以,推薦策略的選擇其實和具體的應用場景有很大的關系。

4、 基於協同過濾的推薦優缺點

 (1)基於協同過濾的推薦機制的優點:

        它不需要對物品或者用戶進行嚴格的建模,而且不要求對物品特徵的描述是機器可理解的,所以這種方法也是領域無關的。

       這種方法計算出來的推薦是開放的,可以共用他人的經驗,很好的支持用戶發現潛在的興趣偏好。

(2)存在的問題

        方法的核心是基於歷史數據,所以對新物品和新用戶都有「冷啟動」的問題。

        推薦的效果依賴於用戶歷史好數據的多少和准確性。

        在大部分的實現中,用戶歷史偏好是用稀疏矩陣進行存儲的,而稀疏矩陣上的計算有些明顯的問題,包括可能少部分人的錯誤偏好會對推薦的准確度有很大的影響等等。

        對於一些特殊品味的用戶不能給予很好的推薦。

(三)基於模型的協同過濾

1、基本思想

(1)用戶具有一定的特徵,決定著他的偏好選擇

(2)物品具有一定的特徵,影響著用戶需是否選擇它。

(3)用戶之所以選擇某一個商品,是因為用戶特徵與物品特徵相互匹配。

    基於這種思想,模型的建立相當於從行為數據中提取特徵,給用戶和物品同時打上「標簽」;這和基於人口統計學的用戶標簽、基於內容方法的物品標簽本質是一樣的,都是特徵的提取和匹配。

    有顯性特徵時(比如用戶標簽、物品分類標簽)我們可以直接匹配做出推薦;沒有時,可以根據已有的偏好數據,去發據出隱藏的特徵,這需要用到隱語義模型(LFM)。

2、基於模型的協同過濾推薦,就是基於樣本的用戶偏好信息,訓練一個推薦模型,然後根據實時的用戶喜好的信息進行預測新物品的得分,計算推薦

    基於近鄰的推薦和基於模型的推薦

        - 基於近鄰的推薦是在預測時直接使用已有的用戶偏好數據,通過近鄰數據來預測對新物品的偏好(類似分類)

        - 而基於模型的方法,是要使用這些偏好數據來訓練模型,找到內在規律,再用模型來做預測(類似回歸)

    訓練模型時,可以基於標簽內容來提取物品特徵,也可以讓模型去發據物品的潛在特徵;這樣的模型被稱為 隱語義模型 ( Latent Factor Model,LFM)。

(1)隱語義模型(LFM):用隱語義模型來進行協同過濾的目標:

            - 揭示隱藏的特徵,這些特徵能夠解釋為什麼給出對應的預測評分

            - 這類特徵可能是無法直接用語言解釋描述的,事實上我們並不需要知道,類似「玄學」

        通過矩陣分解進行降維分析

            - 協同過濾演算法非常依賴歷史數據,而一般的推薦系統中,偏好數據又往往是稀疏的;這就需要對原始數據做降維處理。

            - 分解之後的矩陣,就代表了用戶和物品的隱藏特徵

        隱語義模型的實例:基於概率的隱語義分析(pLSA)、隱式迪利克雷分布模型(LDA)、矩陣因子分解模型(基於奇異值分解的模型,SVD)

(2)LFM降維方法——矩陣因子分解

(3)LFM的進一步理解

    我們可以認為,用戶之所以給電影打出這樣的分數,是有內在原因的,我們可以挖掘出影響用戶打分的隱藏因素,進而根據未評分電影與這些隱藏因素的關聯度,決定此未評分電影的預測評分。

    應該有一些隱藏的因素,影響用戶的打分,比如電影:演員、題材、年代…甚至不定是人直接可以理解的隱藏因子。

    找到隱藏因子,可以對user和Iiem進行關聯(找到是由於什麼使得user喜歡/不喜歡此Item,什麼會決定user喜歡/不喜歡此item),就可以推測用戶是否會喜歡某一部未看過的電影。

(4)矩陣因子分解

(5)模型的求解——損失函數

(6)模型的求解演算法——ALS

    現在,矩陣因子分解的問題已經轉化成了一個標準的優化問題,需要求解P、Q,使目標損失函數取最小值。

    最小化過程的求解,一般採用隨機梯度下降演算法或者交替最小二乘法來實現交替最小二乘法( Alternating Least Squares,ALS)

    ALS的思想是,由於兩個矩陣P和Q都未知,且通過矩陣乘法耦合在一起,為了使它們解耦,可以先固定Q,把P當作變數,通過損失函數最小化求出P,這就是一個經典的最小二乘問題;再反過來固定求得的P,把Q當作變數,求解出Q:如此交替執行,直到誤差滿足閱值條件,或者到達迭代上限。

(7)梯度下降演算法

㈡ 推薦系統產品和演算法概述丨產品雜談系列

本文主要是對最近所學的推薦系統的總結,將會簡單概述非個性化範式、群組個性化範式、完全個性化範式、標的物關聯標的物範式、笛卡爾積範式等5種常用的推薦範式的設計思路。

許多產品的推薦演算法都依賴於三類數據:標的物相關的描述信息(如推薦鞋子,則包括鞋子的版型、適用對象、材質等信息、用戶畫像數據(指的是用戶相關數據,如性別、年齡、收入等)、用戶行為數據(例如用戶在淘寶上的瀏覽、收藏、購買等)。這三類數據是推薦模型的主要組成部分,除此之外一些人工標注的數據(例如為商品人工打上標簽)、第三方數據也能夠用於補充上述的三類數據。

服務端在有以上數據的基礎上,就可以從三個維度進行推薦:

根據個性化推薦的顆粒度,我們可以將基於用戶維度的推薦分為非個性化推薦、群組個性化推薦及完全個性化推薦三種類型。

非個性化推薦指的是每個用戶看到的推薦內容都是一樣的 在互聯網產品中,我們最常見的非個性化推薦的例子是各種排行榜,如下圖是酷狗音樂的排行榜推薦,通過各個維度計算各類榜單,不管是誰看到這個榜單,上面的排序和內容都是一致的。

群組個性化推薦指的是將具有相同特徵的用戶聚合成一組,同一組用戶在某些方面具備相似性,系統將為這一組用戶推薦一樣的內容 。這種推薦方式是很多產品進行用戶精細化運營時會採用的方式,通過用戶畫像系統圈定一批批用戶,並對這批用戶做統一的運營。例如音樂軟體的推薦播放,若以搖滾樂為基準將一批用戶聚合成組,則為這些用戶提供的每日推薦歌單是相同的內容和順序,但與另一組愛聽民謠的用戶相比,兩組用戶看到的每日推薦內容將是不同的。

完全個性化指的是為每個用戶推薦的內容都不一樣,是根據每一位用戶的行為及興趣來為用戶做推薦,是當今互聯網產品中最常用的一種推薦方式 。大多數情況下我們所說的推薦就是指這種形式的推薦,例如淘寶首頁的「猜你喜歡」就是一個完全個性化的推薦,千人千面,每個人看到的推薦尚品都不一樣。

完全個性化可以只基於用戶行為進行推薦,在構建推薦演算法時只考慮到用戶個人的特徵和行為 ,不需要考慮其他用戶,這也是最常見的內容推薦方式。除此之外, 還可以基於群組行為進行完全個性化推薦,除了利用用戶自身的行為外,還依賴於其他用戶的行為構建推薦演算法模型 。例如,用戶屬性和行為相似的一群用戶,其中90%的用戶買了A商品後也買了B商品,則當剩下的10%用戶單獨購買B商品時,我們可以為該用戶推薦商品A。

基於群組行為進行的完全個性化推薦可以認為是全體用戶的協同進化,常見的協同過濾、基於模型的推薦等都屬於這類推薦形式。

基於標的物的推薦指的是用戶在訪問標的物詳情頁或者退出標的物詳情頁時,可以根據標的物的描述信息為用戶推薦一批相似的或者相關的標的物,對應的是最開始提到的「標的物關聯標的物範式」 。如下圖酷狗的相似歌曲推薦,

除了音樂產品外,視頻網站、電商、短視頻等APP都大量使用基於標的物維度的推薦。如下圖便是YouTube基於標的物關聯標的物的推薦。在YouTube上我觀看一個周傑倫的音樂視頻時,YouTube在該頁面下方為我推薦更多與周傑倫有關的視頻。

基於用戶和標的物交叉維度的推薦指的是將用戶維度和標的物維度結合起來,不同用戶訪問同一標的物的詳情頁時看到的推薦內容也不一樣,對應的是開頭提到的笛卡爾積推薦範式。 拿酷狗音樂對相似歌曲的推薦來舉例,如果該推薦採用的是用戶和標的物交叉維度的推薦的話,不同用戶看到的「沒有理想的人不傷心」這首歌曲,下面的相似歌曲是不一樣的。拿淘寶舉例的話,一樣是搜索「褲子」這一關鍵詞,不同的人搜索得到的搜索結果和排序是不同的,可能用戶A搜索出來優先展示的是牛仔褲,而用戶B優先展示的是休閑褲,淘寶將結合搜索關鍵詞與用戶個人的歷史行為特徵展示對應的搜索結果和排序。

對於基於笛卡爾積推薦範式設計的推薦系統來說,由於每個用戶在每個標的物上的推薦列表都不一樣,我們是沒辦法是先將所有組合計算出來並儲存(組合過多,數量是非常巨大的),因此對於系統來說,能否在用戶請求的過程中快速地為用戶計算個性化推薦的標的物列表將會是一個比較大的挑戰,對於整個推薦系統的架構也有更高的要求,因此在實際應用中,該種推薦方式用的比較少。

非個性化範式指的是為所有用戶推薦一樣的標的物列表,常見的各種榜單就是基於此類推薦規則,如電商APP中的新品榜、暢銷榜等。排行榜就是基於某個規則來對標的物進行排序,將排序後的部分標的物推薦給用戶。例如新品榜是按照商品上架的時間順序來倒序排列,並將排序在前列的產品推薦給用戶。而暢銷榜則是按照商品銷量順序降序排列,為用戶推薦銷量靠前的商品。

根據具體的產品和業務場景,即使同樣是非個性化範式推薦,在具體實施時也可能會比較復雜。例如在電商APP中暢銷榜的推薦可能還會將地域、時間、價格等多個維度納入考慮范圍內,基於每個維度及其權重進行最終的排序推薦。

大部分情況下,非個性化範式推薦可以基於簡單的計數統計來生成推薦,不會用到比較復雜的機器學習演算法,是一種實施門檻較低的推薦方式。基於此,非個性化範式推薦演算法可以作為產品冷啟動或者默認的推薦演算法。

完全個性化範式是目前的互聯網產品中最常用的推薦模式,可用的推薦方法非常多。下面對常用的演算法進行簡單梳理。

該推薦演算法只需要考慮到用戶自己的歷史行為而不需要考慮其他用戶的行為,其核心思想是:標的物是有描述屬性的,用戶對標的物的操作行為為用戶打上了相關屬性的烙印,這些屬性就是用戶的興趣標簽,那麼我們就可以基於用戶的興趣來為用戶生成推薦列表。還是拿音樂推薦來舉例子,如果用戶過去聽了搖滾和民謠兩種類型的音樂,那麼搖滾和民謠就是這個用戶聽歌時的偏好標簽,此時我們就可以為該用戶推薦更多的搖滾類、民謠類歌曲。

基於內容的個性化推薦在實操中有以下兩類方式。

第一種是基於用戶特徵標識的推薦。
標的物是有很多文本特徵的,例如標簽、描述信息等,我們可以將這些文本信息基於某種演算法轉化為特徵向量。有了標的物的特徵向量後,我們可以將用戶所有操作過的標的物的特徵向量基於時間加權平均作為用戶的特徵向量,並根據用戶特徵向量與標的物特徵向量的乘積來計算用戶與標的物的相似度,從而計算出該用戶的標的物推薦列表。

第二種是基於倒排索引查詢的推薦。
如果我們基於標的物的文本特徵(如標簽)來表示標的物屬性,那麼基於用戶對該標的物的歷史行為,我們可以構建用戶畫像,該畫像即是用戶對於各個標簽的偏好,並且對各個標簽都有相應的偏好權重。

在構建完用戶畫像後,我們可以基於標簽與標的物的倒排索引查詢表,以標簽為關鍵詞,為用戶進行個性化推薦。

舉個粗暴的例子,有歌曲A、B、C分別對應搖滾、民謠、古風三個音樂標簽,我聽了歌曲A、B,則在我身上打了搖滾和民謠的標簽,又基於我聽這兩個歌曲的頻率,計算了我對「搖滾」和「民謠」的偏好權重。
在倒排索引查詢表中,搖滾和民謠又會分別對應一部分歌曲,所以,可以根據我對搖滾和民謠的偏好權重從查詢表中篩選一部分歌曲並推薦給我。

基於倒排索引查詢的推薦方式是非常自然直觀的,只要用戶有一次行為,我們就可以據此為用戶進行推薦。但反過來,基於用戶興趣給用戶推薦內容,容易局限推薦范圍,難以為用戶推薦新穎的內容。

基於協同過濾的推薦演算法,核心思想是很樸素的」物以類聚、人以群分「的思想。所謂物以類聚,就是計算出每個標的物最相似的標的物列表,我們就可以為用戶推薦用戶喜歡的標的物相似的標的物,這就是基於物品的協同過濾。所謂人以群分,就是我們可以將與該用戶相似的用戶喜歡過的標的物(而該用戶未曾操作過)的標的物推薦給該用戶,這就是基於用戶的協同過濾。

常見的互聯網產品中,很多會採用基於標的物的協同過濾,因為相比之下用戶的變動概率更大,增長速度可能較快,這種情況下,基於標的物的協同過濾演算法將會更加的穩定。

協同過濾演算法思路非常簡單直觀,也易於實現,在當今的互聯網產品中應用廣泛。但協同過濾演算法也有一些難以避免的問題,例如產品的冷啟動階段,在沒有用戶數據的情況下,沒辦法很好的利用協同過濾為用戶推薦內容。例如新商品上架時也會遇到類似的問題,沒有收集到任何一個用戶對其的瀏覽、點擊或者購買行為,也就無從基於人以群分的概念進行商品推薦。

基於模型的推薦演算法種類非常多,我了解到的比較常見的有遷移學習演算法、強化學習演算法、矩陣分解演算法等,且隨著近幾年深度學習在圖像識別、語音識別等領域的進展,很多研究者和實踐者也將其融入到推薦模型的設計當中,取得了非常好的效果。例如阿里、京東等電商平台,都是其中的佼佼者。

由於該演算法涉及到比較多的技術知識,在下也處於初步學習階段,就不班門弄斧做過多介紹了,有興趣的朋友可以自行進行學習。

群組個性化推薦的第一步是將用戶分組,因此,採用什麼樣的分組原則就顯得尤為重要。常見的分組方式有兩種。

先基於用戶的人口統計學數據(如年齡、性別等)或者用戶行為數據(例如對各種不同類型音樂的播放頻率)構建用戶畫像。用戶畫像一般用於做精準的運營,通過顯示特徵將一批人圈起來形成同一組,對這批人做針對性的運營。因為前頭已經提到此演算法,這里不再重復介紹。

聚類是非常直觀的一種分組思路,將行為偏好相似的用戶聚在一起成為一個組,他們有相似的興趣。常用的聚類策略有如下兩類。

標的物關聯標的物就是為每個標的物推薦一組標的物。該推薦演算法的核心是怎麼從一個標的物關聯到其他的標的物。這種關聯關系可以是相似的(例如嘉士伯啤酒和喜力啤酒),也可以是基於其他維度的關聯(例如互補品,羽毛球拍和羽毛球)。常用的推薦策略是相似推薦。下面給出3種常用的生成關聯推薦的策略。

這類推薦方式一般是利用已知的數據和標的物信息來描述一個標的物,通過演算法的方式將其向量化,從而根據不同標的物向量之間的相似度來急速標的物之間的相似度,從而實現相識標的物的推薦。

在一個成熟的產品中,我們可以採集到的非常多的用戶行為,例如在電商平台中,我們可以手機用戶搜索、瀏覽、收藏、點贊等行為,這些行為就代表了用戶對某個標的物的某種偏好,因此,我們可以根據用戶的這些行為來進行關聯推薦。

例如,可以將用戶的行為矩陣分解為用戶特徵矩陣和物品特徵矩陣,物品特徵矩陣可以看成是衡量物品的一個向量,利用該向量我們就可以計算兩個標的物之間的相似度了,從而為該用戶推薦相似度高的其他產品。

再例如, 採用購物籃的思路做推薦,這種思路非常適合圖書、電商等的推薦 。 以電商為例,我們可以把用戶經常一起瀏覽(或者購買)的商品形成一個列表,將過去一段時間所有的列表收集起來。對於任何一個商品,我們都可以找到與它一起被瀏覽或者購買的其他商品及其次數,並根據次數來判斷其關聯性,從而進行關聯推薦。

我們可以對用戶進行分組,同樣,我們也能夠對標的物進行聚類分組。通過某位參考維度,我們將一些列具有相似性的標的物分成一組,當我們為用戶進行推薦的時候,便可以將同一組內的其他標的物作為推薦對象,推薦給用戶。

笛卡爾積範式的推薦演算法一般是先採用標的物關聯標的物範式計算出待推薦的標的物列表。再根據用戶的興趣來對該推薦列表做調整(例如根據不同興趣的權重重新調整推薦列表的排序)、增加(例如基於個性化增加推薦對象)、刪除(例如過濾掉已經看過的),由於其復雜程度較高在實際業務場景中應用較少,這邊不再詳細介紹。

好了,本次的介紹就到此為止了。本次主要是做了一個非常簡單的推薦演算法概述,在實際的業務場景中,還經常需要與產品形態或者更多的未讀(如時間、地點等)相結合,是一個很有意思的領域,有興趣的朋友可以進一步了解。

㈢ 個性化推薦演算法

隨著演算法的普及,大量的產品有了個性化推薦的功能,這也成為內容類產品的標配。個性化定製化逐漸成為了互聯網思維的新補充,被提升到了越來越重要的地位。演算法推薦經過了很長一段時間的發展,才逐漸達到能給用戶驚喜的階段。比如在電商領域,推薦演算法可以挖掘用戶潛在購買需求,縮短用戶選取商品的時間,提升用戶的購物體驗;在新聞或段視頻領域,推薦演算法可以推送用戶喜歡的內容,提高用戶的閱讀效率,減少用戶選擇內容的時間,也增加了用戶在產品上的停留時長。

演算法應用階段

內容類產品發展初期,推薦演算法一般為「熱度演算法」,就是系統把熱點內容優先推薦送給用戶,完成熱點內容的高閱讀率。在積累了一定的用戶數據後,會發現用戶閱讀內容過於集中於熱點信息,長尾信息中的優質資源往往被忽略,造成資源浪費。「千人一面」的狀況已不是一個優質的解決方案,所以演算法逐漸演變為「個性化推薦」,也就是協同過濾的方法論支撐下的一種演算法。協同過濾能很好的根據用戶的喜好,推薦匹配的內容,減少資源浪費,增加用戶使用的友好體驗。真正做到「千人千面」。

推薦演算法的信息來源

第三方數據

一個新系統在初期沒有數據積累的情況下,可與第三方合作,互授部分信息共享。比如,很多系統支持微信登陸,這時候可以獲取客戶的微信信息,生活地點,部分生活習慣等。同時會獲取用戶的社交信息,共同好友越多表明圈子越相似,可以推薦更多相似的內容。

用戶行為數據

記錄用戶在系統內的使用習慣,可以准確的描述單個用戶的行為特徵,愛好特徵等有效的信息,系統根據提取出的分析結果,將內容與之匹配,完成更精準的推薦。如,某用戶經常瀏覽體育信息,系統將對應推薦更多體育相關的咨詢,省去用戶搜索篩選的時間。

基於生活習慣

基於生活習慣,生活常識的推薦,往往也可以作為內置的一個信息來源途徑。比如,外賣的app推薦用戶的餐廳,一般默認是位置優先,就近推薦,如果是快中午的時間段使用,系統默認推薦午餐,其次是晚餐。靠生活常識作出的系統演算法,可以更符合人類的習慣,給用戶更好的體驗。

熱度演算法

熱度演算法簡單的說就是把最核心的內容優先推薦,用新聞舉例,每一條新聞都具有實效性,隨著時間的推移,該條新聞的關注度降低,關注點被新的熱點新聞取代。量化以上的過程,把各個影響因素設定為變數,會得出以下的公式:

新聞熱度=初始熱度分+用戶交互熱度分-衰減熱度分

初始熱度分為新聞產生時,系統對新聞主體的預判熱度值。預判的分值一般為以下兩種模式,一種情況,按照新聞類別的不同,娛樂新聞大於財經新聞,大於國際新聞,大於文化新聞等等系統的預設,依次給出不同的初始熱度分;另一種情況,系統預置熱詞詞庫,用新聞的關鍵詞和詞庫的去匹配,匹配度高的,初始熱度分高。

用戶的交互熱度分也是一個變數,先要明確用的哪些行為會影響新聞熱度,然後對這些行為量化,加權或打分等方式。例如,網易雲音樂,用戶的聽歌,重復循環,收藏,評論,分享等行為,系統為每一種行為打分,求和後得出用戶交互的熱度分:

用戶交互熱度分=聽歌X10+循環X5+收藏X10+評論X5+分享X3

此公式還可以繼續細化,每一種操作的分值也可以作為變數,在產品前期時,傳播產品為主要任務,所以分享的加權要大一些,隨著網易雲的發展,社區的概念逐漸強化,評論區互動的加權會加大,所以評論的分值會增加,系統隨時調整分數加權,得出更准確的用戶交互的影響值。

衰減熱度分是一個隨時間變化而變化的數值,往往是一個函數的表達。用新聞舉例,新聞的熱度會隨著時間的推移而衰減,並且趨勢是越來越快,人們在接受新的熱點後,迅速忘記「舊聞」,直至熱度趨近於零。根據理論數據,構建函數,准確的表達衰減分值。

還有很多其他的影響因素,比如傳播次數,傳播層數,停留時長等等,都會影響熱度值,要想更精準的表達,就需要把涉及到的因素都作為變數,不斷完善演算法,才能更精準的完成推薦。

個性化推薦演算法

隨著用戶量的增加,產品日活的增加,用戶也不能僅限於千人一面熱點閱讀的模式中,個性化推薦在此時顯得尤為重要。個性化推薦有兩種常見的解決方案,一種是基於內容的推薦演算法,推薦內容往往是根據用戶的使用習慣得來,較為精準;另一種是基於用戶的協同推薦演算法,系統會根據以往使用內容,為用戶建模,然後根據群體中個體的使用習慣,推薦更多超預期的內容,達到預測推薦的效果。

基於內容的推薦演算法-預期內

基於內容的推薦演算法,靠收集用戶的使用習慣,進而推薦相關的內容。系統使用分詞庫匹配、關鍵詞匹配等等方式,達到內容的匹配,做到內容的精確劃分。比如,用戶瀏覽了某部科幻電影,系統就會按照該電影所對應的標簽,如科幻,然後系統推薦相同標簽的影片給用戶。

這樣的推薦方案,確定性強,推薦的內容都是根據用戶的歷史來確定,不能挖掘用戶的潛在需求。

基於用戶的協同推薦-超預期

做到精準推薦後,系統會繼續挖掘更潛在的推薦需求,給用戶超預期的推薦體驗。這就到了基於用戶協同推薦的階段。簡單的說,這種演算法是增加了用戶建模的環節,將同標簽的用戶群分,對比群體中單個個體的特徵,默認這種特徵為這類人的潛在特徵,再將此特徵內容推薦給同標簽的用戶,達到超預期的推薦效果。

比如,某用戶購買了一個蘋果手機,系統會將此用戶歸類為果粉,系統識別出很多果粉除了買蘋果的商品,還會購買小米作為備用機,這個特徵會被系統識別為潛在需求,推薦給果粉,減少果粉選擇備用機的時間。

這樣的推薦演算法,不僅能完成精準的推薦,還能給用戶小驚喜,讓系統「有溫度」。但是這樣的推薦方式,往往需要積累了大量用戶資料為基礎,才可以精確的完成。

閱讀全文

與個性化推薦系統演算法相關的資料

熱點內容
明日之後安卓太卡怎麼辦 瀏覽:502
如何使用命令方塊找到村莊 瀏覽:766
泛函壓縮映像原理 瀏覽:521
win10清除文件夾瀏覽記錄 瀏覽:964
如何查看伺服器域中所有服務 瀏覽:384
學mastercam91編程要多久 瀏覽:999
如何查伺服器地址和埠 瀏覽:911
教學雲平台app怎麼下載 瀏覽:389
單片機510教學視頻 瀏覽:624
陝西信合app怎麼查看自己的存款 瀏覽:663
風冷冰箱有壓縮機 瀏覽:274
android實現wifi連接wifi 瀏覽:669
飛豬app怎麼幫別人值機 瀏覽:924
筆記本開我的世界伺服器地址 瀏覽:546
怎樣隱藏bat命令 瀏覽:127
android開發創意 瀏覽:138
京劇貓為什麼進不去伺服器 瀏覽:784
怎麼自己免費製作一個手機app 瀏覽:582
python同時迭代兩個變數 瀏覽:740
好分數app家長版怎麼刪除孩子 瀏覽:426