1. 程式人生 > >《推薦系統三十六式》內容推薦 學習筆記

《推薦系統三十六式》內容推薦 學習筆記

 

1.重點歸納

1)使用者畫像是對使用者資訊的向量化表示,而且使用者畫像是給機器看的,而不是給人看的。

2)使用者畫像的關鍵元素是維度和量化,使用者畫像是跟著使用效果走,使用者畫像本身不是目的。

3)構建使用者畫像的手段:查戶口做記錄、堆資料作統計、機器學習黑盒子。

4)文字資料使用者畫像過程

(1)分析使用者的文字和物品的文字,使其結構化

(2)為使用者挑選有資訊量的結構化資料,作為畫像內容

5)基於內容的推薦一般是推薦系統的起步階段,而且會持續存在,因為:

(1)內容資料始終蘊含豐富的資訊量

(2)產品冷啟動階段,沒有使用者行為,別無選擇

(3)新物品被推薦出去,首選內容推薦

2.畫鬼容易畫人難:使用者畫像的“能”和“不能”

1)什麼是使用者畫像

(1)常見的使用者畫像出現在高大上的PPT上:用標籤雲方式繪製一個人的形狀,或者在一個人物形象旁邊列出若干人口統計屬性,以此來表達“使用者畫像”這個概念。看上去非常炫酷,其實越是炫酷的使用者畫像越沒什麼用。因為使用者畫像是給機器看,不是給人看的。

(2)推薦系統的使命是在使用者和物品之間建立連線。一般方式是,對使用者和物品之間的匹配評分,也就是預測使用者評分或者偏好。推薦系統在對匹配評分前,則首先就要將使用者和物品都向量化,這樣才能進行計算。

(3)使用者畫像不是推薦系統的目的,而是在構建推薦系統的過程中產生的一個關鍵環節的副產品。

2)大型推薦系統一般分為召回和排序兩個階段

因為全量物品數量非常大,無法為一個使用者逐一計算每個物品的評分,這時候就需要一個召回階段,就是預先篩選一部分物品,從而降低計算量,使用者畫像除了用於最終匹配評分,還要用在召回。

3)使用者畫像的關鍵因素:維度、量化和效果

  • 理論上來說是越多維度越好,但是畫像越精細計算代價越大。
  • 使用者畫像是向量化結果,而不是標籤化。標籤化只是向量化的一種,因為向量的維度不一定需要人理解。
  • 以目標為導向,以推薦效果好壞來反向優化使用者畫像才有意義,要根據使用效果(排序好壞、召回覆蓋等指標)來指導使用者畫像的量化,沒有去管推薦效果而先行主觀量化每個維度是大忌。

4)使用者畫像的構建方法

(1)查戶口:直接使用原始資料作為使用者畫像的內容,如註冊資料等人口統計學資訊,或者購買歷史,閱讀歷史等,資料本身並沒有任何抽象和歸納。

(2)堆資料:堆歷史資料,做統計工作,這是最常見的使用者畫像資料。從歷史行為資料中挖掘出標籤,然後在標籤維度上做資料統計,用統計結果作為量化結果,如常見的興趣標籤。

(3)黑盒子:用機器學習方法學習出人類無法直觀理解的稠密向量,也就是不被非技術人員重視,但是實際在推薦系統中承擔的作用非常大。

3.從文字到使用者畫像有多遠

1)文字資料

(1)使用者端

  • 註冊資料的姓名、個人簽名
  • 評論、動態、日誌
  • 聊天記錄

(2)物品端

  • 標籤、描述
  • 新聞資訊類物品本身
  • 物品的其他屬性的文字

2)使用文字構建基礎版使用者畫像步驟

(1)文字結構化

(2)根據使用者行為資料把物品的結構化結果傳遞給使用者,與使用者自己的結構化資訊合併。

3)文字結構化

(1)關鍵詞提取:最基礎的標籤來源,也為其他文字分析提供基礎資料,常用TF-IDF和TextRank演算法。

    • TF-IDF
      • TF為詞頻,文字中出現的次數,一般會除以文字總次數進行歸一化。
      • IDF為文件頻率,與所有文字中出現關鍵詞的文字數量N有關,n為總文字數。IDF=logNn+1
      • 得到每個詞的權重後篩選關鍵詞。指定Top K個詞,或者取權重在權重平均值以上的詞作為關鍵詞。
    • TextRank
      • PageRank演算法是google用來衡量網頁重要性的演算法,TextRank思想與之類似。
      • 通過TextRank計算後的詞語權重,呈現出的特點:那些有共現關係的會互相支援對方成為關鍵詞。計算方式:
        • 文字中設定一個視窗K個詞,統計視窗內的詞與詞的共現關係,將其看作無向圖
        • 所有詞初始化重要性為1
        • 每個節點把自己的權重平均分配給與自己又連線的其他節點
        • 每個節點將其他節點分給自己的權重求和,作為自己的新權重
        • 反覆迭代3、4步,直到所有節點權重收斂為止

