1. 程式人生 > >面試:機器學習--推薦演算法

面試:機器學習--推薦演算法

在推薦系統簡介中,我們給出了推薦系統的一般框架。很明顯,推薦方法是整個推薦系統中最核心、最關鍵的部分,很大程度上決定了推薦系統性能的優劣。目前,主要的推薦方法包括:基於內容推薦、協同過濾推薦、基於關聯規則推薦、基於效用推薦、基於知識推薦和組合推薦。

一、基於內容推薦

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

基於內容推薦方法的優點是:

 1)不需要其它使用者的資料,沒有冷開始問題和稀疏問題。

 2)能為具有特殊興趣愛好的使用者進行推薦。
 3)能推薦新的或不是很流行的專案,沒有新專案問題。
 4)通過列出推薦專案的內容特徵,可以解釋為什麼推薦那些專案。
 5)已有比較好的技術,如關於分類學習方面的技術已相當成熟。

缺點是要求內容能容易抽取成有意義的特徵,要求特徵內容有良好的結構性,並且使用者的口味必須能夠用內容特徵形式來表達,不能顯式地得到其它使用者的判斷情況。

二、協同過濾推薦

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

協同過濾是基於這樣的假設:為一使用者找到他真正感興趣的內容的好方法是首先找到與此使用者有相似興趣的其他使用者,然後將他們感興趣的內容推薦給此使用者。其基本思想非常易於理解,在日常生活中,我們往往會利用好朋友的推薦來進行一些選擇。協同過濾正是把這一思想運用到電子商務推薦系統中來,基於其他使用者對某一內容的評價來向目標使用者進行推薦。

 基於協同過濾的推薦系統可以說是從使用者的角度來進行相應推薦的,而且是自動的,即使用者獲得的推薦是系統從購買模式或瀏覽行為等隱式獲得的,不需要使用者努力地找到適合自己興趣的推薦資訊,如填寫一些調查表格等。

 和基於內容的過濾方法相比,協同過濾具有如下的優點:

1) 能夠過濾難以進行機器自動內容分析的資訊,如藝術品,音樂等。
2) 共享其他人的經驗,避免了內容分析的不完全和不精確,並且能夠基於一些複雜的,難以表述的概念(如資訊質量、個人品味)進行過濾。
3) 有推薦新資訊的能力。可以發現內容上完全不相似的資訊,使用者對推薦資訊的內容事先是預料不到的。這也是協同過濾和基於內容的過濾一個較大的差別,基於內容的過濾推薦很多都是使用者本來就熟悉的內容,而協同過濾可以發現使用者潛在的但自己尚未發現的興趣偏好。
4) 能夠有效的使用其他相似使用者的反饋資訊,較少使用者的反饋量,加快個性化學習的速度。

雖然協同過濾作為一種典型的推薦技術有其相當的應用,但協同過濾仍有許多的問題需要解決。最典型的問題有稀疏問題(Sparsity)和可擴充套件問題(Scalability)。

三、基於關聯規則推薦

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

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

四、基於效用推薦

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

五、基於知識推薦

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

六、組合推薦

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

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

 七、主要推薦方法的對比

各種推薦方法都有其各自的優點和缺點,見表1。

表1 主要推薦方法對比

推薦方法

優點

缺點

基於內容推薦

推薦結果直觀,容易解釋;

不需要領域知識

稀疏問題;新使用者問題;

複雜屬性不好處理;

要有足夠資料構造分類器

協同過濾推薦

新異興趣發現、不需要領域知識;

隨著時間推移效能提高;

推薦個性化、自動化程度高;

能處理複雜的非結構化物件

稀疏問題;

可擴充套件性問題;

新使用者問題;

質量取決於歷史資料集;

系統開始時推薦質量差;

基於規則推薦

能發現新興趣點;

不要領域知識

規則抽取難、耗時;

產品名同義性問題;

個性化程度低;

基於效用推薦

無冷開始和稀疏問題;

對使用者偏好變化敏感;

能考慮非產品特性

使用者必須輸入效用函式;

推薦是靜態的,靈活性差;

屬性重疊問題;

基於知識推薦

能把使用者需求對映到產品上;

能考慮非產品屬性

知識難獲得;

推薦是靜態的


協同過濾

