2 推薦器

2   推薦器


本章的主要內容:

*  在Mahout中推薦器Recommender是什麼樣的

*  運行第一個推薦器Recommender

*  評估推薦引擎的準確和質量

*  用GroupLens網站的真實的數據來評估推薦器


每天我們都會有對周圍的東西有一些看法和觀點,這些東西可能是我們喜歡的,不喜歡的,還有莫不關心的東西 ,這些通常發生在不知不覺中。

例如,當你傾心聽一首來自收音機的歌時,要麼它引起妮的注意,要麼它讓妮討厭,要麼 妮根本就沒有在意。同樣的情況會發生在xxx.

雖然大家的品味經常在變,但他們都遵循一定的模式。人們往往喜歡的事情,類似於他們喜歡的其他事情。因爲我喜歡喫燻肉、生菜、番茄組成的三明治,你可以猜到我想喫總會三明治,它們通常是擁有一樣的火雞的三明治。同樣,大家往往喜歡大家喜愛的類似的事情。當一個朋友進入設計學校的時候,他看到幾乎所有其他設計專業的學生,都擁有一臺蘋果電腦,這並不令人驚訝,因爲她已經是一個終生Mac用戶 

其實我們可以利用這些模式來預測,某些喜歡的和不喜歡的事情。如果我們讓一個陌生人站在你的面前,問你是否知道她喜歡第三部《Lord of the Rings film》?除了猜測,你可能沒有更好的辦法。但是,如果她告訴你,她喜歡前兩部電影。如果她不喜歡第三部,那是不可能的。換一句話,如果她說她討厭這部電影,或者我們會問“天哪,怎麼可能”。你可以直接猜到第三部電影肯定在她喜歡的列表上。推薦器幾乎可以預測到這些模式,並利用他們來發現你不瞭解的新的,令人滿意的事情。

2.1 什麼是推薦器

因爲某種原因你從書架上取到這本書。也許你是在知道的其他書本,看到了這本書, 並覺的它有用。或者覺得書店把它放在這個位置,是因爲喜歡這些書的人也喜歡這本書。也或許你在一個同事的書架上看到這本書,這位同事與你一樣對機器學習很有興趣。也有可能他可能直接推薦你看這本書。

在這一章,我們將會深入研究人們產生推薦,發現新事物的一些方法。當然還有這些進程,在軟件中如何利用mahout實施.我們已經設計了一些方法:發現我們可能喜歡的項目,從而可以留心相似品味的人,看看他們喜歡的東西。換句話說,我們可以算出什麼樣的項目,會像我們以前喜歡的項目。另外我們可以通過留心觀察其他人的選擇。這些描述了推薦引擎算法的兩個主要類別:“基於用戶(user-based)” 和 “基於項目(item-based)”推薦器。

2.1.1 是基於協同過濾推薦,還算基於內容的推薦嚴格的說,這裏有協同過濾(CF)的例子。根據也只能根據,用戶與項目的關係的知識,從而產生推薦器。這些技術並不需要識別項目本身的屬性。這在某種程度上這是一個優勢。推薦器框架根本不關心,這個項目是否是書本、主題公園、花、或者是其他的人,因爲它們的屬性中沒有任何一個會被當作輸入的。

這裏有根據項目屬性而成立的其他方法,通常被認爲是“基於內容(content-based)”推薦算法。例如,如果有一個朋友把這本書推薦給你,是因爲這是一本Manning出版書,這位朋友喜歡其他的Manning出版的書,那麼這位朋友正在從事的事情,大概就是“content-based”推薦器算法。這個算法是依據這本書的一個屬性:出版商。Mahout推薦框架不直接實施這種算法,雖然它提供了一些方法,把項目屬性信息加入它的計算。同樣的,它可能在技術上被認爲是一個協同篩選框架。

這些算法沒有問題;相反的是,它們同樣可以表現的相當好。但是它們必要是特定領域的方法,試圖編纂進一個框架將是相當困難的。建立一個有效的content-based書本推薦算法,人們將必須決定一本書中的哪個屬性:頁數,作者,出版商,顏色,字體,那個是有意義的,並達到那種程度。這種知識中沒有一個是可以翻譯成另外一個領域的;預定這種方式的推薦器,對選擇那個是更好的披薩沒有幫助。

也就是因爲這個原因,Mahout將不會太多討論這種形式的推薦器。這些觀點被鎖定在Mahout提供的事情中,並置入高閣;在本章將會舉個例子,我們會爲一個日期網站建立一個推薦器。在隨後介紹的Mahout爲基於協同過濾推薦算法進行的實施後,我們將會更詳細的討論它們與contene—based算法的關係。

2.1.2 主流推薦算法
到目前爲止,很多人可能已經瞭解到,如amazon或netflix這樣的網站,在現實中實施的推薦算法:根據瀏覽和購買歷史,網站會生產一個產品列表,它的推薦可能會吸引你。這種類型的推薦引擎自從1900就已開始出現,但直到最近它才進入大量的計算機研究領域,被精心設計和研究。隨着這些技術變得越來越主流,對它們的要求也不斷增加,提供的開源實現也同樣如此。隨着日益增加的,可理解的,低層本的運算能力,意味着推薦引擎正變的越來越易理解並廣泛使用。

事實上,推薦技術對客戶來說不僅僅是像DVD這類推薦的事物。這種方法通常估計大量衆多的事物之間的相互關聯。一個人可以用相同的技術把DVD推薦給客戶,估計那個客戶最有可能喜歡某個DVD.在一個社會網絡中,一個推薦器可以把人推薦給別外一些人。





2.2 運行第一個推薦引擎




2.2.1 建立輸入的數據



2.2.2 創建一個推薦器Recommender



2.2.3 分析輸出




2.3 評估推薦器



2.3.1 訓練數據和得分




2.3.2 運行一個推薦評估





2.3.3   對結果的判斷


2.4 通過預測和回訪來評估



2.4.1 運行一個RecommenderIRStatsEvaluator



2.4.2 預測和回訪中看出問題



2.5 評估GroupLens數據集


2.5.1 抽取推薦器使用的輸入數據



2.5.2 另一個推薦器的體驗



2.6 總結

這一章,我們介紹了關於推薦引擎的一些觀點。我們已經使用小部分的數據來運行一個有代表性意義的推薦器,並解釋了結果。

與此同時,我們對推薦引擎的輸出結果進行了一些大體評估,我們也會在後面幾章頻繁的對結果進行評估。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章