天天看點

【BABY夜談大資料】基于内容的推薦

起因

這個系列主要也是自己最近在研究大資料方向,是以邊研究、開發也邊整理相關的資料。網上的資料經常是碎片式的,如果要完整的看完可能需要同時看好幾篇文章,是以我希望有興趣的人能夠更輕松和快速地學習相關的知識。我會盡可能用簡單的方式去簡介一些概念和算法,盡可能讓沒有工科基礎的人也能大緻了解。

簡單講解

基于内容的推薦算法是非常常見的推薦引擎算法。

這種算法常用于根據使用者的行為曆史資訊,如評價、分享、點贊等行為并将這些行為整合計算出使用者的偏好,再對計算推薦項目與使用者偏好的相似度,将最相似的推薦給使用者。例如在書籍推薦中,可以根據使用者已經看過或者評分的書籍的一些共性(比如作者、分類、标簽)再推薦給使用者相似度高的書籍。

基于内容推薦可以通過兩種方式,一個是像上面所說通過使用者的行為進行個性化推薦,但是上面的推薦方式很依賴使用者的資料、不利于沒有使用者資料情況下的冷啟動。一般适合商品不多、使用者有特殊興趣的情況。

第二種就是根據事物的相關性,這種方式是通過比較事物之間共有屬性的相似度來進行推薦,例如如果A使用者喜歡Dota2,Dota2是屬于競技類網遊,那麼A使用者就有可能喜歡英雄聯盟。

這種方式的好處就是可以不依賴使用者的行為,但是要求事物的内容是準确和完善的并且是沒有歧義的,不過也可以通過手動輸入标簽的方式來解決這個問題。

相關算法

1.基于關鍵詞的空間向量模型

關鍵詞一般通過TF-IDF來進行提取,TF-IDF是一種常用的權重計算方法,它是基于統計學的方法,一般用來評估一個詞在一段話或一篇文章中的重要性。

TF-IDF對差別文檔最有意義的詞語應該是那些在文檔中出現頻率高,而在整個文檔集合的其他文檔中出現頻率少的詞語,是以如果特征空間坐标系取TF詞頻作為測度,就可以展現同類文本的特點。

另外考慮到單詞差別不同類别的能力,TF-IDF法認為一個單詞出現的文本頻數越小,它差別不同類别文本的能力就越大。是以引入了逆文本頻度IDF的概念,以TF和IDF的乘積作為特征空間坐标系的取值測度,并用它完成對權值TF的調整,調整權值的目的在于突出重要單詞,抑制次要單詞。

有很多不同的數學公式可以用來計算TF-IDF。

如果某個詞或短語在一篇文章中出現的頻率TF(詞頻)高,并且在其他文章中很少出現,則認為此詞或者短語具有很好的類别區分能力,适合用來分類。TFIDF實際上是:TF * IDF,TF詞頻(Term Frequency),IDF反文檔頻率(Inverse Document Frequency)。TF表示詞條在文檔d中出現的頻率。IDF的主要思想是:如果包含詞條t的文檔越少,也就是n越小,IDF越大,則說明詞條t具有很好的類别區分能力。如果某一類文檔C中包含詞條t的文檔數為m,而其它類包含t的文檔總數為k,顯然所有包含t的文檔數n=m+k,當m大的時候,n也大,按照IDF公式得到的IDF的值會小,就說明該詞條t類别區分能力不強。

詞頻 (TF) 是一詞語出現的次數除以該檔案的總詞語數。假如一篇檔案的總詞語數是100個,而詞語“母牛”出現了3次,那麼“母牛”一詞在該檔案中的詞頻就是 0.03 (3/100)。一個計算檔案頻率 (DF) 的方法是測定有多少份檔案出現過“母牛”一詞,然後除以檔案集裡包含的檔案總數。是以,如果“母牛”一詞在1,000份檔案出現過,而檔案總數是 10,000,000份的話,其檔案頻率就是 0.0001 (1000/10,000,000)。最後,TF-IDF分數就可以由計算詞頻除以檔案頻率而得到。以上面的例子來說,“母牛”一詞在該檔案集的TF- IDF分數會是 300 (0.03/0.0001)。這條公式的另一個形式是将檔案頻率取對數。

向量空間模型是通過進行特征選擇計算,通過權重公式将文本轉化為數值的一種形式。這樣就可以将向量空間模型通過計算得到相似度。

我們可以将使用者的喜好以文檔描述并轉換成向量模型,對商品也是這麼處理,然後再通過計算商品文檔和使用者偏好文檔的餘弦相似度。

有關餘弦相似度和TF-IDF詳細可以等下一篇文章。

*

2.Rocchoi算法*

Rocchio算法,是一種高效的分類算法,廣泛地被應用到文本分類,查詢擴充等領域。它通過構造原型向量的方法得到最優解。

Rocchio算法應該算是人們思考文本分類問題時最先能想到,也最符合直覺的解決方法。基本的思路是把一個類别裡的樣本文檔各項取個平均值(例如把所有 “體育”類文檔中詞彙“籃球”出現的次數取個平均值,再把“裁判”取個平均值,依次做下去),可以得到一個新的向量,形象的稱之為“質心”,質心就成了這 個類别最具代表性的向量表示。再有新文檔需要判斷的時候,比較新文檔和質心有多麼相像(八股點說,判斷他們之間的距離)就可以确定新文檔屬不屬于這個類。

通過上述的這兩種算法就可以判斷内容之間是否相似進而進行推薦。

繼續閱讀