1. 程式人生 > >大資料學習——過濾及推薦常用演算法簡介

大資料學習——過濾及推薦常用演算法簡介

一、過濾演算法

Bloom-Filter演算法簡介

即布隆過濾器,1970年由Bloom提出,它可以用於檢索一個元素否在一個集合中。它是一種空間效率很高的隨機資料結構,它利用陣列很簡潔地表示一個集合,並能判斷一個元素是否屬於這個集合。它是一個判斷元素是否存在集合的概率演算法。BF有可能出現錯判 ,但不會漏掉判斷。因此它適合那些“零錯誤”的應用場合。

Bloom-Filter的基本思想是利用我個不同的Hash函式來解決“衝突”。

二、推薦系統常用演算法

1. 基於內容的推薦

Content-based Recommendation
建立在專案的內容資訊上作出推薦的,而不需要依據使用者對專案的評價意見,更多地需要用機 器學習的方法從關於內容的特徵描述的事例中得到使用者的興趣資料。在基於內容的推薦系統中,專案或物件是通過相關的特徵的屬性來定義,系統基於使用者評價物件 的特徵,學習使用者的興趣,考察使用者資料與待預測專案的相匹配程度。使用者的資料模型取決於所用學習方法,常用的有決策樹、神經網路和基於向量的表示方法等。 基於內容的使用者資料是需要有使用者的歷史資料,使用者資料模型可能隨著使用者的偏好改變而發生變化。

2. 協同過濾推薦

Collaborative Filtering Recommendation
推薦系統中應用最早和最為成功的技術之一。它一般採用最近鄰技術,利用使用者的歷史喜好資訊計算使用者之間的距離,然後 利用目標使用者的最近鄰居使用者對商品評價的加權評價值來預測目標使用者對特定商品的喜好程度,系統從而根據這一喜好程度來對目標使用者進行推薦。協同過濾最大優 點是對推薦物件沒有特殊的要求,能處理非結構化的複雜物件,如音樂、電影。

i. 基於使用者的推薦

基於使用者的協同過濾推薦的基本原理是,根據所有使用者對物品或者資訊的偏好(評分),發現與當前使用者口味和偏好相似的“鄰居”使用者群,在一般的應用中是採用計算“K-Nearest Neighboor”的演算法;然後,基於這 K 個鄰居的歷史偏好資訊,為當前使用者進行推薦。
這種推薦系統的優點在於推薦物品之間在內容上可能完全不相關,因此可以發現使用者的潛在興趣,並且針對每個使用者生成其個性化的推薦結果。缺點在於一般的Web系統中,使用者的增長速度都遠遠大於物品的增長速度,因此其計算量的增長巨大,系統性能容易成為瓶頸。因此在業界中單純的使用基於使用者的協同過濾系統較少。

ii.基於物品的推薦

3. 基於關聯規則推薦

Association Rule-based Recommendation
以關聯規則為基礎,把已購商品作為規則頭,規則體為推薦物件。關聯規則挖掘可以發現不同商品在銷售過程中的相關性,在零 售業中已經得到了成功的應用。管理規則就是在一個交易資料庫中統計購買了商品集X的交易中有多大比例的交易同時購買了商品集Y,其直觀的意義就是使用者在購 買某些商品的時候有多大傾向去購買另外一些商品。比如購買牛奶的同時很多人會同時購買麵包。

演算法的第一步關聯規則的發現最為關鍵且最耗時,是演算法的瓶頸,但可以離線進行。其次,商品名稱的同義性問題也是關聯規則的一個難點。

4. 基於效用推薦

Utility-based Recommendation
是建立在對使用者使用專案的效用情況上計算的,其核心問題是怎麼樣為每一個使用者去建立一個效用函式,因此,使用者資料模型很大 程度上是由系統所採用的效用函式決定的。基於效用推薦的好處是它能把非產品的屬性,如提供商的可靠性(Vendor Reliability)和產品的可得性(Product Availability)等考慮到效用計算中。

5. 基於知識推薦

Knowledge-based Recommendation
在某種程度是可以看成是一種推理(Inference)技術,它不是建立在使用者需要和偏好基礎上推薦的。基於知識的方法因 它們所用的功能知識不同而有明顯區別。效用知識(Functional Knowledge)是一種關於一個專案如何滿足某一特定使用者的知識,因此能解釋需要和推薦的關係,所以使用者資料可以是任何能支援推理的知識結構,它可以 是使用者已經規範化的查詢,也可以是一個更詳細的使用者需要的表示。

6. 基於人口統計學的推薦

Demographic-based Recommendation
是一種最易於實現的推薦方法,它只是簡單的根據系統使用者的基本資訊發現使用者的相關程度,然後將相似使用者喜愛的其他物品推薦給當前使用者。
首先,系統對每個使用者都有一個使用者 Profile 的建模,其中包括使用者的基本資訊,例如使用者的年齡,性別等等;然後,系統會根據使用者的 Profile 計算使用者的相似度,可以看到使用者 A 的 Profile 和使用者 C 一樣,那麼系統會認為使用者 A 和 C 是相似使用者,在推薦引擎中,可以稱他們是“鄰居”;最後,基於“鄰居”使用者群的喜好推薦給當前使用者一些物品。
這種基於人口統計學的推薦機制的好處在於:
l因為不使用當前使用者對物品的喜好歷史資料,所以對於新使用者來講沒有“冷啟動(Cold Start)”的問題。
l這個方法不依賴於物品本身的資料,所以這個方法在不同物品的領域都可以使用,它是領域獨立的(domain-independent)。
然後,這個方法的缺點和問題就在於,這種基於使用者的基本資訊對使用者進行分類的方法過於粗糙,尤其是對品味要求較高的領域,比如圖書,電影和音樂等領域,無法得到很好的推薦效果。另外一個侷限是,這個方法可能涉及到一些與資訊發現問題本身無關卻比較敏感的資訊,比如使用者的年齡等,這些使用者資訊不是很好獲取。

7. 組合推薦

Hybrid Recommendation
由 於各種推薦方法都有優缺點,所以在實際中,組合推薦(Hybrid Recommendation)經常被採用。研究和應用最多的是內容推薦和協同過濾推薦的組合。最簡單的做法就是分別用基於內容的方法和協同過濾推薦方法 去產生一個推薦預測結果,然後用某方法組合其結果。儘管從理論上有很多種推薦組合方法,但在某一具體問題中並不見得都有效,組合推薦一個最重要原則就是通 過組合後要能避免或彌補各自推薦技術的弱點。

在組合方式上,有研究人員提出了七種組合思路:

1)加權(Weight):加權多種推薦技術結果。
2)變換(Switch):根據問題背景和實際情況或要求決定變換採用不同的推薦技術。
3)混合(Mixed):同時採用多種推薦技術給出多種推薦結果為使用者提供參考。
4)特徵組合(Feature combination):組合來自不同推薦資料來源的特徵被另一種推薦演算法所採用。
5)層疊(Cascade):先用一種推薦技術產生一種粗糙的推薦結果,第二種推薦技術在此推薦結果的基礎上進一步作出更精確的推薦。
6)特徵擴充(Feature augmentation):一種技術產生附加的特徵資訊嵌入到另一種推薦技術的特徵輸入中。
7)元級別(Meta-level):用一種推薦方法產生的模型作為另一種推薦方法的輸入。