協同過濾是一種基於一組興趣相同的使用者或專案進行的推薦,它根據鄰居使用者(與目標使用者興趣相似的使用者)的偏好資訊產生對目標使用者的推薦列表。協同過濾演算法主要分為基於使用者的協同過濾演算法和基於專案的協同過濾演算法。

    基於使用者的(User based)協同過濾演算法是根據鄰居使用者的偏好資訊產生對目標使用者的推薦。它基於這樣一個假設:如果一些使用者對某一類專案的打分比較接近,則他們對其它類專案的打分也比較接近。協同過濾推薦系統採用統計計算方式搜尋目標使用者的相似使用者,並根據相似使用者對專案的打分來預測目標使用者對指定專案的評分,最後選擇相似度較高的前若干個相似使用者的評分作為推薦結果,並反饋給使用者。這種演算法不僅計算簡單且精確度較高,被現有的協同過濾推薦系統廣泛採用。User-based協同過濾推薦演算法的核心就是通過相似性度量方法計算出最近鄰居集合,並將最近鄰的評分結果作為推薦預測結果返回給使用者。例如,在下表所示的使用者一專案評分矩陣中,行代表使用者,列代表專案(電影),表中的數值代表使用者對某個專案的評價值。現在需要預測使用者Tom對電影《槍王之王》的評分(使用者Lucy對電影《阿凡達》的評分是缺失的資料)。

   基於協同過濾的推薦系統


    由上表不難發現,Mary和Pete對電影的評分非常接近,Mary對《暮色3:月食》、《唐山大地震》、《阿凡達》的評分分別為3、4、4,Tom的評分分別為3、5、4,他們之間的相似度最高,因此Mary是Tom的最接近的鄰居,Mary對《槍王之王》的評分結果對預測值的影響佔據最大比例。相比之下,使用者John和Lucy不是Tom的最近鄰居,因為他們對電影的評分存在很大差距,所以JohLn和Lucy對《槍王之王》的評分對預測值的影響相對小一些。在真實的預測中,推薦系統只對前若干個鄰居進行搜尋,並根據這些鄰居的評分為目標使用者預測指定專案的評分。由上面的例子不難知道,User一based協同過濾推薦演算法的主要工作內容是使用者相似性度量、最近鄰居查詢和預測評分。

     目前主要有三種度量使用者間相似性的方法,分別是:餘弦相似性、相關相似性以及修正的餘弦相似性。

     ①餘弦相似性(Cosine):使用者一專案評分矩陣可以看作是n維空間上的向量,對於沒有評分的專案將評分值設為0,餘弦相似性度量方法是通過計算向量間的餘弦夾角來度量使用者間相似性的。設向量i和j分別表示使用者i和使用者j在n維空間上的評分,則用基於協同過濾的電子商務個性化推薦演算法研究戶i和使用者j之間的相似性為: 

基於協同過濾的推薦系統

    ②修正的餘弦相似性 (AdjustedCosine):餘弦相似度未考慮到使用者評分尺度問題,如在評分割槽間[1一5]的情況下,對使用者甲來說評分3以上就是自己喜歡的,而對於使用者乙,評分4以上才是自己喜歡的。通過減去使用者對項的平均評分,修正的餘弦相似性度量方法改善了以上問題。用幾表示使用者i和使用者j共同評分過的項集合,Ii和壽分別表示使用者i和使用者j評分過的項集合,則使用者i和使用者j之間的相似性為:

基於協同過濾的推薦系統
    ③相關相似性(Correlation)此方法是採用皮爾森(Pearson)相關係數來進行度量。設Iij表示使用者i和使用者j共同評分過的專案集合,則使用者i和使用者j之間相似性為: 

基於協同過濾的推薦系統

    在得到目標使用者的最近鄰居以後,接著就要產生相應的推薦結果。設NNu為使用者u的最近鄰居集合,則使用者u對項j的預測評分Puj計算公式如下:

基於協同過濾的推薦系統

    基於專案的(Item一based)協同過濾是根據使用者對相似專案的評分資料預測目標專案的評分,它是建立在如下假設基礎上的:如果大部分使用者對某些專案的打分比較相近,則當前使用者對這些項的打分也會比較接近。ltem一based協同過濾演算法主要對目標使用者所評價的一組專案進行研究,並計算這些專案與目標專案之間的相似性,然後從選擇前K個最相似度最大的專案輸出,這是區別於User-based協同過濾。仍拿上所示的使用者一專案評分矩陣作為例子,還是預測使用者Tom對電影《槍王之王》的評分(使用者Lucy對電影《阿凡達》的評分是缺失的資料)。

