推荐系统笔记(内容推荐)
思維導圖:
? ? ? ? ? ? ? ??
做好推薦系統,需要分三步:1、認識每一個用戶? 2、給用戶推薦用戶感興趣的東西? 3、等待各指標上升
認識用戶:用戶畫像
1、什么是用戶畫像?
用戶畫像對應的英文有兩個:Personas和User Profile。(Personas屬于交互設計領域的概念,不屬于討論范圍)
?例如:常見的用戶畫像如用標簽云的方式繪制一個人的形狀
2、用戶畫像的關鍵元素
推薦系統的使命是在用戶(User)和物品(Item)之間建立連接,一般方式就是,對用戶和物品之間的匹配評分,也就是預測用戶評分或者偏好。推薦系統在對匹配評分前,則首先需要對用戶和物品向量化,根據推薦算法不同,向量化的方式也不同,最終對匹配評分的做法也不同。
用戶畫像不是推薦系統的目的,而是在構建推薦系統的過程中產生的一個關鍵環節的副產品。
用戶畫像的關鍵元素:
1)、維度 :理論上來說維度越多,畫像越精細,但帶來的計算代價也是很大的,需要權衡
2)、量化:量化是主觀的,以目標為導向,以推薦效果的好壞來反向優化出用戶畫像才有意義,用戶畫像的量化主要和‘效果’息息相關,需要根據使用效果(排序、召回等指標)來指導用戶畫像的量化。
3、構建用戶畫像的方法
1)、查戶口
直接使用原始數據作為用戶畫像的內容,如注冊資料等人口統計信息
2)、堆數據
堆積歷史數據,做統計工作,常見的興趣標簽,就是從歷史行為數據去挖掘出標簽,然后在標簽上做數據統計,用統計結果作為量化結果。
3)、黑盒子
用機器學習的方法,學習出人類無法直觀理解的稠密向量,在推薦系統中承擔的作用非常大。
比如:使用潛語意模型構建用戶閱讀興趣,或者使用矩陣分解得到的隱因子,或者使用深度學習模型學習用戶的Embedding向量
總結:
1、用戶畫像到底是什么?
它是對用戶信息的向量化表示
2、用戶畫像的關鍵元素有那些?
維度、量化。用戶畫像是跟著使用效果走的,用戶畫像本身并不是目的
3、通常構建用戶畫像的手段有哪幾類?
1) 查戶口做記錄? 2) 堆數據做統計? 3)黑盒子看不懂
?
從文本到用戶畫像
從文本開始:
? ?1、用戶:
? ? ? ? ? ? 1)注冊資料中的姓名、個人簽名
? ? ? ? ? ? ?2)發表的評論、動態等
? ? ? ? ? ? ?3)聊天記錄
? ?2、物品:
? ? ?物品這一端也有大量的文本信息,可以用戶構建物品畫像,并最終幫助豐富用戶畫像(User Profile), 例如:
? ? ? ? ? ? 1) 物品的標題、描述
? ? ? ? ? ? 2) 物品本身的內容(一般指新聞資訊類)
? ? ? ? ? ? 3) 物品其它基本屬性的文本
文本數據是互聯網產品中最常見的信息表達形式,數量多,處理快,存儲小,所以文本數據擁有特殊的地位
構建用戶畫像
要用物品和擁護的文本信息構建出一個基礎版本的用戶畫像,大概需要做這些事:
1、把所有非結構化的文本結構化,去粗取精,保留關鍵信息
這一步最關鍵也是最基礎,其準確性、粒度、覆蓋面決定用戶畫像的質量
2、根據用戶行為數據把物品的結構化結果傳遞給用戶,與用戶自己的結構化信息合并
這一步會把物品的文本分析結果,按照用戶歷史行為把物品畫像傳遞給用戶
一、結構化文本
用戶端:
我們經常拿到的文本,都是自然語言描述的,就是‘非結構化的’,但是計算機處理時,只能使用結構化的數據索引,檢索,然后向量化后再計算
物品端:
從物品端的文本信息,可以利用成熟的NLP算法分析得到的信息,主要算法如下:
1、關鍵詞提取:最基礎的標簽來源,也為其它文本分析提供基礎數據,常用TF-IDF和TextRank
2、實體識別:人物、位置和地點、著作等,常用基于詞典的方法結合CRF模型
3、內容分類:將文本按照分類體系分類,用分類來表達較粗粒度的結構話信息
4、文本:在無人制定分類體系的前提下,無監督地將文本劃分為多個類簇,別看不是標簽,類簇編號也是用戶畫像的常見構成
5、主題模型:從大量已有的文本學習主題向量,然后預測新的文本在各個主題上的概率分布情況,也很實用,其實也是一種聚類思想,主題向量也不是標簽形式,也是用戶畫像的常用構成。
6、嵌入:也稱‘Embedding’,從詞到篇章,無不可以學習這種嵌入表達,嵌入表達是為了挖掘出字面意思之下的語義信息,并且用有限的維度表達出來
常用的文本結構化方法:
1、TF-IDF
TF:(Term Frequency)詞頻,要提取關鍵詞的文本中出現的次數
IDF:(Inverse Document Frequency)逆文檔頻率的意思,在所有的文本中,統計每一個詞出現在多少文本中
計算公式:
? ? ? ? ? ? ? ?IDF = log(N/(n+1))
計算出TF和IDF后,將兩個值相乘,就得到每一個詞的權重,根據權重篩選關鍵詞的方式有:
1)、給定一個K,取Top K個詞(總共得到的詞個數大于k)
2)、計算所有詞權重的平均值,取平均值之上的詞作為關鍵詞
某些場景下,還會加入其它過濾措施,如:只提取動詞和名詞作為關鍵詞
2、TextRank
1) 文本中,設定一個窗口高度,比如k個詞,統計窗口詞和詞的共現關系,將其看成是無向圖
2) 所有詞初始化的重要性都是1
3) 每個節點把自己的權重平均分配給和自己有連接的其它節點
4) 每個節點將所有其它節點分給自己的權重求和,作為自己的新權重
5) 如此反復迭代第3、4兩步,知道所有的節點權重收斂為止
通過TextRank計算后的詞語權重,呈現出這樣的特點:那些有共現關系的會出現支持對方稱為關鍵詞
3、內容分類
每個門戶網站都有自己的頻道體系,這個頻道體系就是一個非常大的內容分類體系
內容分類短文本方面經典的算法是SVM,在工具上現在比較常用的是Facebook的FastText
4、實體識別
命名實體識別是一個序列標注問題和分詞、詞性標注屬于同一類問題。
對于序列標注問題,常用的算法是隱馬爾科夫模型(HMM)或者條件隨機場(CRF)
5、聚類
傳統的聚類方法在文本中的應用,今天逐漸被主題模型取代,同樣是無監督模型,以LDA為代表的主題模型能夠更準確的抓住主題,并且能夠得到軟聚類的結果,也就是說可以讓一條文本屬于多個類簇。
6、詞嵌入
Word Embedding能夠為每一個詞學習得到一個稠密的向量,通過計算好的詞向量可以做以下事情:1、計算詞和詞之間的相似度,擴充結構化標簽,2、累加得到一個文本的稠密向量 3、用于聚類,會得到比使用詞向量聚類更好的語義更好的聚類結果
?
二、標簽選擇
前面說到,用戶端的文本、文本端的文本如何結構化,得到諸如標簽、主題等向量,接著即使圖和把物品的結構化信息給用戶
我們把用戶對物品的行為,消費或者沒有消費看成是一個分類問題。用戶用實際行動幫助我們標注若干數據,那挑選出他感興趣的特性就變成了一個特征選擇問題
最常用的兩個方法:卡方檢驗和信息增益
基本思想:
1、把物品的結構化內容看成文檔
2、把用戶對物品的行為看成是類別
3、每個用戶看見過的物品就是一個文本集合
4、在這個文本集合上使用特征選擇算法選出每個用戶關心的東西
總結:
1、分析用戶的文本和物品的文本,使其結構化
2、為用戶挑選有信息量的結構化數據,作為其畫像內容
3、把為用戶挑選畫像標簽看成是特征選擇問題,主要有卡方檢驗和信息增益
?
超越標簽的內容推薦系統:
一、為什么要做好內容推薦?
內容推薦就是一個包裝成推薦系統的信息檢索系統,通常的復雜推薦系統很可能都是從基于內容推薦成長起來的。
推薦系統總是需要接入新的物品,這些新的物品在一開始沒有任何展示機會,顯然沒有用戶反饋,這時候只有內容可以幫到它。
基于內容的推薦能把這些新物品找機會推薦出去,從而獲得一些展示機會。
如果要把基于內容的推薦做好,需要做好‘抓’、‘洗’、‘挖’,‘算’等步驟:
1、抓:持續抓取數據豐富自己的內容,做好基于內容的推薦,抓取數據補充內容源,增加分析的維度,兩者必不可少
2、洗:需要對冗余的內容、垃圾內容、政治色情等敏感內容等等都需要被洗出去
3、挖:很多推薦系統的提升效果并不是用了更復雜的推薦算法,而是對內容的挖掘做的更加深入
4、算:匹配用戶的興趣和物品的屬性,計算出更合理的相關性
?
典型的基于內容推薦的框架圖如下所示:
內容這一端:內容經過內容挖掘,得到結構化的內容庫和內容模型,也就是物品畫像
用戶這一端:用戶看過推薦列表之后,會產生用戶行為數據,結合物品畫像,經過用戶分析得到用戶畫像
對于那些沒有給用戶推薦過的新內容,經過相同的內容分析過程后就可以經過推薦算法匹配,計算得到新的推薦列表給用戶,周而復始
?
內容源:
? ? ? ?互聯網中,抓數據是一件可做不可說的事情,很多公司都有專門的團隊抓數據,補充推薦系統每天的內容消耗
內容分析和用戶分析:
? ? ? ?基于內容的推薦,最重要的不是推薦算法,而是內容挖掘和分析。內容挖掘越深入,哪怕早期推薦算法僅僅是非常硬的規則,也能取得不錯的效果。
例如:對內容分析越深入,能抓住用戶群體越精細,推薦的轉化率就越高,用戶對產品的好感度也就增加啦
內容分析的產出有兩個:
1、結構化內容庫
? ? ? ? 最重要的用途是結合用戶反饋行為去學習用戶畫像
2、內容分析模型
? ? ? ? 在內容分析過程中得到的模型,例如:分類器模型、主題模型、實體識別模型、嵌入模型,這些模型主要用在當新的物品剛剛進入時,需要實時地被推薦出去,這時候對內容的實時分析,提取結構化內容,再于用戶畫像匹配。
內容推薦算法
對于基于內容的推薦系統,最簡單的推薦算法是計算相似性,用戶畫像內容就表示為稀疏的向量,同時內容端也有對象的稀疏向量,兩者計算余弦相似度,根據相似度對推薦物品排序。
基于內容推薦天然有一個優點:擁有很強的解釋性,如果再進一步,要更好的利用內容中的結構化信息,因為一個直觀的認識是:不同字段的重要性不同。例如:一篇新聞,正文和標題中分析出一個人物名,評論中也分析出其它用戶討論提及的一些人物名,都可以用于推薦。
借鑒信息檢索中的相關性計算方法來做推薦匹配計算:BM25F算法
常用的開源搜索引擎如Lucene已經實現經典的BM25F算法,可直接用
前面提到的兩種辦法都可以做到快速實現,但實際上都不屬于機器學習方法,因為沒有考慮推薦的目標。
機器學習的思路:
一種典型的場景:提高某種行為的轉化率,如點擊、收藏、轉發等,典型的做法是收集這類行為的日志數據,轉換成訓練樣本、訓練預估模型。
每一條樣本由兩部分構成:一部分是特征,包含用戶端的畫像內容,物品端的結構化內容,可選的還有日志記錄時一些上下文場景信息,如時間、地理位置等;另一部分就是用戶行為,作為標注信息,包含有反饋和無反饋兩類
用這樣的樣本訓練一個二分類器,常用的模型是邏輯回歸和梯度提升樹或者兩者的結合。在推薦匹配時,預估用戶行為發生的概率,按照概率排序,這樣更合理更科學,而且這一條路可以一直迭代下去。
小結:
基于內容的推薦一般是推薦系統的起步階段,而且會持續存在,它的重要性不可取代,因為:內容數據始終存在并且蘊含豐富的信息量,產品冷啟動階段,沒有用戶行為,別無選擇,新的物品要被推薦出去,首選內容推薦
基于內容的整體框架也是比較清晰的,其中對內容的分析最為重要,推薦算法可以考慮先使用相似性計算,也可以采用機器學習思路訓練預估模型,當然這必須需要有大量的用戶行為做保證。
?
?
?
?
?
?
?
?
?
總結
以上是生活随笔為你收集整理的推荐系统笔记(内容推荐)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推荐系统笔记(简单概念)
- 下一篇: 推荐系统笔记(近邻推荐)