1. 程式人生 > >推薦系統實踐---第一章:好的推薦系統

推薦系統實踐---第一章:好的推薦系統

《推薦系統實踐》這本書對於推薦系統的各個方面介紹地很詳細,如果你認為自己是推薦系統領域的專業人員,那麼書中的每一個點都必須得會,最起碼得知道;如果你正在全面地學習推薦系統,這本書是一個非常好的由淺入深的教材。如果你是一個學校裡的科研人員,你可以在裡面看到熟悉的數學模型,而且可以看到具體實施到實際生產需要解決哪些問題;如果你是一個公司裡的實戰人員,你可以看到熟悉的程式碼來理解作者表達的意思,而且也可以看到一個問題時如何用數學模型去解決的;

下面簡單介紹書中提到的問題以及有哪些解決辦法,方便大家對正本書有個整體的把握,同時我也會上傳這本書的高清PDF版,本來想不用積分下載,但是系統最少2個,要是哪位沒有積分,可以私信我。下載連結如下:

其他章節內容

第一章:好的推薦系統

1.1    為什麼要有推薦系統?推薦系統是什麼?

作為一位消費者,你想聽音樂,於是開啟音樂播放器,但是想不起來要具體聽哪些歌曲,面對這麼多分類下的這麼多歌曲,到底那首歌好聽呢?

作為一位商家,手裡有幾百萬使用者,幾百萬歌曲,如何讓每一位使用者聽到他喜歡的歌曲?

如果只有幾首歌,幾個使用者,很好辦,每個使用者把所有的歌都聽一遍就可以了,但是使用者規模和歌曲規模如此大,產生了資訊過載的問題。

針對資訊過載問題,有三種解決辦法:分類目錄(雅虎),搜尋引擎(谷歌),推薦系統。

分類目錄只能覆蓋少量的熱門網站;搜尋引擎需要使用者輸入準確的關鍵詞;所以推薦系統誕生了。所以推薦系統的條件是:資訊過載+使用者沒有明確需求。

1.2    推薦系統應用領域

主要包括:電子商務,電影和視訊,音樂,社交網路,閱讀,基於位置的服務,個性化郵件,廣告投放。

基於位置的服務:給使用者推薦附近的吃喝玩樂。

廣告投放:幫助廣告找到可能對它們感興趣的使用者。而個性化推薦主要是指為使用者找到他們感興趣的商品。個性化廣告投放技術主要分為三種:上下文廣告(瀏覽記錄),搜尋廣告(搜尋記錄),個性化展示廣告(大的橫幅圖片)。

1.3    推薦系統的評測方式和評價指標

一個推薦系統由3部分組成:消費商品的使用者,提供商品的商家,提供推薦系統的網站或者軟體。一個好的推薦系統,必須對三方都有好處。具體的評價指標包括:準確度,覆蓋度,新穎度,驚喜度,信任度,透明度等。

有些指標可以離線計算,有些必須線上計算,有些必須問卷調查獲得。下面具體介紹三種實驗方式:

離線實驗:將歷史資料劃分為訓練集和測試集,分別用來訓練和測試模型。優點是:可以快速的得到計算結果;不會對實際使用的系統產生效能上的影響;不需要使用者參與。缺點是:無法計算與實際生產上,商業關係的指標;

使用者調查:通過離線的計算,發現系統比較好,但是不能保證線上效果也好。為了降低損失,需要在系統上線運營前,做下使用者調研。使用者的主觀上的感受,必須通過使用者調查來獲取。優點是:可以獲取使用者最直觀的感受;相對於線上測試,風險較低,出現錯誤後可以馬上彌補。缺點是:單個使用者的測試代價比較大,很難大規模進行,所以實驗結果的統計意義不足;設計雙盲實驗非常困難,而且使用者在接受測試時的行為可能與實際行為不符合。

線上實驗:最常用的線上測試方法是AB測試。將所有使用者分為幾份,每一組使用者採用不同的推薦演算法,統計不同組使用者在不同指標(比如點選率)下的表現。優點是:可以得到推薦系統在真實執行下的效果好壞。缺點是:週期長,因為必須長期的實驗才能得到可靠的結果,所以一般只測試離線測試階段效果比較好的演算法;無法保證單一變數實驗原則。因為一個大型的系統,可能都在同時進行各個方面的AB測試。

下面介紹每個具體指標:

準確度:這個指標是離線實驗最主要的評價指標。針對評分預測問題,準確度主要通過RMSE和MAE計算;針對TOPN推薦問題,準確度主要通過precision 和 recall計算。

使用者滿意度:只能通過使用者調查(調查問卷)和線上實驗(具體的實驗結果)獲得。

覆蓋率:推薦系統的初衷是消除馬太效應(強者更強,弱者更弱),但是很多研究表明目前主流的推薦演算法(比如CF)是具有馬太效應的。覆蓋率可以通過資訊熵和基尼係數來表示。

多樣性:為了滿足使用者廣泛的興趣,推薦列表需要能夠覆蓋使用者不同的興趣領域。書中也定義了具體的公式。

新穎性:新穎的推薦不應該給使用者推薦哪些他們已經看過、打過分或者瀏覽的視訊,但是使用者也有可能從其他網站接觸過這些內容,所以僅僅從推薦列表中刪除上述內容還不能完全實現新穎性。但是書中也沒有寫出具體的評價指標。

驚喜度:新穎指的是推薦沒有聽說過的與自己興趣想符合的內容,驚喜是指推薦的內容與他的歷史興趣毫無關係,但是也非常喜歡這個推薦內容。作者說目前沒有公認的指標定義方式。

信任度:對於同樣的推薦列表,以不同的方式推薦給相同的使用者,使用者的接受程度不一致。提高系統新人度的方法有:增加系統的透明度,讓使用者瞭解系統的執行機制;利用使用者的社交網路的好友資訊給使用者做推薦;

實時性:主要包括兩方面,根據使用者的行為實時地更新推薦列表;將新加入系統的商品推薦給使用者;

健壯性:防止商家作弊,通過某種手段,將自己的商品更好地被推薦。

商業目標:最本質的商業目標就是平均一個使用者給公司帶來的盈利。

一個推薦系統雖然整理效能不好,但是在某種情況下效能比較好,從不同的測評維度對系統進行測評可以為推薦演算法的融合帶來參考建議。一般評測維度分為3種:

使用者維度:主要包括使用者的人口統計資訊、活躍度、是否為新使用者等。

物品維度:包括物品的屬性資訊、流行度、平均分、是否為新加入物品等。

時間維度:包括季節、是否工作日、白天還是晚上。