黃茂洲
摘 要:近些年隨著大數(shù)據時代的來臨,人們對于信息的需求量日益增多。那么,由此產生的一個自然的問題是:我們如何在浩瀚的數(shù)據海洋中盡可能準確地找到自己所感興趣的內容呢?由此,在計算機科學領域中便產生了一個特定的研究領域——個性化的推薦系統(tǒng)。而推薦算法正是推薦系統(tǒng)的核心所在。個性化的推薦系統(tǒng)運用在生活的不同領域中,它主要是利用用戶的行為數(shù)據和其之相關的物品屬性等,通過特定的數(shù)學算法來達到向用戶推薦所感興趣信息的目的?,F(xiàn)代個性化的推薦系統(tǒng)所利用的推薦算法可以分為4種,在這篇論文中,我們將分別來討論這四種不同的推薦算法的特征。
關鍵詞:數(shù)學;理論計算機科學;推薦系統(tǒng);算法
1 導引
數(shù)學是計算機科學的基礎。在二十世紀六、七十年代時,計算機科學在當時僅僅數(shù)學的一個分支。一個很典型的例子,便是世界上第一個計算機科學的博士霍蘭德,在密歇根大學攻讀博士學位時,一開始便是學習的是數(shù)學專業(yè),后來轉到了密歇根大學新成立的計算機與通信科學系,而這也成為世界上第一個真正的計算機科學系。
當時光進展到二十一世紀時,計算機科學這個領域已經擁有了非常廣闊的研究領域與眾多不同方向的科研人員。而此時,計算機科學在很多方面地發(fā)展,已經開始從相反的方向來推動數(shù)學的發(fā)展。但是,在其中,一個始終沒有發(fā)生變化的核心主題便是,計算機科學的數(shù)學基礎,也就是理論計算機科學。
理論計算機科學的一個重要的研究課題便是設計適應于計算機科學中的各種不同應用場景的算法。算法指的是程序員通過特定的計算機語言,輸入計算機系統(tǒng)中的一系列解決特定問題的清晰而明確的指令,使得計算機能夠在有限的時間以內得出所符合設計要求的計算結果。
一個特定的算法都必須具備自己的要素(數(shù)據對象的運算和操作)以及五個基本特征(有窮性,確切性,輸入,輸出項及可行性)。
在這篇論文中,我們主要通過機器學習中的現(xiàn)代個性化的推薦系統(tǒng)這個主題,去嘗試討論四種不同的推薦算法的特征。
2 推薦算法
計算機與網絡早已經融入到了我們的日常的生活、學習、生活中,成為了我們不可或缺的助手與朋友。隨著近四、五十年計算機科學的高速發(fā)展,計算機與網絡已經徹底改變了我們的日常生活、學習、工作習慣。
智能化是理論計算機科學研究的一個主要目標,近些年來的實踐已經充分證明,機器學習的方法雖然在一些特定的問題環(huán)境下還存在一些局限性,但是總體來說它是當前實現(xiàn)智能化這個目標最有效的一個方法。
學習僅僅是計算機科學中的一個專門術語,用更為嚴格的數(shù)學語言來說,學習即是統(tǒng)計的意思。機器學習,簡單地說,僅僅是利用計算機這個平臺,利用統(tǒng)計學的方法,去對數(shù)據集進行分析與歸納?,F(xiàn)代個性化的推薦系統(tǒng)便是機器學習中的一個重要的主題,也是我們日常生活中較為熟悉的一個機器學習的貼切的例子。推薦算法是推薦系統(tǒng)的核心所在,一個特定的算法本質上就是一個計算的過程。推薦算法的計算主要來自于數(shù)學中的線性代數(shù)與概率統(tǒng)計,其中一個核心的概念,便是矩陣。
正如我們上面所提到,機器學習中的學習的意思等價于概率論中的統(tǒng)計,那么構成機器學習理論的一個重要數(shù)學分支是概率統(tǒng)計便不會讓人感到太奇怪。但是,另一方面,什么是矩陣?什么是線性代數(shù)呢?矩陣這個詞看似十分的抽象,事實上,一個矩陣僅僅是一個數(shù)或者文字的一個排列而構成的一張表格。我們可以對矩陣定義加法,減法,乘法等等基本的運算。通過這些計算的規(guī)則去研究矩陣的各種性質的學科,便是線性代數(shù)。
在日常生活中,許許多多的APP或者各式各樣的網站會根據顧客的瀏覽歷史記錄或是其他的相關數(shù)據,較為準確的給顧客們推薦他們所感興趣的內容,例如網易云音樂的每日推薦和亞馬遜的推薦讀物等等。這些看似神奇的推薦應用背后其實都僅僅是依靠著特定的推薦算法來實現(xiàn)的。
正如我們在第一節(jié)的最后所總結的一樣,推薦系統(tǒng)中的各種算法也具備算法的基本條件,但它們的特別之處在于它們是在通過一個特定的矩陣來分析各個用戶的行為數(shù)據而得到的一些相關的統(tǒng)計結果(如下圖所示),這其實就是為什么推薦系統(tǒng)一般能夠準確的得出一個人的喜好的背后原理所在。
上面的統(tǒng)計圖代表了一個虛構的音樂收集矩陣。不同的數(shù)字所代表的意義如下:單曲循環(huán)=5,分享=4,收藏=3,主動播放=2,聽完=1 拉黑=-5如此類推。最后把得分最高的歌曲推薦給相應的用戶即可(如下圖所示)
一個矩陣也許很復雜,線性代數(shù)中的一個常用的方法,便是把矩陣分解成一些更簡單的矩陣的乘積,通過研究這些更簡單的矩陣,來得到原始矩陣的一些有用的性質。矩陣的UV分解是線性代數(shù)中分解一個矩陣的經典的方法,我們在這里不做詳細地解釋,但是我們推薦對此感興趣的讀者去參看參考文獻[2]中的第二章。
利用矩陣的UV分解將每個用戶的潛在因子求出,再利用解析幾何中高維歐幾里得空間中兩個向量夾角的余弦公式相乘就可以得出得分矩陣。于是系統(tǒng)把得分最高的歌曲推薦給相應的用戶即可(如下圖示,統(tǒng)計圖中的紅色的字體即代表推薦的歌曲)
現(xiàn)代個性化的推薦系統(tǒng)所利用的推薦算法主要可以分為4種,在下面,我們將分別來討論這四種不同的推薦算法的特征。此外,在一些特定的問題中,還會涉及到一些非傳統(tǒng)的,并不常用的推薦算法,限于篇幅,我們在這篇文章中暫不介紹,感興趣的讀者可以參看參考文獻[1]中的相應章節(jié)。
第一種方法是基于對象的行為數(shù)據的協(xié)同過濾算法(Collaborative Filtering,CF)。通過在對象的歷史行為(例如用戶的瀏覽記錄,購買記錄等等)歸納出一種特定的模式,再通過這些行為記錄,利用一些基本的統(tǒng)計知識來分析這些用戶的歷史行為與產品的相似度。最后推薦將相似度最高且此用戶未瀏覽過的內容推薦給用戶。這種算法可依據收集的用戶的歷史數(shù)據,來推薦世界上的任何一種東西。這個算法的實施步驟主要來說可分為三個主要的階段:(1)收集、分析各個用戶的行為記錄。(2)尋找相近用戶。也就是找到和該用戶相似度最高的用戶。為了達到該目的,一般會使用調整余弦相似性來計算。
(3)推薦。將計算得出相似度最高的產品且該用戶當前沒有瀏覽過的產品推薦給該用戶即可。這個算法的優(yōu)點是所需要的產品的知識較少,推薦內容準確,推薦領域較廣等等。但它的缺點是強烈地依賴用戶反饋的準確性和數(shù)量,新用戶無法得到相應的反饋等。
第二種的推薦算法是基于流行度:這種算法是現(xiàn)在的機器學習應用領域中最為常見也是當前應用得最為廣泛的算法。原因是因為這個算法的運算方式非常簡便迅捷。將各個項目的流行度進行排序,再將排行靠前的流行項目推薦給用戶即可。例如微博的熱搜,音樂APP中的最熱歌曲,各大新聞等。這個算法的優(yōu)點是算法簡單,操作簡便快捷,推薦內容適用于大眾和新用戶。而它的缺點是不能推薦相對個性化的內容和領域。
第三種算法是基于內容的推薦算法。假如我是一款系列游戲的愛好者,當游戲商更新了這個游戲新的一個版本時,那么我一定會很感興趣,但以上的兩種算法都不太可能將這個更新結果推薦給我。那么這時候就會利用基于內容的推薦算法。它的理論依據主要來源于信息的過濾和檢索。通過分析用戶的歷史搜索記錄或是其他的相關的歷史行為數(shù)據,從中提取關鍵字標簽,如下圖示
然后推薦系統(tǒng)將這些標簽視作屬性,將用戶與數(shù)據視為歐幾里得空間中的不同向量想,系統(tǒng)計算出各個向量的距離,這個距離就從數(shù)值上反應了內容與用戶的相似度了。這個算法的優(yōu)點是能夠比較好的解決冷啟動問題,也不會被流行度所限制,因為算法本身是直接根據內容來進行檢索。而它的 缺點是過度專業(yè)化,需要較高的產品知識與龐大的數(shù)據構造分類器。基于內容的推薦算法會一直根據標簽給用戶推薦與他們密切相關的內容,而使得推薦失去了原本的多樣性。
最后一種推薦算法是基于模型的推薦算法?;谀P偷耐扑]算法有不同的具體實施過程,而且他們幾乎都用到了機器學習中的一些經典的方法。一般最簡單的基于模型的方法是logistics回歸預測,推薦系統(tǒng)通過分析用戶的歷史購買、瀏覽記錄等行為數(shù)據,得出有限多個影響用戶的特征屬性,例如性別,年齡,地區(qū)等等。用一個變量來代表著用戶對特定產品的喜好程度。于是,這些數(shù)據形成了一個二維平面中的散點圖,推薦系統(tǒng)通過線性回歸擬合出一個近似函數(shù),函數(shù)上的點來近似這些統(tǒng)計數(shù)據。接著系統(tǒng)再分別算出這些特征屬性所對應的系數(shù),便可以得出對應物品的權重值,權重值越大就代表這個產品對用戶越重要?;谀P偷乃惴ㄊ挚焖?,一般用于新聞和廣告領域,它的優(yōu)點是推薦的內容可以多樣化,而它的缺點則是算法局限于時效性。
3 總結和將來的工作
機器學習中的現(xiàn)代個性化的推薦系統(tǒng)與我們的日常生活有著密不可分的聯(lián)系,它使我們的眼界更加開拓。隨著現(xiàn)代計算機科學地迅速發(fā)展,推薦系統(tǒng)中的核心——推薦算法也在不斷的發(fā)展,但每一種算法都還是存在著一定的局限性。在將來的工作中我們可以注重在技術方面上解決這些問題,通過更深入地學習數(shù)學與理論計算機科學知識,去嘗試設計更好的推薦算法,使得推薦系統(tǒng)可以更加成熟。
參考文獻:
[1]李航,統(tǒng)計學習方法,第1版,北京:清華大學出版社,2012.
[2]伊恩·古德費洛,約書亞·本吉奧,與亞倫·庫維爾,深度學習,第1版,人民郵電出版社,2017.