通過資料分析發現,電影《暮色3:月食》的評分與《槍王之王》評分非常相似,前三個使用者對《暮色3:月食》的評分分別為4、3、2,前三個使用者對《槍王之王》的評分分別為4、3、3,他們二者相似度最高,因此電影《暮色3:月食》是電影《槍王之王》的最佳鄰居,因此《暮色3:月食》對《槍王之王》的評分對預測值的影響佔據最大比例。而《唐山大地震》和《阿凡達》不是《槍王之王》的好鄰居,因為使用者群體對它們的評分存在很大差距,所以電影《唐山大地震》和《阿凡達》對《槍王之王》的評分對預測值的影響相對小一些。在真實的預測中,推薦系統只對前若干個鄰居進行搜尋,並根據這些鄰居的評分為目標使用者預測指定專案的評分。

    由上面的例子不難知道,Item一based協同過濾推薦演算法的主要工作內容是最近鄰居查詢和產生推薦。因此,Item一based協同過濾推薦演算法可以分為最近鄰查詢和產生推薦兩個階段。最近鄰查詢階段是要計算專案與專案之間的相似性,搜尋目標專案的最近鄰居;產生推薦階段是根據使用者對目標專案的最近鄰居的評分資訊預測目標專案的評分,最後產生前N個推薦資訊。

    ltem一based協同過濾演算法的關鍵步驟仍然是計算專案之間的相似性並選出最相似的專案,這一點與user一based協同過濾類似。計算兩個專案i和j之間相似性的基本思想是首先將對兩個專案共同評分的使用者提取出來,並將每個專案獲得的評分看作是n維使用者空間的向量,再通過相似性度量公式計算兩者之間的相似性。

    分離出相似的專案之後,下一步就要為目標專案預測評分,通過計算使用者u對與專案i相似的專案集合的總評價分值來計算使用者u對專案i的預期。這兩個階段的具體公式和操作步驟與基於使用者的協同過濾推薦演算法類似,所以在此不再贅述。

   與基於內容的推薦演算法相比,協同過濾有下列優點:能夠過濾難以進行機器自動基於內容分析的資訊。如藝術品、音樂;能夠基於一些複雜的,難以表達的概念(資訊質量、品位)進行過濾;推薦的新穎性。

   然而,協同過濾也存在著以下的缺點:使用者對商品的評價非常稀疏,這樣基於使用者的評價所得到的使用者間的相似性可能不準確(即稀疏性問題);隨著使用者和商品的增多,系統的效能會越來越低(即可擴充套件性問題);如果從來沒有使用者對某一商品加以評價,則這個商品就不可能被推薦(即最初評價問題)。

混合推薦系統

目前有很多學者都在研究基於多種方法的混合推薦系統,最常見的為基於內容和基於協同過濾的混合。本博文將詳細介紹提於對這兩種推薦系統同構化整合的混合推薦模型,該演算法同時擁有協同過濾推薦系統和基於內容推薦系統的優點,並且在一定程度上避免了基於內容或協同過濾的傳統推薦系統各自的缺點。

    該混合推薦演算法的模型及結構如下圖所示:

   
