Taste/Thoth:Taste Architecture 概覽【轉(zhuǎn)Beyond Search】
|
Taste 有著非常清晰的程序架構(gòu)??磮D說(shuō)話,下面就是一個(gè) User-based Recommender 的例圖,說(shuō)明了各個(gè)組件之間的關(guān)系。而對(duì)于一個(gè) Item-based Recommender,除了不需要使用 PreferenceInferrer 和 Neighborhood 之外,和下圖描述的基本架構(gòu)是非常類(lèi)似的。 |

作為一個(gè)協(xié)同過(guò)濾推薦引擎,Taste 包含下列基本要素。
- 用戶(hù):即上圖中的 User,Taste 組件依據(jù)用戶(hù)的偏好信息向用戶(hù)進(jìn)行推薦。
- 推薦項(xiàng):即上圖中的 Item,每個(gè)用戶(hù)都會(huì)對(duì)多個(gè) Item 進(jìn)行偏好設(shè)定,比如打分。
- 偏好:即上圖中的 Preference,每一條偏好數(shù)據(jù)記錄的都是某個(gè)用戶(hù)對(duì)某個(gè) Item 的偏好程度。
從上面可以看出,偏好信息是推薦系統(tǒng)的基礎(chǔ),它總是以某種形式進(jìn)行存儲(chǔ),即圖中的 DataModel 和 Data Store。另外,原始的偏好信息可能并不能表示用戶(hù)確切的偏好。舉個(gè)例子,對(duì)于 5 分制的評(píng)分系統(tǒng)來(lái)說(shuō),有些人可能無(wú)論自己多么不喜歡,給的最低的評(píng)分都可能是 2 分,并不是 1 分;另外一些人則可能正相反,最喜歡的也就給 4 分。還有一種情況,對(duì)于一個(gè) Item,給它評(píng)分的用戶(hù)越少,通常那些用戶(hù)越“相似”(我們可以理解為嗜好相同);如果評(píng)價(jià)的用戶(hù)特別多,這些用戶(hù)之間的相似度反而不好判斷,對(duì)這類(lèi)偏 好信息通常可以直接忽略。為了解決諸如此類(lèi)的問(wèn)題,我們需要對(duì)那些原始的偏好數(shù)據(jù)進(jìn)行處理,使數(shù)據(jù)標(biāo)準(zhǔn)化、差異擴(kuò)大化,以求能夠較真實(shí)地反應(yīng)用戶(hù)的偏好信 息,這正是圖中 PreferenceTransform 要做的工作。
經(jīng)過(guò)以上處理,我們就得到了一個(gè) DataModel,一個(gè)已經(jīng)標(biāo)準(zhǔn)化了的用戶(hù)偏好信息。
對(duì)于 User-Based Recommender 來(lái)說(shuō),下一步,我們就是要找出與目標(biāo)用戶(hù)相似的“鄰居”(Neighborhood)了。
首先要做的是得到描述目標(biāo)用戶(hù)和其它用戶(hù)之間關(guān)系的集合(Correlation),然后從中選擇最相似的用戶(hù)。生成Correlation時(shí),會(huì)指定一 個(gè)推斷規(guī)則(PreferenceInferrer),用來(lái)描述用戶(hù)對(duì)那些自己沒(méi)有明確表明過(guò)偏好的 Item 的偏好值。在計(jì)算用戶(hù)相似度方面,Taste 提供了皮爾森相關(guān)系數(shù)(Person Correlation Coefficient)、余弦相似性(Cosine-based Similarity)相似度算法。有了最近鄰的用戶(hù)集合,就可以對(duì)目標(biāo)用戶(hù)的興趣進(jìn)行預(yù)測(cè),生成推薦結(jié)果。
上面我們結(jié)合圖描述了一個(gè)典型的 User-Based Recommender 的實(shí)現(xiàn)過(guò)程??偨Y(jié)并提取其中的重要對(duì)象,如下。
1、Recommender
Recommender 是 Taste 中的核心對(duì)象。給定一個(gè) DataModel,Recommender 就可以生成生成對(duì)應(yīng)的推薦結(jié)果。通常情況下,你只需要簡(jiǎn)單的選擇使用 GenericUserBasedRecommender 或者是 GenericItemBasedRecommender 這兩個(gè) Recommender 接口的具體實(shí)現(xiàn)即可。另外,還可以通過(guò) CachingRecommender 包裝使用他們,以提升效率。
2、DataModel
DataModel 是包裝用戶(hù)偏好信息的接口。它的具體實(shí)現(xiàn)可以從任何數(shù)據(jù)源獲取這些信息,當(dāng)然,數(shù)據(jù)庫(kù)通常是最常見(jiàn)的選擇之一。盡管很多應(yīng)用程序想編寫(xiě)一個(gè)他們自己的 DataModel,但其實(shí) Taste 已經(jīng)提供了一個(gè) MysSqlJDBCDataModel,可以經(jīng)由 JDBC 從數(shù)據(jù)庫(kù)中獲取偏好數(shù)據(jù)。另外,Taste 也提供了一個(gè)基于文件的 FileDataModel。
連同 DataModel 一起,Taste 使用 User、Item 和 Preference 這些概念來(lái)描述用戶(hù)、推薦項(xiàng)和針對(duì)推薦項(xiàng)的偏好。自定義的 DataModel 應(yīng)該實(shí)現(xiàn)這些接口以和應(yīng)用程序匹配--比如一個(gè) OnlineUser 代表網(wǎng)上商店的用戶(hù),一個(gè) BookItem 代表一本書(shū)。
3、PreferenceTransform
PreferenceTransform 以某種方式改變偏好的值,通常是將其標(biāo)準(zhǔn)化,或者將其差異擴(kuò)大化。PreferenceTransform 大多數(shù)情況下與 DataModel 一起使用。
4、UserCorrelation, ItemCorrelation
UserCorrelation 定義兩個(gè)用戶(hù)之間相似的程度。這是推薦系統(tǒng)中至關(guān)重要的一個(gè)部份,與 Neighborhood 的實(shí)現(xiàn)相關(guān)。
ItemCorrelation 也是類(lèi)似的,只不過(guò)它用來(lái)描述兩個(gè) Item 之間的相似度。
5、Neighborhood
在一個(gè) User-Based 推薦系統(tǒng)中,推薦的意思就是去尋找與給定用戶(hù)相似的“鄰居”。UserNeighborhood 描述了如何去選擇那些“鄰居”――比如,最相似的10個(gè)用戶(hù)。具體實(shí)現(xiàn)時(shí)通常需要對(duì) UserCorrelation 進(jìn)行操作。
轉(zhuǎn)載在:http://my.donews.com/clickstone/category/推薦系統(tǒng)/

浙公網(wǎng)安備 33010602011771號(hào)