關於《推薦系統實踐》

xlvector發表於2011-11-14

從標題就可以看到,這本書重點在於實踐,所以本書的方法都是以能否在實際系統中得到廣泛的應用作為選擇的依據。我們重點講的方法都是在實際系統中得到過檢驗,並初步證明有效的方法。當然,為了滿足廣大學術圈的同學的需要,我們也會有專門的一章討論一些現在學術界研究熱點問題和方法,但這個不是這本書的重點。

推薦系統從1994年的GroupLens的文章開始,已經有了近20年的發展,其實在GroupLens之前,推薦系統的雛形就已經出現了。但推薦系統真正受到重視得益於兩個公司。一個是亞馬遜,該公司將個性化推薦視為他們的核心競爭力,並且將該技術深入的整合到他們所有的產品中,整個工業界,推薦系統的標杆就是亞馬遜了。另一個公司是Netflix,它舉辦了一個一百萬美元的比賽,用錢把我們這些號稱搞學術的人吸引了過去,讓很多研究人員把機器學習和資料探勘的知識充分應用到這個領域,促進了學術界對這個問題的深入研究。以至於讓著名的ACM專門舉辦了一個叫做推薦系統的國際會議。

因為推薦系統真正流行是從這幾年開始的,我們幾個作者接觸推薦系統時間也不是特別長,遠遠比不上GroupLens裡的那些牛人們,所以我們這本書不準備寫得非常深奧,也不準備嵌入過多的我們個人的看法,而是本著轉述牛人思想的出發點,整理總結推薦系統近20年來出現的著名的方法,特別是實際系統中經常使用到的方法。因此,我們這本書不是著書立說,而是整理總結,方便很多剛剛進入推薦系統的同學們作為參考。

關於整個書的架構,我個人的想法是從資料出發。因為我們知道,個性化推薦的基石在使用者資料。但使用者資料有很多,如何使用好每一種型別的使用者資料,是推薦系統研究和設計的核心。所以,我們會從沒有資料開始,逐步介紹各種使用者行為資料,並介紹每一種資料如何應用到個性化推薦當中。本書討論的資料主要包含了使用者的瀏覽、觀看、購買等行為資料,使用者的評分資料,使用者的標籤資料,上下文資料,社會網路資料。

關於本書的寫作方式。首先,我們以程式碼,而不是公式,作為和讀者交流的媒介。這一點我們是參考了《集體智慧程式設計》,主要是考慮到我們的讀者大部分是想從事推薦系統方面開發的軟體工程師們,他們可能更容易看懂程式碼。在介紹每個方法前,我們會首先介紹我們準備在什麼樣的資料集上評測這個演算法,我們如何設計離線實驗,用什麼指標來評測,等等。然後,在介紹每個方法時,我們會首先介紹一個大家都能想到的演算法。比如,如何給使用者個性化的推薦書,大家可能最經常想到的就是給使用者分類,選取每個類的最熱門的書。然後,我們會評測一下這個演算法,看看他各方面的指標如何。接下來,我們會分析這個演算法的不足,提出幾種改進,並對每種改進加以評測。這樣,經過很多改進,我們最終會得到一個比較好的,在實際系統中正在用的演算法。

考慮到這本書講的是實踐,我們在講演算法的同時,也會對常用的系統架構進行總結,系統的架構包括了資料如何存貯,如何設計離線和線上系統,離線模型如何更新,線上系統如何實現實時推薦,線上系統的模組如何設計,各個模組之間的聯絡是怎樣的,等等。

關於本書的目錄,我們會在晚些時候給出來。最後我給出了目前這本書的幾章的標題,大家可以通過這個瞭解這本書的大致結構。

  • 什麼是推薦系統
  • 如何評測推薦系統
  • 如何解決推薦系統的冷啟動
  • 如何利用使用者行為資料
  • 如何利用使用者標籤資料和內容資料
  • 如何利用上下文資訊
  • 如何利用社會網路資料
  • 如何提高推薦的多樣性,新穎性
  • 實際推薦系統的架構的例子
  • 如何解決評分預測問題

相關文章