基於內容和基於協同過濾的混合推薦系統

    該模型與其他推薦模型的不同在於:1)構建了完善的模型輸入模組。該模組包含可以根據需要向模型中一次或多次輸入使用者個人資料、查詢(檢索)時需要的關鍵詞和句子、商品物件的各項屬性值、使用者使用推薦系統時和使用推薦系統後的評價,以及來自第三方對商品物件的評價等引數。2)構建了基於內容和協同過濾的整合推薦實施模組。該模組以迴歸模型為基本依據,以使用者資訊庫、商品資訊庫、歷史資訊庫和線上資訊庫為基礎,分別將基於內容推薦的演算法和協同過濾推薦演算法應用於一般預測值的計算及其隨機誤差項的計算。3)構建了較完備的推薦結果輸出模組。該模組依據系統的不同表現形式,將商品資訊庫中的資源“主動”推薦給使用者。推薦方法包括搜尋排序優先、郵件以及各種隱式資訊傳遞等。

    該混合模型的主要過程和核心是,先利用迴歸演算法提取商品的內容屬性,再對使用者進行基於內容的協同過濾,最後同構化整合二者結論,並進行加權求和與有序化。

    在詳細闡述模型之前,有必要分析一下模型的輸入資料。推薦系統典型的輸入資料是給每個商品及其屬性的評價。例如,表1是一個代表使用者對電影優劣評價的m×n使用者電影評價矩陣,該表的主要功能是在基於已經評價元素的基礎上對空缺值進行預測。在評價矩陣中,使用者1已經對電影1、電影2、電影4、電影5做了評價,那麼使用者1會對電影3、電影6做何評價呢?同樣地,使用者2對電影3,以及使用者3對電影4和電影5該做何評價呢?

    基於內容和基於協同過濾的混合推薦系統

    本混合推薦模型的演算法由6個主要步驟組成:

    首先,需要有一份存有所有商品(或物件)評價值(可能含有空缺值)的表格,初始表格中的評價值主要由使用者直接或間接給出。例如,www.movielens.org就是一個電影推薦網站,網站訪問者只要註冊並提供對15部以上的電影進行評價,那麼他(她)就可以獲得網站的推薦服務。像電影類別(例如動作、戲劇、愛情等)、導演、主要演員、製片商等關鍵資訊都有助於對使用者進行推薦。因此,使用者在獲得推薦服務之前應當儘可能向網站提供此類資訊。  

    其次,一旦使用者提交了推薦模型所需要的關鍵資訊,那麼對使用者的電影推薦就可以應用式(1)來計算:

   基於內容和基於協同過濾的混合推薦系統
(其中,Ri,j是使用者i對商品j的總體評價值,Xi,j,k是使用者i對商品j的第k個屬性的評價值,m是需要評價的商品的屬性總個數。)
    在迴歸模型(1)中,需要測量的各個引數αi,x(x∈[0,m])決定了各個屬性的數值對使用者的重要性。使用者過去的評價值都應用到模型(1)中,一旦使用者i的模型中各個引數被估計出來,那麼他(她)的空缺值就可以通過模型計算出來。例如,在表1中,使用者1的迴歸模型通過他(她)已經看過的電影來構造,模型構造出來後,使用者1對電影3的期望值就可以通過電影3和模型中的各個引數αi,x(x∈[0,m])預測出來。

    第三步,基於迴歸模型(1),計算適合所有使用者和商品及其屬性的預測值R*i,j。該預測值既適合實際已經發生的評價結果檢驗,也適合使用者實際未發生或丟失的空缺值的預測。

    第四步,構建一個預測誤差的資料矩陣。該誤差矩陣的值由實際發生的資料與預測資料之間的差值計算出來,即εi,j=Ri,j-R*i,j(2),公式中的εi,j實際上就是模型(1)中的隨機誤差項。由於對於需要預測的商品沒有實際發生評價值Ri,j,因此該商品的隨機誤差項就無法計算。這樣,通過實際的評價值和迴歸模型計算值之差構建的預測誤差資料矩陣的形式也就和表1類似,與表1相對應的空白處也是沒有資料的。

    第五步,將協作過濾技術用於第四步構建的預測誤差資料矩陣,我們在此採用基於鄰居的協同推薦演算法。為了計算使用者的空缺值,採用式(3)來計算使用者的隨機誤差項εi,j:Ra,j=λ∑ni=1wa,i(εi,j-εa)+εa(3)其中,Ra,j是使用者a對商品j的評價,n是協同過濾資料矩陣中已經對商品j評價過的使用者的數量,Wa,i是使用者i和目標使用者a之間的相似性,λ是一個總和值為1的正太化因素。在表1的電影評價例子中,假設對使用者1而言,電影3是·143·需要通過預測來判斷是否值得推薦的。在基於鄰居的演算法中,需要獲得使用者2、使用者3等其他使用者對電影3評價的加權平均數。另外,權重(Wa,i)的大小取決於使用者1在電影評價方面與其他使用者的相似性,包括皮爾森(Pearson)相關係數法、斯皮爾曼(Spearman)秩相關係數法和向量相似度等諸多方法均可以用來測定該值。在協同過濾的演算法方面還有很多其他重要的文獻,本文就不探討了。

    第六步,把第三步和第五步的計算結果求和,即第三步中利用基於內容推薦方法得出的R*i,j和第五步基於協同過濾推薦方法得出的εi,j,通過對式(2)進行變化並計算,得Ri,j=R*i,j+εi,j,即使用者i對商品j的預測評價值。