隨著 Web 技術(shù)的發(fā)展,使得內(nèi)容的創(chuàng)建和分享變得越來越容易。每天都有大量的圖片、博客、視頻發(fā)布到網(wǎng)上。信息的極度爆炸使得人們找到他們需要的信息將變得越來越 難。傳統(tǒng)的搜索技術(shù)是一個(gè)相對(duì)簡(jiǎn)單的幫助人們找到信息的工具,也廣泛的被人們所使用,但搜索引擎并不能完全滿足用戶對(duì)信息發(fā)現(xiàn)的需求,原因一是用戶很難用 恰當(dāng)?shù)年P(guān)鍵詞描述自己的需求,二是基于關(guān)鍵詞的信息檢索在很多情況下是不夠的。而推薦引擎的出現(xiàn),使用戶獲取信息的方式從簡(jiǎn)單的目標(biāo)明確的數(shù)據(jù)的搜索轉(zhuǎn)換 到更高級(jí)更符合人們使用習(xí)慣的上下文信息更豐富的信息發(fā)現(xiàn)。 信息發(fā)現(xiàn)如今已經(jīng)進(jìn)入了一個(gè)數(shù)據(jù)爆炸的時(shí)代,隨著 Web 2.0 的發(fā)展, Web 已經(jīng)變成數(shù)據(jù)分享的平臺(tái),那么,如何讓人們?cè)诤A康臄?shù)據(jù)中想要找到他們需要的信息將變得越來越難。 在這樣的情形下,搜索引擎(Google,Bing,百度等等)成為大家快速找到目標(biāo)信息的最好途徑。在用戶對(duì)自己需求相對(duì)明確的時(shí)候,用搜索引擎 很方便的通過關(guān)鍵字搜索很快的找到自己需要的信息。但搜索引擎并不能完全滿足用戶對(duì)信息發(fā)現(xiàn)的需求,那是因?yàn)樵诤芏嗲闆r下,用戶其實(shí)并不明確自己的需要, 或者他們的需求很難用簡(jiǎn)單的關(guān)鍵字來表述。又或者他們需要更加符合他們個(gè)人口味和喜好的結(jié)果,因此出現(xiàn)了推薦系統(tǒng),與搜索引擎對(duì)應(yīng),大家也習(xí)慣稱它為推薦 引擎。 隨著推薦引擎的出現(xiàn),用戶獲取信息的方式從簡(jiǎn)單的目標(biāo)明確的數(shù)據(jù)的搜索轉(zhuǎn)換到更高級(jí)更符合人們使用習(xí)慣的信息發(fā)現(xiàn)。 如今,隨著推薦技術(shù)的不斷發(fā)展,推薦引擎已經(jīng)在電子商務(wù) (E-commerce,例如 Amazon,當(dāng)當(dāng)網(wǎng) ) 和一些基于 social 的社會(huì)化站點(diǎn) ( 包括音樂,電影和圖書分享,例如豆瓣,Mtime 等 ) 都取得很大的成功。這也進(jìn)一步的說明了,Web2.0 環(huán)境下,在面對(duì)海量的數(shù)據(jù),用戶需要這種更加智能的,更加了解他們需求,口味和喜好的信息發(fā)現(xiàn)機(jī)制。 推薦引擎前面介紹了推薦引擎對(duì)于現(xiàn)在的 Web2.0 站點(diǎn)的重要意義,這一章我們將講講推薦引擎到底是怎么工作的。推薦引擎利用特殊的信息過濾技術(shù),將不同的物品或內(nèi)容推薦給可能對(duì)它們感興趣的用戶。 圖 1. 推薦引擎工作原理圖 圖 1 給出了推薦引擎的工作原理圖,這里先將推薦引擎看作黑盒,它接受的輸入是推薦的數(shù)據(jù)源,一般情況下,推薦引擎所需要的數(shù)據(jù)源包括:
顯式的用戶反饋能準(zhǔn)確的反應(yīng)用戶對(duì)物品的真實(shí)喜好,但需要用戶付出額外的代價(jià),而隱式的用戶行為,通過一些分析和處理,也能反映用戶的喜好,只是數(shù) 據(jù)不是很精確,有些行為的分析存在較大的噪音。但只要選擇正確的行為特征,隱式的用戶反饋也能得到很好的效果,只是行為特征的選擇可能在不同的應(yīng)用中有很 大的不同,例如在電子商務(wù)的網(wǎng)站上,購(gòu)買行為其實(shí)就是一個(gè)能很好表現(xiàn)用戶喜好的隱式反饋。 推薦引擎的分類推薦引擎的分類可以根據(jù)很多指標(biāo),下面我們一一介紹一下: 1、推薦引擎是不是為不同的用戶推薦不同的數(shù)據(jù) 根據(jù)這個(gè)指標(biāo),推薦引擎可以分為基于大眾行為的推薦引擎和個(gè)性化推薦引擎 這是一個(gè)最基本的推薦引擎分類,其實(shí)大部分人們討論的推薦引擎都是將個(gè)性化的推薦引擎,因?yàn)閺母旧险f,只有個(gè)性化的推薦引擎才是更加智能的信息發(fā)現(xiàn)過程。
根據(jù)推薦引擎的數(shù)據(jù)源 其實(shí)這里講的是如何發(fā)現(xiàn)數(shù)據(jù)的相關(guān)性,因?yàn)榇蟛糠滞扑]引擎的工作原理還是基于物品或者用戶的相似集進(jìn)行推薦。那么參考圖 1 給出的推薦系統(tǒng)原理圖,根據(jù)不同的數(shù)據(jù)源發(fā)現(xiàn)數(shù)據(jù)相關(guān)性的方法可以分為以下幾種:
根據(jù)推薦模型的建立方式 可以想象在海量物品和用戶的系統(tǒng)中,推薦引擎的計(jì)算量是相當(dāng)大的,要實(shí)現(xiàn)實(shí)時(shí)的推薦務(wù)必需要建立一個(gè)推薦模型,關(guān)于推薦模型的建立方式可以分為以下幾種:
其實(shí)在現(xiàn)在的推薦系統(tǒng)中,很少有只使用了一個(gè)推薦策略的推薦引擎,一般都是在不同的場(chǎng)景下使用不同的推薦策略從而達(dá)到最好的推薦效果,例如 Amazon 的推薦,它將基于用戶本身歷史購(gòu)買數(shù)據(jù)的推薦,和基于用戶當(dāng)前瀏覽的物品的推薦,以及基于大眾喜好的當(dāng)下比較流行的物品都在不同的區(qū)域推薦給用戶,讓用戶 可以從全方位的推薦中找到自己真正感興趣的物品。 深入推薦機(jī)制這一章的篇幅,將詳細(xì)介紹各個(gè)推薦機(jī)制的工作原理,它們的優(yōu)缺點(diǎn)以及應(yīng)用場(chǎng)景。 基于人口統(tǒng)計(jì)學(xué)的推薦 基于人口統(tǒng)計(jì)學(xué)的推薦機(jī)制(Demographic-based Recommendation)是一種最易于實(shí)現(xiàn)的推薦方法,它只是簡(jiǎn)單的根據(jù)系統(tǒng)用戶的基本信息發(fā)現(xiàn)用戶的相關(guān)程度,然后將相似用戶喜愛的其他物品推薦給當(dāng)前用戶,圖 2 給出了這種推薦的工作原理。 圖 2. 基于人口統(tǒng)計(jì)學(xué)的推薦機(jī)制的工作原理 從圖中可以很清楚的看到,首先,系統(tǒng)對(duì)每個(gè)用戶都有一個(gè)用戶 Profile 的建模,其中包括用戶的基本信息,例如用戶的年齡,性別等等;然后,系統(tǒng)會(huì)根據(jù)用戶的 Profile 計(jì)算用戶的相似度,可以看到用戶 A 的 Profile 和用戶 C 一樣,那么系統(tǒng)會(huì)認(rèn)為用戶 A 和 C 是相似用戶,在推薦引擎中,可以稱他們是“鄰居”;最后,基于“鄰居”用戶群的喜好推薦給當(dāng)前用戶一些物品,圖中將用戶 A 喜歡的物品 A 推薦給用戶 C。 這種基于人口統(tǒng)計(jì)學(xué)的推薦機(jī)制的好處在于:
那么這個(gè)方法的缺點(diǎn)和問題是什么呢?這種基于用戶的基本信息對(duì)用戶進(jìn)行分類的方法過于粗糙,尤其是對(duì)品味要求較高的領(lǐng)域,比如圖書,電影和音樂等領(lǐng) 域,無(wú)法得到很好的推薦效果??赡茉谝恍╇娮由虅?wù)的網(wǎng)站中,這個(gè)方法可以給出一些簡(jiǎn)單的推薦。另外一個(gè)局限是,這個(gè)方法可能涉及到一些與信息發(fā)現(xiàn)問題本身 無(wú)關(guān)卻比較敏感的信息,比如用戶的年齡等,這些用戶信息不是很好獲取。 基于內(nèi)容的推薦 基于內(nèi)容的推薦是在推薦引擎出現(xiàn)之初應(yīng)用最為廣泛的推薦機(jī)制,它的核心思想是根據(jù)推薦物品或內(nèi)容的元數(shù)據(jù),發(fā)現(xiàn)物品或者內(nèi)容的相關(guān)性,然后基于用戶以往的喜好記錄,推薦給用戶相似的物品。圖 3 給出了基于內(nèi)容推薦的基本原理。 圖 3. 基于內(nèi)容推薦機(jī)制的基本原理 圖 3 中給出了基于內(nèi)容推薦的一個(gè)典型的例子,電影推薦系統(tǒng),首先我們需要對(duì)電影的元數(shù)據(jù)有一個(gè)建模,這里只簡(jiǎn)單的描述了一下電影的類型;然后通過電影的元數(shù)據(jù) 發(fā)現(xiàn)電影間的相似度,因?yàn)轭愋投际恰皭矍?,浪漫”電?A 和 C 被認(rèn)為是相似的電影(當(dāng)然,只根據(jù)類型是不夠的,要得到更好的推薦,我們還可以考慮電影的導(dǎo)演,演員等等);最后實(shí)現(xiàn)推薦,對(duì)于用戶 A,他喜歡看電影 A,那么系統(tǒng)就可以給他推薦類似的電影 C。 這種基于內(nèi)容的推薦機(jī)制的好處在于它能很好的建模用戶的口味,能提供更加精確的推薦。但它也存在以下幾個(gè)問題:
雖然這個(gè)方法有很多不足和問題,但他還是成功的應(yīng)用在一些電影,音樂,圖書的社交站點(diǎn),有些站點(diǎn)還請(qǐng)專業(yè)的人員對(duì)物品進(jìn)行基因編碼,比如潘多拉,在一份報(bào)告中說道,在潘多拉的推薦引擎中,每首歌有超過 100 個(gè)元數(shù)據(jù)特征,包括歌曲的風(fēng)格,年份,演唱者等等。 基于協(xié)同過濾的推薦 隨著 Web2.0 的發(fā)展,Web 站點(diǎn)更加提倡用戶參與和用戶貢獻(xiàn),因此基于協(xié)同過濾的推薦機(jī)制因運(yùn)而生。它的原理很簡(jiǎn)單,就是根據(jù)用戶對(duì)物品或者信息的偏好,發(fā)現(xiàn)物品或者內(nèi)容本身的相關(guān) 性,或者是發(fā)現(xiàn)用戶的相關(guān)性,然后再基于這些關(guān)聯(lián)性進(jìn)行推薦?;趨f(xié)同過濾的推薦可以分為三個(gè)子類:基于用戶的推薦(User-based Recommendation),基于項(xiàng)目的推薦(Item-based Recommendation)和基于模型的推薦(Model-based Recommendation)。下面我們一個(gè)一個(gè)詳細(xì)的介紹著三種協(xié)同過濾的推薦機(jī)制。 基于用戶的協(xié)同過濾推薦 基于用戶的協(xié)同過濾推薦的基本原理是,根據(jù)所有用戶對(duì)物品或者信息的偏好,發(fā)現(xiàn)與當(dāng)前用戶口味和偏好相似的“鄰居”用戶群,在一般的應(yīng)用中是采用計(jì)算“K- 鄰居”的算法;然后,基于這 K 個(gè)鄰居的歷史偏好信息,為當(dāng)前用戶進(jìn)行推薦。下圖 4 給出了原理圖。 圖 4. 基于用戶的協(xié)同過濾推薦機(jī)制的基本原理 上圖示意出基于用戶的協(xié)同過濾推薦機(jī)制的基本原理,假設(shè)用戶 A 喜歡物品 A,物品 C,用戶 B 喜歡物品 B,用戶 C 喜歡物品 A ,物品 C 和物品 D;從這些用戶的歷史喜好信息中,我們可以發(fā)現(xiàn)用戶 A 和用戶 C 的口味和偏好是比較類似的,同時(shí)用戶 C 還喜歡物品 D,那么我們可以推斷用戶 A 可能也喜歡物品 D,因此可以將物品 D 推薦給用戶 A。 基于用戶的協(xié)同過濾推薦機(jī)制和基于人口統(tǒng)計(jì)學(xué)的推薦機(jī)制都是計(jì)算用戶的相似度,并基于“鄰居”用戶群計(jì)算推薦,但它們所不同的是如何計(jì)算用戶的相似 度,基于人口統(tǒng)計(jì)學(xué)的機(jī)制只考慮用戶本身的特征,而基于用戶的協(xié)同過濾機(jī)制可是在用戶的歷史偏好的數(shù)據(jù)上計(jì)算用戶的相似度,它的基本假設(shè)是,喜歡類似物品 的用戶可能有相同或者相似的口味和偏好。 基于項(xiàng)目的協(xié)同過濾推薦 基于項(xiàng)目的協(xié)同過濾推薦的基本原理也是類似的,只是說它使用所有用戶對(duì)物品或者信息的偏好,發(fā)現(xiàn)物品和物品之間的相似度,然后根據(jù)用戶的歷史偏好信息,將類似的物品推薦給用戶,圖 5 很好的詮釋了它的基本原理。 假設(shè)用戶 A 喜歡物品 A 和物品 C,用戶 B 喜歡物品 A,物品 B 和物品 C,用戶 C 喜歡物品 A,從這些用戶的歷史喜好可以分析出物品 A 和物品 C 時(shí)比較類似的,喜歡物品 A 的人都喜歡物品 C,基于這個(gè)數(shù)據(jù)可以推斷用戶 C 很有可能也喜歡物品 C,所以系統(tǒng)會(huì)將物品 C 推薦給用戶 C。 與上面講的類似,基于項(xiàng)目的協(xié)同過濾推薦和基于內(nèi)容的推薦其實(shí)都是基于物品相似度預(yù)測(cè)推薦,只是相似度計(jì)算的方法不一樣,前者是從用戶歷史的偏好推斷,而后者是基于物品本身的屬性特征信息。 圖 5. 基于項(xiàng)目的協(xié)同過濾推薦機(jī)制的基本原理 同時(shí)協(xié)同過濾,在基于用戶和基于項(xiàng)目?jī)蓚€(gè)策略中應(yīng)該如何選擇呢?其實(shí)基于項(xiàng)目的協(xié)同過濾推薦機(jī)制是 Amazon 在基于用戶的機(jī)制上改良的一種策略,因?yàn)樵诖蟛糠值?Web 站點(diǎn)中,物品的個(gè)數(shù)是遠(yuǎn)遠(yuǎn)小于用戶的數(shù)量的,而且物品的個(gè)數(shù)和相似度相對(duì)比較穩(wěn)定,同時(shí)基于項(xiàng)目的機(jī)制比基于用戶的實(shí)時(shí)性更好一些。但也不是所有的場(chǎng)景都 是這樣的情況,可以設(shè)想一下在一些新聞推薦系統(tǒng)中,也許物品,也就是新聞的個(gè)數(shù)可能大于用戶的個(gè)數(shù),而且新聞的更新程度也有很快,所以它的形似度依然不穩(wěn) 定。所以,其實(shí)可以看出,推薦策略的選擇其實(shí)和具體的應(yīng)用場(chǎng)景有很大的關(guān)系。 基于模型的協(xié)同過濾推薦 基于模型的協(xié)同過濾推薦就是基于樣本的用戶喜好信息,訓(xùn)練一個(gè)推薦模型,然后根據(jù)實(shí)時(shí)的用戶喜好的信息進(jìn)行預(yù)測(cè),計(jì)算推薦。 基于協(xié)同過濾的推薦機(jī)制是現(xiàn)今應(yīng)用最為廣泛的推薦機(jī)制,它有以下幾個(gè)顯著的優(yōu)點(diǎn):
而它也存在以下幾個(gè)問題:
混合的推薦機(jī)制 在現(xiàn)行的 Web 站點(diǎn)上的推薦往往都不是單純只采用了某一種推薦的機(jī)制和策略,他們往往是將多個(gè)方法混合在一起,從而達(dá)到更好的推薦效果。關(guān)于如何組合各個(gè)推薦機(jī)制,這里講幾種比較流行的組合方法。
推薦引擎的應(yīng)用介紹完推薦引擎的基本原理,基本推薦機(jī)制,下面簡(jiǎn)要分析幾個(gè)有代表性的推薦引擎的應(yīng)用,這里選擇兩個(gè)領(lǐng)域:Amazon 作為電子商務(wù)的代表,豆瓣作為社交網(wǎng)絡(luò)的代表。 推薦在電子商務(wù)中的應(yīng)用 – Amazon Amazon 作為推薦引擎的鼻祖,它已經(jīng)將推薦的思想滲透在應(yīng)用的各個(gè)角落。Amazon 推薦的核心是通過數(shù)據(jù)挖掘算法和比較用戶的消費(fèi)偏好于其他用戶進(jìn)行對(duì)比,借以預(yù)測(cè)用戶可能感興趣的商品。對(duì)應(yīng)于上面介紹的各種推薦機(jī)制,Amazon 采用的是分區(qū)的混合的機(jī)制,并將不同的推薦結(jié)果分不同的區(qū)顯示給用戶,圖 6 和圖 7 展示了用戶在 Amazon 上能得到的推薦。 圖 6. Amazon 的推薦機(jī)制 – 首頁(yè) 圖 7. Amazon 的推薦機(jī)制 – 瀏覽物品 Amazon 利用可以記錄的所有用戶在站點(diǎn)上的行為,根據(jù)不同數(shù)據(jù)的特點(diǎn)對(duì)它們進(jìn)行處理,并分成不同區(qū)為用戶推送推薦:
值得一提的是,Amazon 在做推薦時(shí),設(shè)計(jì)和用戶體驗(yàn)也做得特別獨(dú)到: Amazon 利用有它大量歷史數(shù)據(jù)的優(yōu)勢(shì),量化推薦原因。
另外,Amazon 很多推薦是基于用戶的 profile 計(jì)算出來的,用戶的 profile 中記錄了用戶在 Amazon 上的行為,包括看了那些物品,買了那些物品,收藏夾和 wish list 里的物品等等,當(dāng)然 Amazon 里還集成了評(píng)分等其他的用戶反饋的方式,它們都是 profile 的一部分,同時(shí),Amazon 提供了讓用戶自主管理自己 profile 的功能,通過這種方式用戶可以更明確的告訴推薦引擎他的品味和意圖是什么。 推薦在社交網(wǎng)站中的應(yīng)用 – 豆瓣 豆瓣是國(guó)內(nèi)做的比較成功的社交網(wǎng)站,它以圖書,電影,音樂和同城活動(dòng)為中心,形成一個(gè)多元化的社交網(wǎng)絡(luò)平臺(tái),自然推薦的功能是必不可少的,下面我們看看豆瓣是如何推薦的。 圖 8 . 豆瓣的推薦機(jī)制 – 豆瓣電影 當(dāng)你在豆瓣電影中將一些你看過的或是感興趣的電影加入你看過和想看的列表里,并為它們做相應(yīng)的評(píng)分,這時(shí)豆瓣的推薦引擎已經(jīng)拿到你的一些偏好信息,那么它將給你展示如圖 8 的電影推薦。 圖 9 . 豆瓣的推薦機(jī)制 – 基于用戶品味的推薦 豆瓣的推薦是通過“豆瓣猜”,為了讓用戶清楚這些推薦是如何來的,豆瓣還給出了“豆瓣猜”的一個(gè)簡(jiǎn)要的介紹。 “你的個(gè)人推薦是根據(jù)你的收藏和評(píng)價(jià)自動(dòng)得出的,每個(gè)人的推薦清單都不同。你的收藏和評(píng)價(jià)越多,豆瓣給你的推薦會(huì)越準(zhǔn)確和豐富。 這一點(diǎn)讓我們可以清晰明了的知道,豆瓣必然是基于社會(huì)化的協(xié)同過濾的推薦,這樣用戶越多,用戶的反饋越多,那么推薦的效果會(huì)越來越準(zhǔn)確。 相對(duì)于 Amazon 的用戶行為模型,豆瓣電影的模型更加簡(jiǎn)單,就是“看過”和“想看”,這也讓他們的推薦更加專注于用戶的品味,畢竟買東西和看電影的動(dòng)機(jī)還是有很大不同的。 另外,豆瓣也有基于物品本身的推薦,當(dāng)你查看一些電影的詳細(xì)信息的時(shí)候,他會(huì)給你推薦出“喜歡這個(gè)電影的人也喜歡的電影”, 如圖 10,這是一個(gè)基于協(xié)同過濾的應(yīng)用。 圖 10 . 豆瓣的推薦機(jī)制 – 基于電影本身的推薦 總結(jié)在網(wǎng)絡(luò)數(shù)據(jù)爆炸的年代,如何讓用戶更快的找到想要的數(shù)據(jù),如何讓用戶發(fā)現(xiàn)自己潛在的興趣和需求,無(wú)論是對(duì)于電子商務(wù)還是社會(huì)網(wǎng)絡(luò)的應(yīng)用都是至關(guān)重要 的。推薦引擎的出現(xiàn),使得這個(gè)問題越來越被大家關(guān)注。但對(duì)大多數(shù)人來講,也許還在驚嘆它為什么總是能猜到你到底想要些什么。推薦引擎的魔力在于你不清楚在 這個(gè)推薦背后,引擎到底記錄和推理了些什么。 通過這篇綜述性的文章,你可以了解,其實(shí)推薦引擎只是默默的記錄和觀察你的一舉一動(dòng),然后再借由所有用戶產(chǎn)生的海量數(shù)據(jù)分析和發(fā)現(xiàn)其中的規(guī)律,進(jìn)而慢慢的了解你,你的需求,你的習(xí)慣,并默默的無(wú)聲息的幫助你快速的解決你的問題,找到你想要的東西。 其實(shí),回頭想想,很多時(shí)候,推薦引擎比你更了解你自己。 通過第一篇文章,相信大家對(duì)推薦引擎有一個(gè)清晰的第一印象,本系列的下一篇文章將深入介紹基于協(xié)同過濾的推薦策略。在現(xiàn)今的推薦技術(shù)和算法中,最被 大家廣泛認(rèn)可和采用的就是基于協(xié)同過濾的推薦方法。它以其方法模型簡(jiǎn)單,數(shù)據(jù)依賴性低,數(shù)據(jù)方便采集,推薦效果較優(yōu)等多個(gè)優(yōu)點(diǎn)成為大眾眼里的推薦算法 “No.1”。本文將帶你深入了解協(xié)同過濾的秘密,并給出基于 Apache Mahout 的協(xié)同過濾算法的高效實(shí)現(xiàn)。Apache Mahout 是 ASF 的一個(gè)較新的開源項(xiàng)目,它源于 Lucene,構(gòu)建在 Hadoop 之上,關(guān)注海量數(shù)據(jù)上的機(jī)器學(xué)習(xí)經(jīng)典算法的高效實(shí)現(xiàn)。 感謝大家對(duì)本系列的關(guān)注和支持。 |
|