(2)實體識別

    • 常被認為是序列標註問題,和分詞、詞性標註屬於同一類問題
      • 分詞問題:對每個字元分類為“詞開始”、“詞中間”、“詞結束”三類之一
      • 詞性標註:對每個分好的詞,分類為定義的詞性集合之一
      • 實體識別:對每個分好的詞,識別為定義的命名實體集合之一
    • 對標註問題,常用的演算法是隱馬爾科夫模型(HMM)或者條件隨機場(CRF)。
    • 工業基本工具spaCy比NLTK效率更好。

(3)內容分類

    • 內容的分類得到結構化資訊,也被很多推薦系統用來在使用者冷啟動時探索使用者興趣。
    • 長文字內容分類可以提取很多資訊,短文字內容分類更困難一些,短文字分類的經典演算法是SVM,最常用的工具是fackbook開源的FastText。

(4)文字聚類

    • 傳統聚類方法在文字中的應用,逐漸被主題模型取代。

(5)主題模型

    • LDA為代表的主題模型能夠更準確地抓住主題,並且能夠得到軟聚類的效果,一條文字屬於多個類簇。
    • 得到文字在各個主題上的分佈,可以保留概率最大的前n個主題作為文字的主題。
    • LDA很難並行化,開源的LDA訓練工具有Gensim、PLDA。

(6)嵌入(Word Embedding)

    • 前面除了LDA,其他得到一些標籤,而這些標籤都是稀疏的,而詞嵌入能夠為每個詞學習得到一個稠密的向量。
    • 拿到這些稠密向量可以做以下事情
      • 計算詞和詞之間的相似度,擴充結構化標籤
      • 累加得到一個文字的稠密向量
      • 用於聚類,會得到比使用詞向量聚類更好的語義聚類效果
    • 工具有Word2Vec

4)標籤選擇

(1)得到標籤(關鍵詞、分類等)、主題、詞嵌入向量,接下來結構化資訊給使用者。具體哪些特性吸引了使用者消費?

    • 一種簡單粗暴的辦法是直接把使用者產生過行為的物品標籤累積在一起
    • 另一種方法是把使用者對物品的行為,消費或沒有消費看出一個分類問題,挑選出他實際感興趣的特性就變成了特徵選擇問題。
    • 基本思路
      • 把物品的結構化內容看出文件
      • 把使用者對物品的行為看出是類別
      • 每個使用者看見過的物品就是一個文字集合
      • 在這個文字集合上使用特徵選擇演算法選出每個使用者關心的東西

(2)卡方檢驗(CHI)選擇特徵

    • 卡方檢驗是有監督的,本質上在檢驗“詞和某個類別C相互獨立”這個假設是否獨立,這個假設偏離越大,就越說明這個詞和類別C有關係,這個詞就是關鍵詞。
    • 卡方值χ2Wi,Cj=NAD-BC2(A+C)(A+B)(B+D)(C+D)

 

      • 每個詞和每個類別都要計算,只要對其中一個類別有幫助的詞都應該留下
      • 卡方值越大,意味著偏離“詞和類別互相獨立” 的假設越遠,靠“詞和類別互相不獨立”這個備擇假設越近。

(3)資訊增益(IG, Information Gain)

    • 計算步驟
      • 統計全域性文字的資訊熵
      • 統計每個詞的條件熵,分別計算包含詞和不包含詞的兩部分的資訊熵,然後再包含以及不包含詞兩部分的文字比例加權平均(條件熵公式)
      • 兩者相減就是每個詞的資訊增益

4.超越標籤的內容推薦系統

1)必要性:內容推薦是一個包裝成推薦系統的資訊檢索系統,一個複雜的推薦系統很可能是基於內容推薦成長起來的。新的物品一開始沒有任何展示機會,沒有使用者反饋,只有內容能幫它。

2)內容分析和使用者分析

基於內容的推薦,最重要的不是推薦演算法,而是內容挖掘和分析。內容分析的產出有兩種:

(1)結構化內容庫

         最重要用途就是結合使用者反饋行為去學習使用者畫像

(2)內容分析模型,主要用於當新的物品剛剛進入時,需要實時地被推薦出去,這時候對內容的實時分析,提取結構化內容,再用於使用者畫像匹配。

    • 分類器模型
    • 主題模型
    • 實體識別模型
    • 嵌入模型

3)內容推薦演算法

(1)最簡單的推薦演算法是計算相似性,使用者的畫像內容就表示稀疏的向量,同時內容端也有相對應的稀疏向量,兩者之間計算餘弦相似度,根據相似度對推薦物品排序。還有一個優點就是可解釋性非常強。

(2)可以借鑑資訊檢索中的相關性計算方法來做推薦匹配計算:BM25F演算法。

(3)機器學習方法

         場景:提高某種行為的轉化率,如點選、收藏、轉發等。

    • 收集這類行為的日誌資料,轉換成訓練樣本,訓練預估模型。
    • 每條樣本由兩部分構成:一部分是特徵,包含使用者端畫像內容,物品端的結構化內容,可選的還有日誌記錄時一些上下文場景資訊,如時間、地理位置、裝置等。另一部分就是使用者的行為,作為標註資訊,包含有反饋和無反饋兩類。
    • 常用的模型是邏輯迴歸和梯度提升樹,或者兩者結合。預估使用者行為發生的概率,按照概率排序。