? ?說到推薦,大家都不陌生,我們?nèi)コ小⑷ド虉?chǎng)會(huì)有工作人員給我推薦各種商品,去吃飯店員會(huì)推薦各種菜品,各種廣告(電視廣告、戶外廣告、網(wǎng)絡(luò)廣告等)也會(huì)為各種商品作大肆宣傳,包括我們周圍身邊的朋友在用到認(rèn)為好的產(chǎn)品的時(shí)候也會(huì)向我們推薦,總之,推薦無處不在、無時(shí)不在,它是我們生活常態(tài)的一部分,然而,這些推薦都只是某些單一產(chǎn)品的單一推薦,產(chǎn)品與產(chǎn)品之間的關(guān)聯(lián)性不強(qiáng),好些時(shí)候?qū)ξ覀儊碚f并未能激起我們很大的興趣和關(guān)注,在需要的時(shí)候?qū)ふ移饋碛植皇悄敲吹姆奖恪?/p>
? ?隨著社會(huì)的發(fā)展,商品愈加的豐富,人們的選擇愈加的困難,很多時(shí)候人們也進(jìn)入了“選擇困難癥”狀態(tài);并且隨著信息技術(shù)和互聯(lián)網(wǎng)的發(fā)展,人們逐漸從信息匱乏的時(shí)代走入了信息過載(information overload)的時(shí)代 。在這個(gè)時(shí)代,無論是信息消費(fèi)者還是信息生產(chǎn)者都遇到了很大的挑戰(zhàn):對(duì)于信息消費(fèi)者,從大量信息中找到自己感興趣的信息是一件非常困難的事情;對(duì)于信息生產(chǎn)者,讓自己生產(chǎn)的信息脫穎而出,受到廣大用戶的關(guān)注,也是一件非常困難的事情。這時(shí)候,推薦系統(tǒng)應(yīng)用而生,它是解決這一矛盾的重要工具,它的任務(wù)是聯(lián)系用戶和信息,一方面幫助用戶發(fā)現(xiàn)對(duì)自己有價(jià)值的信息,另一方面讓信息能夠展現(xiàn)在對(duì)它感興趣的用戶面前,從而實(shí)現(xiàn)信息消費(fèi)者和信息生產(chǎn)者的雙贏。
? ?如今推薦系統(tǒng)在互聯(lián)網(wǎng)的產(chǎn)品和應(yīng)用中被廣泛采用,包括大家經(jīng)常使用的相關(guān)搜索、話題推薦、電子商務(wù)的各種產(chǎn)品推薦、社交網(wǎng)絡(luò)上的交友推薦等。但是,至今還沒有一本書從理論上對(duì)它進(jìn)行系統(tǒng)地分析和論述。《推薦系統(tǒng)實(shí)踐》這本書恰恰彌補(bǔ)了這個(gè)空白。該書總結(jié)了當(dāng)今互聯(lián)網(wǎng)主要領(lǐng)域、主要公司、各種和推薦有關(guān)的產(chǎn)品和服務(wù),包括:亞馬遜的個(gè)性化產(chǎn)品推薦、Netflix的視頻和DVD推薦、Pandora的音樂推薦、Facebook的好友推薦、Google Reader的個(gè)性化閱讀等。闡述了和推薦系統(tǒng)有關(guān)的理論基礎(chǔ)和評(píng)價(jià)推薦系統(tǒng)優(yōu)劣的各種標(biāo)準(zhǔn)與方法,比如覆蓋率、滿意度、AB測(cè)試等。由于這些評(píng)估很大程度上取決于對(duì)用戶行為的分析,因此本書也介紹了用戶行為分析方法,并且給出了計(jì)算機(jī)實(shí)現(xiàn)的算法。
? ?本書一共8章,按照書的內(nèi)容我認(rèn)為可以分為三部分,第一部分(第1章)主要介紹推薦系統(tǒng)的概念,并回答什么是好的推薦系統(tǒng);第二部分(第2-6章)如何解決推薦系統(tǒng)的冷啟動(dòng)問題,并且如何從用戶行為信息數(shù)據(jù)入手利用設(shè)計(jì)算法去對(duì)用戶進(jìn)行做好的、恰當(dāng)?shù)耐扑];第三部分(第7-8章)是推薦系統(tǒng)實(shí)例和評(píng)分預(yù)測(cè)問題的補(bǔ)充。
一、推薦系統(tǒng)的概念及好的推薦系統(tǒng)標(biāo)準(zhǔn)。
? 推薦系統(tǒng)就是自動(dòng)聯(lián)系用戶和物品的一種工具,它能夠在信息過載的環(huán)境中幫助用戶發(fā)現(xiàn)令他們感興趣的信息,也能將信息推送給對(duì)它們感興趣的用戶。推薦系統(tǒng)通過發(fā)掘用戶的行為,找到用戶的個(gè)性化需求,從而將長(zhǎng)尾商品準(zhǔn)確地推薦給需要它的用戶,幫助用戶發(fā)現(xiàn)那些他們感興趣但很難發(fā)現(xiàn)的商品。
? ?什么才是好的推薦系統(tǒng)?這是推薦系統(tǒng)評(píng)測(cè)需要解決的首要問題。一個(gè)完整的推薦系統(tǒng)一般存在3個(gè)參與方:用戶、物品提供者和提供推薦系統(tǒng)的網(wǎng)站。首先,推薦系統(tǒng)需要滿足用戶的需求,給用戶推薦那些令他們感興趣的物品;其次,推薦系統(tǒng)要讓各產(chǎn)品都能夠被推薦給對(duì)其感興趣的用戶,而不是只推薦幾個(gè)熱門的產(chǎn)品;最后,好的推薦系統(tǒng)設(shè)計(jì),能夠讓推薦系統(tǒng)本身收集到高質(zhì)量的用戶反饋,不斷完善推薦的質(zhì)量,增加用戶和網(wǎng)站的交互,提高網(wǎng)站的收入。因此在評(píng)測(cè)一個(gè)推薦算法時(shí),需要同時(shí)考慮三方的利益,一個(gè)好的推薦系統(tǒng)是能夠令三方共贏的系統(tǒng)。
? ?因此,好的推薦系統(tǒng)不僅僅能夠準(zhǔn)確預(yù)測(cè)用戶的行為,而且能夠擴(kuò)展用戶的視野,幫助用戶發(fā)現(xiàn)那些他們可能會(huì)感興趣,但卻不那么容易發(fā)現(xiàn)的東西;同時(shí),推薦系統(tǒng)還要能夠幫助商家將那些被埋沒在長(zhǎng)尾中的好商品介紹給可能會(huì)對(duì)它們感興趣的用戶。
? ?推薦系統(tǒng)的計(jì)算方法有:離線試驗(yàn)、用戶調(diào)查、在線試驗(yàn);評(píng)測(cè)指標(biāo)有:用戶滿意度、預(yù)測(cè)準(zhǔn)確度(包含評(píng)分預(yù)測(cè)、TopN推薦)、覆蓋率、多樣性、新穎性、驚喜度、信任度、實(shí)時(shí)性、健壯性、商業(yè)目標(biāo)等。
二、如何解決推薦系統(tǒng)的冷啟動(dòng)問題,并且如何從用戶行為信息數(shù)據(jù)入手利用設(shè)計(jì)算法去對(duì)用戶進(jìn)行做好的、恰當(dāng)?shù)耐扑]。
? ?為了讓推薦結(jié)果符合用戶口味,我們需要深入了解用戶。如何才能了解一個(gè)人呢?《論語·公冶長(zhǎng)》中說“聽其言,觀其行”,也就是說可以通過用戶留下的文字和行為了解用戶興趣和需求。實(shí)現(xiàn)個(gè)性化推薦的最理想情況是用戶能在注冊(cè)的時(shí)候主動(dòng)告訴我們他喜歡什么,但這種方法有3個(gè)缺點(diǎn):首先,現(xiàn)在的自然語言理解技術(shù)很難理解用戶用來描述興趣的自然語言;其次,用戶的興趣是不斷變化的,但用戶不會(huì)不停地更新興趣描述;最后,很多時(shí)候用戶并不知道自己喜歡什么,或者很難用語言描述自己喜歡什么。因此,我們需要通過算法自動(dòng)發(fā)掘用戶行為數(shù)據(jù),從用戶的行為中推測(cè)出用戶的興趣,從而給用戶推薦滿足他們興趣的物品。
? ?用戶行為數(shù)據(jù)的分析是很多優(yōu)秀產(chǎn)品設(shè)計(jì)的基礎(chǔ),個(gè)性化推薦算法通過對(duì)用戶行為的深度分析,可以給用戶帶來更好的網(wǎng)站使用體驗(yàn)。然而用戶行為數(shù)據(jù)中蘊(yùn)涵著很多不是那么顯而易見的規(guī)律,而個(gè)性化推薦算法的任務(wù)就是通過計(jì)算機(jī)去發(fā)現(xiàn)這些規(guī)律,從而為產(chǎn)品的設(shè)計(jì)提供指導(dǎo),提高用戶體驗(yàn)。互聯(lián)網(wǎng)中的用戶行為有很多種,比如瀏覽網(wǎng)頁、購買商品、評(píng)論、評(píng)分等。要用一個(gè)統(tǒng)一的方式表示所有這些行為是比較困難的,本書認(rèn)為一個(gè)用戶行為主要由6部分組成,即產(chǎn)生行為的用戶和行為的對(duì)象、行為的種類、產(chǎn)生行為的上下文、行為的內(nèi)容和權(quán)重。
? ?基于用戶行為分析的推薦算法是個(gè)性化推薦系統(tǒng)的重要算法,學(xué)術(shù)界一般將這種類型的算法稱為協(xié)同過濾算法。顧名思義,協(xié)同過濾就是指用戶可以齊心協(xié)力,通過不斷地和網(wǎng)站互動(dòng),使自己的推薦列表能夠不斷過濾掉自己不感興趣的物品,從而越來越滿足自己的需求。在協(xié)同過濾算法中,最著名的、在業(yè)界得到最廣泛應(yīng)用的算法是基于鄰域的方法,而基于鄰域的方法主要包含下面兩種算法:基于用戶的協(xié)同過濾算法(UserCF),這種算法給用戶推薦和他興趣相似的其他用戶喜歡的物品;基于物品的協(xié)同過濾算法(ItemCF),這種算法給用戶推薦和他之前喜歡的物品相似的物品。
? ?基于用戶的協(xié)同過濾算法主要包括兩個(gè)步驟:1)、找到和目標(biāo)用戶興趣相似的用戶集合;2)、找到和目標(biāo)用戶興趣相似的用戶集合。基于物品的協(xié)同過濾算法也同樣的主要分為兩步:1)、計(jì)算物品之間的相似度;2)、根據(jù)物品的相似度和用戶的歷史行為給用戶生成推薦列表。UserCF給用戶推薦那些和他有共同興趣愛好的用戶喜歡的物品,而ItemCF給用戶推薦那些和他之前喜歡的物品類似的物品。從這個(gè)算法的原理可以看到,UserCF的推薦結(jié)果著重于反映和用戶興趣相似的小群體的熱點(diǎn),而ItemCF的推薦結(jié)果著重于維系用戶的歷史興趣。換句話說,UserCF的推薦更社會(huì)化,反映了用戶所在的小型興趣群體中物品的熱門程度,而ItemCF的推薦更加個(gè)性化,反映了用戶自己的興趣傳承,并且ItemCF的一個(gè)優(yōu)勢(shì)就是可以提供推薦解釋,即利用用戶歷史上喜歡的物品為現(xiàn)在的推薦結(jié)果進(jìn)行解釋。
? ?薦系統(tǒng)需要根據(jù)用戶的歷史行為和興趣預(yù)測(cè)用戶未來的行為和興趣,因此大量的用戶行為數(shù)據(jù)就成為推薦系統(tǒng)的重要組成部分和先決條件。對(duì)于很多像BAT、亞馬遜、京東、當(dāng)當(dāng)這樣的網(wǎng)站來說,這或許不是個(gè)問題,因?yàn)樗鼈兡壳耙呀?jīng)積累了大量的用戶數(shù)據(jù),但是對(duì)于很多做純粹推薦系統(tǒng)的網(wǎng)站,或者很多在開始階段就希望有個(gè)性化推薦應(yīng)用的網(wǎng)站來說,如何在沒有大量用戶數(shù)據(jù)的情況下設(shè)計(jì)個(gè)性化推薦系統(tǒng)并且讓用戶對(duì)推薦結(jié)果滿意從而愿意使用推薦系統(tǒng),就是冷啟動(dòng)的問題。
? 冷啟動(dòng)問題(cold start)主要分3類。1、用戶冷啟動(dòng),用戶冷啟動(dòng)主要解決如何給新用戶做個(gè)性化推薦的問題。當(dāng)新用戶到來時(shí),我們沒有他的行為數(shù)據(jù),所以也無法根據(jù)他的歷史行為預(yù)測(cè)其興趣,從而無法借此給他做個(gè)性化推薦。2、物品冷啟動(dòng),物品冷啟動(dòng)主要解決如何將新的物品推薦給可能對(duì)它感興趣的用戶這一問題。3、系統(tǒng)冷啟動(dòng),系統(tǒng)冷啟動(dòng)主要解決如何在一個(gè)新開發(fā)的網(wǎng)站上(還沒有用戶,也沒有用戶行為,只有一些物品的信息)設(shè)計(jì)個(gè)性化推薦系統(tǒng),從而在網(wǎng)站剛發(fā)布時(shí)就讓用戶體驗(yàn)到個(gè)性化推薦服務(wù)這一問題。對(duì)于這3種不同的冷啟動(dòng)問題,有不同的解決方案。一般來說,可以參考如下解決方案。1)、提供非個(gè)性化的推薦,非個(gè)性化推薦的最簡(jiǎn)單例子就是熱門排行榜,我們可以給用戶推薦熱門排行榜,然后等到用戶數(shù)據(jù)收集到一定的時(shí)候,再切換為個(gè)性化推薦。 2)、利用用戶注冊(cè)時(shí)提供的年齡、性別等數(shù)據(jù)做粗粒度的個(gè)性化。3)、 利用用戶的社交網(wǎng)絡(luò)賬號(hào)登錄(需要用戶授權(quán)),導(dǎo)入用戶在社交網(wǎng)站上的好友信息,然后給用戶推薦其好友喜歡的物品。4)、要求用戶在登錄時(shí)對(duì)一些物品進(jìn)行反饋,收集用戶對(duì)這些物品的興趣信息,然后給用戶推薦那些和這些物品相似的物品。5)、對(duì)于新加入的物品,可以利用內(nèi)容信息,將它們推薦給喜歡過和它們相似的物品的用戶。6)、在系統(tǒng)冷啟動(dòng)時(shí),可以引入專家的知識(shí),通過一定的高效方式迅速建立起物品的相關(guān)度表。
? ?如前面所述,本書認(rèn)為一個(gè)用戶行為主要由6部分組成,即產(chǎn)生行為的用戶和行為的對(duì)象、行為的種類、產(chǎn)生行為的上下文、行為的內(nèi)容和權(quán)重。在做推薦系統(tǒng)計(jì)算時(shí),主要是利用用戶的標(biāo)簽數(shù)據(jù)(主要是UGC標(biāo)簽)、上下文信息(時(shí)間、地點(diǎn)的上下文信息)和社交網(wǎng)絡(luò)數(shù)據(jù)(朋友圈、社交圈、興趣圈等),在書中,作者對(duì)這三者做了詳細(xì)的介紹以及基于這些數(shù)據(jù)的推薦算法,由于總體比較深入和專業(yè),算法也比較多。在此就不做詳細(xì)的介紹。
三、推薦系統(tǒng)實(shí)例和評(píng)分預(yù)測(cè)問題的補(bǔ)充。
? ?推薦系統(tǒng)實(shí)例中主要補(bǔ)充了三個(gè)架構(gòu):外圍架構(gòu)、推薦系統(tǒng)架構(gòu)、推薦引擎的架構(gòu)。
外圍架構(gòu)如下圖:
? ?從圖中可以看出,推薦系統(tǒng)要發(fā)揮強(qiáng)大的作用,除了推薦系統(tǒng)本身,主要還依賴于兩個(gè)條件——界面展示(UI)和用戶行為數(shù)據(jù)。
推薦系統(tǒng)架構(gòu)如下圖:
? ?從圖中可看出,推薦系統(tǒng)的核心任務(wù)被拆解成兩部分,一個(gè)是如何為給定用戶生成特征,另一個(gè)是如何根據(jù)特征找到物品。
推薦引擎的架構(gòu)如下圖:
? 推薦系統(tǒng)需要由多個(gè)推薦引擎組成,每個(gè)推薦引擎負(fù)責(zé)一類特征和一種任務(wù),而推薦系統(tǒng)的任務(wù)只是將推薦引擎的結(jié)果按照一定權(quán)重或者優(yōu)先級(jí)合并、排序然后返回,它使用一種或幾種用戶特征,按照一種推薦策略生成一種類型物品的推薦列表。推薦引擎的架構(gòu)中還包含了幾個(gè)模塊和算法,就不一一介紹啦。
? ?評(píng)分預(yù)測(cè)問題的補(bǔ)充:之前都是在討論TopN推薦,即給定一個(gè)用戶,如何給他生成一個(gè)長(zhǎng)度為N的推薦列表,使該推薦列表能夠盡量滿足用戶的興趣和需求。本書之所以如此重視TopN推薦,是因?yàn)樗浅=咏跐M足實(shí)際系統(tǒng)的需求,實(shí)際系統(tǒng)絕大多數(shù)情況下就是給用戶提供一個(gè)包括N個(gè)物品的個(gè)性化推薦列表。但是,很多從事推薦系統(tǒng)研究的同學(xué)最早接觸的卻是評(píng)分預(yù)測(cè)問題。
? ?評(píng)分預(yù)測(cè)問題基本都通過離線實(shí)驗(yàn)進(jìn)行研究。在給定用戶評(píng)分?jǐn)?shù)據(jù)集后,研究人員會(huì)將數(shù)據(jù)集按照一定的方式分成訓(xùn)練集和測(cè)試集,然后根據(jù)測(cè)試集建立用戶興趣模型來預(yù)測(cè)測(cè)試集中的用戶評(píng)分。評(píng)分預(yù)測(cè)算法也有多種:平均值、基于領(lǐng)域的方法、隱語義模型與矩陣分解模型、加入時(shí)間信息、模型融合等,需要在實(shí)踐中去應(yīng)用合理的模型和算法。
四、總結(jié)。
? ?本書著重介紹了推薦系統(tǒng)的各種算法設(shè)計(jì)和系統(tǒng)設(shè)計(jì)的方法,并且利用一些公開的數(shù)據(jù)集離線評(píng)測(cè)了各種算法。對(duì)于無法通過離線評(píng)測(cè)知道算法性能的情況,本書引用了很多著名的用戶調(diào)查實(shí)驗(yàn)來比較不同的算法。
? ?但是由于不同網(wǎng)站中的用戶行為有很大的差異,所以推薦系統(tǒng)很難有放之四海而皆準(zhǔn)的結(jié)論。因此本書非常鼓勵(lì)讀者在自己的數(shù)據(jù)集上重復(fù)本書的實(shí)驗(yàn),再得到適合自己具體情況的結(jié)論。
? ?由于我自身缺乏一定的技術(shù)基礎(chǔ),因此在閱讀本書并且在做概述的時(shí)候更多的是從概念性的內(nèi)容出發(fā),對(duì)算法和代碼的介紹及評(píng)價(jià)基本上沒有涉及到。總體而言本書還可以,技術(shù)性描述比較強(qiáng),就是涉及代碼的部分好多都沒了。更適合有數(shù)據(jù)挖掘基礎(chǔ)的人看,比較專業(yè),不過概念的地方也描述的蠻清楚的,沒有基礎(chǔ)的讀者(如我這樣的)也能從中窺得一斑,學(xué)到一些關(guān)于推薦系統(tǒng)的理念和方法,了解其是如何去應(yīng)用的。