推薦系統(tǒng)屬性:
系統(tǒng)角色
系統(tǒng)角色抽象來看宛琅,推薦系統(tǒng)中一般有四個重要的角色:
用戶:用戶是系統(tǒng)的使用者
物品:物品就是將要被推薦的候選對象
情景:情景是推薦時所處的環(huán)境
匹配引擎:而引擎就是用于匹配用戶和物品的核心技術(shù)烈掠。例如畸冲,亞馬遜網(wǎng)站的顧客就是用戶址晕,網(wǎng)站所銷售的商品就是物品萍悴,瀏覽的地理位置和時間就是情景舔示,而研發(fā)團隊提供的關(guān)鍵算法就是匹配引擎。
相似度
推薦里沒有用戶的主動輸入过吻,而是通過研究物品和物品之間进泼、用戶和用戶之間存在多少相似的特征,來達到建議的目的纤虽。相比較的對象都是對等的乳绕,因此業(yè)界稱之為相似度。從技術(shù)實現(xiàn)的角度來理解逼纸,相似度和相關(guān)性是互通的洋措,因此相似度同樣可以利用向量空間模型VSM、概率模型等來刻畫杰刽。
相似度傳播框架
現(xiàn)實生活中的推薦菠发,常常來源于“口口相傳”,上述的兩個假設(shè)體現(xiàn)了這點同樣適用于線上贺嫂。而且我們可以利用相似度的傳播性滓鸠,幫助用戶進一步發(fā)現(xiàn)更多潛在的興趣。例如第喳,如果物品a和b相似糜俗,b和c相似,那么a和c也可能存在一定的相似度。
推薦系統(tǒng)分類
依據(jù)的屬性來劃分:
基于內(nèi)容:
基于知識:這種方式和基于內(nèi)容的推薦比較相近,不過多了一些通過人類知識定義的邏輯規(guī)則光绕,因此需要人為地提供大量專業(yè)領(lǐng)域的知識桑寨,構(gòu)建成體系的知識庫,并和用戶產(chǎn)生交互尊惰。根據(jù)用戶交互的形式,又可以細分為基于約束的和基于實例的。兩者的形式比較類似卵凑,都是讓用戶指定需求,然后推薦系統(tǒng)給出答案旺韭。如果找不到合理的氛谜,那么用戶就需要再次修改需求。這個方式和搜索更為接近区端,需要用戶較多的精力值漫,可惜在互聯(lián)網(wǎng)時代,用戶都是偷懶的织盼,很少有人愿意這么做杨何。綜合建立知識體系和用戶參與的成本,這個方法一般僅限于學(xué)術(shù)研究沥邻。當然危虱,它也有更為精準的優(yōu)勢。
基于用戶行為:
相似度傳播 的方式來劃分:
無傳播:通常是基于內(nèi)容和知識的推薦唐全,都沒有考慮用戶對物品的訪問行為埃跷。
協(xié)同過濾(Collaborative Filtering):協(xié)同過濾是基于最直觀的“口口相傳”來傳播的蕊玷,假設(shè)我們愿意接受他人的建議,尤其是很多人都向你建議的時候弥雹。其主要思路就是利用已有用戶群過去的行為或意見垃帅,預(yù)測當前用戶最可能喜歡哪些東西。根據(jù)推薦依據(jù)和傳播的路徑剪勿,又可以進一步細分為基于用戶的過濾和基于物品的過濾贸诚。
各種分類推薦系統(tǒng)的評價標準
準確性:推薦系統(tǒng)的準確性在很大程度上依賴于系統(tǒng)中用戶數(shù)和物品數(shù)之間的比例。通常情況下厕吉,一小部分相似度高的用戶酱固,其價值遠遠高于一大部分相似度較低的近鄰。同理头朱,對于物品數(shù)量遠遠大于用戶數(shù)量的系統(tǒng)(例如內(nèi)部文獻系統(tǒng))而言运悲,采用基于用戶的協(xié)同過濾則更為精準。
高效性:雖然數(shù)據(jù)挖掘的部分是離線計算项钮,并不要求實時返回結(jié)果扇苞,但我們也不希望其消耗的時間過于離譜,更何況寄纵,目前有些應(yīng)用已經(jīng)需要實時性的挖掘結(jié)果了鳖敷。當用戶數(shù)量遠遠大于物品數(shù)量時,物品的相似度計算所消耗的資源要遠遠小于用戶的相似度計算程拭,因此基于物品的協(xié)同過濾效率更高定踱。反之,基于用戶的協(xié)同過濾會更高效恃鞋。
穩(wěn)定性:物品和用戶總是在不斷變化崖媚。變化就意味著用戶和物品之間的關(guān)系需要更新,協(xié)同過濾的結(jié)果也需要做出相應(yīng)的改變恤浪。如果系統(tǒng)中物品的集合比用戶的集合更穩(wěn)定畅哑,那么基于物品的方法會避免頻繁地數(shù)據(jù)計算和更新,因此更實用一些水由。反之荠呐,基于用戶的方法更適用于用戶集合相對穩(wěn)定的系統(tǒng)。
混合模型
混合的方式大體上可以分為微觀混合和宏觀混合砂客。
微觀混合:將不同的特征混合起來使用泥张,例如將基于內(nèi)容和基于用戶行為的相似度計算結(jié)合起來,這樣基于內(nèi)容的方式也可以加入?yún)f(xié)同過濾的傳播框架鞠值,解決其面臨的冷啟動問題媚创。或者是將用戶的社交信息加入用戶近鄰的選擇彤恶,提高協(xié)同過濾推薦的可信任度钞钙。
宏觀混合:相對于微觀混合鳄橘,宏觀的方式不關(guān)心特征的合并,而是注重將不同推薦系統(tǒng)的結(jié)果有機地結(jié)合起來芒炼。只要是能推送結(jié)果的系統(tǒng)挥唠,都可以加入進來,因此更為靈活焕议。例如,我們可以讓基于用戶弧关、基于物品和基于情景的三個系統(tǒng)同時工作盅安,然后根據(jù)合并、加權(quán)世囊、輪播等方式進行混合别瞭。
推薦系統(tǒng)架構(gòu)
用戶建模:根據(jù)用戶的人口統(tǒng)計學(xué)信息和用戶行為數(shù)據(jù),建立用戶畫像等模型株憾,刻畫其短期和中長期的興趣蝙寨。
物品建模:根據(jù)物品的領(lǐng)域?qū)傩裕约坝脩粼L問這些物品的數(shù)據(jù)嗤瞎,建立物品畫像模型墙歪,刻畫其本質(zhì)特征。
推薦算法:根據(jù)用戶和物品的建模贝奇,通過不同的推薦方式進行演算虹菲,最終找到能與用戶或物品輸入所匹配的推薦物品。
混合模塊:根據(jù)不同的混合策略掉瞳,將多種方式的推薦結(jié)果進行合并毕源。因為考慮到實時性,一般都被放入離線處理陕习。當然霎褐,如果系統(tǒng)足夠輕量級,混合邏輯并不復(fù)雜该镣,數(shù)據(jù)量也足夠小冻璃,是可以放入在線部分來處理的。
結(jié)果存儲:將推薦算法的挖掘結(jié)果保存下來损合,以便于在線的實時訪問俱饿,倒排索引同樣是不錯的選擇。當這些結(jié)果數(shù)據(jù)達到一定的規(guī)模塌忽,或者是包含了比較復(fù)雜的商業(yè)邏輯時拍埠,就可以考慮直接使用搜索引擎來協(xié)助了。在線部分涉及如下內(nèi)容土居。
數(shù)據(jù)收集:因為用戶的行為會作為很多推薦算法的數(shù)據(jù)來源枣购,因此需要通過Flume之類的框架來收集用戶訪問的日志嬉探。當然,用戶使用搜索和推薦引擎本身的數(shù)據(jù)也會被記錄棉圈,并以此來對之后的算法做進一步的優(yōu)化涩堤。
開源搜索系統(tǒng)
最近幾年開源的推薦引擎或算法項目開始逐步嶄露頭角,這里介紹一個有代表性的項目——Apache的Mahout(http://mahout.apache.org)分瘾。Mahout這個單詞本身的意思是大象的飼養(yǎng)者和驅(qū)趕者胎围。Mahout的分布式挖掘中會使用Apache Hadoop作為數(shù)據(jù)的存儲,來實現(xiàn)更高的可伸縮性和容錯性德召,而Hadoop的徽標上有一頭黃色的大象白魂,Mahout希望能讓這頭大象發(fā)揮更好的作用,這大概就是“Mahout”這個名字的由來上岗。