天天看點

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

http://blog.csdn.net/pipisorry/article/details/51788955

(個性化)推薦系統建構三大方法:基于内容的推薦content-based,協同過濾collaborative filtering,隐語義模型(LFM, latent factor model)推薦。這篇部落客要講協同過濾。

協同過濾Collaborative Filtering

協同過濾:使用某人的行為behavior來預測其它人會做什麼。協同過濾就是基于鄰域的算法,分為基于使用者的協同過濾算法UserCF和基于物品的協同過濾算法ItemCF。

CF has an interesting property:feature learning can start to learn for itself what features to use. (NG)

本文主要講基于cosin相似度的非參數協同過濾算法。另一種基于低秩矩陣分解的參數協同過濾算法參考[Machine Learning - XVI. Recommender Systems 推薦系統(Week 9) ]。

皮皮blog

基于使用者的協同過濾算法UserCF

User-user collaborative filtering主要思想

對于一個使用者x,首先找到與其相似的一個使用者集,這個相似是通過它們的評分rating來判定的,likes和dislikes越相似,他們就越相似。然後推薦這些相似使用者集喜歡的items并且預測x評分最高的items給使用者x。

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

UU: 興趣相投的使用者可能帶來新穎的東西。

UserCF的兩個假設

Assumption: Our past agreement predicts our future agreement

Base Assumption #1: 個人品味穩定或者和品味相同的人同步遷移。Our tastes are either individually stable or move in sync with each other.

Base Assumption #2: Our system is scoped within a domain of agreement(e.g Politics, humor, technology). UserCF推薦系統中的item要是同一個領域中,不然雖然在某個領域相似,但是也不能推薦另一個使用者在另一個不同的領域喜歡的東西?

UserCF要解決的問題

已知使用者評分矩陣Matrix R(一般都是非常稀疏的),元素R_{ui}: user u 在 item I上的評分rating。

問題:推斷矩陣中空格empty cells處的值。

非個性化方法的解決思路

1 直接使用對item i評分過的所有使用者的平均評分作為user a對item i的評分

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

2 考慮到給分偏頗,計算評分均值時都減去每個單獨使用者的評分均值。

給分者的偏頗問題:tough raters:給分相對較小不慷慨。easy raters:給分總是比較高,慷慨。即不同使用者的給分程度是不一樣的,如有的使用者很mean,給分都很低,有的很generous,給分都很高,是以所有使用者減去其給分的均值比較好。

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

Note:

1 這個評分可能超出評分區間rating scale,但是我們是要做推薦,隻要計算最大topk個item推薦出去就可以了,超出範圍沒關系。

2 做推薦時,user a對item i的評分pai可以不加上bar(ra),加上隻是在後面的評估模型中有用。

個性化推薦的解決思路

改進上面的非個性化思路,計算均分時隻考慮與目前user a相似的使用者對item i的評分,這樣對item i的評分都有一個權重(即user u和a的相似度)。

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

Note: 删除非一緻值negative agreement values的鄰居,即如果w_{a,u}是負值,則去掉(或者等價設定為0)。

neighborhoods的選擇:使用者相似度量方法

使用者-電影矩陣

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

Note: 從各自的均值分析,A喜歡TW讨厭SW1,而C喜歡SW1讨厭TW。

Jaccard Similarity

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

Jaccard相似度沒有考慮評分,導緻相似度計算錯誤。

Spearman rank correlation

在這裡表現并不佳。

Cosine Similarity

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

但是由于将缺失值設為0(從上節可以看出評分為0(最小的評分值)實際上是評分為負),也沒有揭示出A,B相似度遠大于A,C相似度的直覺。

Centered Cosine(Pearson Correlation) 1

需要歸一化減去每個user對應的所有評分的均值,考慮所有的items。(這裡就相當于用每行user的均值去填充空值,這樣空值就不會影響兩個向量應有的點積)

Note: 這裡是對每個使用者的所有打分歸一化,不是對每個item的打分歸一化(如果有個使用者沒有打分,也就是cold start,這時可以使用所有item的均值作為其打分,其實就是item列的歸一化了,這個和下面的改進方法使用baseline合成方法是一個道理,注意區分NG course中協同過濾)!!!

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

注意現在行和都為0了,也就是使用者評分均值為0,>0表示喜歡,<0表示不喜歡。缺失值當然也就設定為0,表示既不like也不dislike。

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

皮爾遜相關系數将缺失值設定為均值,符合沒打分的要求;同時也解決了給分者的偏頗問題。tough raters:給分相對較小的,不慷慨的。easy raters:給分總是比較高的,慷慨的。

Pearson Correlation Coefficient 2(lz不建議如此設計,一般也不會隻考慮共同原始打分的)

這裡歸一化時user減去的是和目前uesr a打過分的分數均值,計算相似度時卻隻考慮in common的items(lz覺得這個不合理,畢竟和别人對比應該拿自己和别人相似和不相似處的一起比,而且這樣做還可能導緻資料更加稀疏)。

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

Note: 公式中 \bar{r}_u表示使用者u對u和v共同打分過的items的打分均值average value over the ratings of u on the items both u and a have rated,m是user a和user u共同打分過的items數目。

[距離和相似性度量方法]

U-U CF算法

For a user a

    使用Pearson Correlation Coefficient計算與其它所有使用者的相似度,得到最相近的鄰居。Compute its similarity values to all the other users, Identify its nearest neighbors

    給定a的所有鄰居,預測使用者a對item i的打分 With the nearest neighbors, for each item i

        Predict r_{ai}

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

Note: 對某個使用者a推薦一些items來說(隻需排名而不用計算具體打分分數),\bar{r_a}和第二項分母是可以省略的。

UserCF存在的問題issues

理論問題Low coverage

    對于一個新使用者,幾乎沒有評分has only few ratings,這樣就找不到鄰居使用者。

    對于一個item,所有最近的鄰居都在其上沒有多少ratings。

UserCF實作問題Implementation Issues

Given m users and n items

    Computation can be a bottleneck

        Correlation between two users is O(n)

        All correlations for a user is O(mn)

        All pairwise correlations is O(m^2n)

        Recommendations at least O(mn)

    Lots of ways to make more practical

        More persistent neighborhoods

        Cached or incremental correlations

UserCF算法的改進 User-User Variations and Tuning

改進方法:Similarities; Significance weighting; Variance weighting; Selecting neighborhoods; Normalizing ratings.

1 Similarities

相似度計算最好使用Pearson Correlation Coefficient,或者Spearman ranking correlation。

2 Significance weighting

考慮共同打分items的數目,如乘上min(n,50)/50,其中n是共同打分的數目,50是cutoff number。表示的是共同打分多的兩個使用者相似的可能性更高。

3 Variance weighting(然并卵)

考慮每個item的rating variance。原因是,對某個item如果其評分波動大,也就是不同人有不同意見,這樣item對應的評分對于比較兩個使用者的差異更重要(如一個大家都喜歡的評分都高的Titanic相對于一部評分波動大的恐怖片的重要性可能小些,因為喜歡恐怖片的使用者和不喜歡恐怖片的使用者其打分肯定相差大)。

Variance weighting

原始的Z-score based

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

加入variance weighted的改進

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比
推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

然而實驗表明,這個在UserCF中并沒有什麼卵用。

4 Normalizing ratings

歸一化的原因

即給分者的偏頗問題:Users rate differently, Some rate high, others low.

Averaging ignores these differences, Normalization compensates for them.

4.1 Rating Normalization: Mean-centering

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

如上所述可能超出範圍,但是不影響。

4.2 Rating Normalization: z-score normalization

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

實際上這樣對資料進行轉換之後,就不用Pearson Correlation Coefficient來計算相似度了,這時的cosine相似度就和Pearson Correlation Coefficient一樣的了。lz建議直接對資料進行這種變換,後面就不用考慮複雜了。

5 Selecting neighborhoods

Threshold similarity:設定一個門檻值,相似度大于這個門檻值就作為nerghborhoods

Top-N neighbors by similarity: 一般Top 30

Combined:這個應該更好

選擇How Many Neighbors?的問題

In theory, the more the better

    If we have a good similarity measure

In practice, noise from dissimilar neighbors decreases usefulness

Between 25 and 100 is often used

Fewer neighbors → lower coverage

    Use the same group of neighbors for different items

    Give up personalized recommendation if the neighbors do not have enough ratings on the target item

評分預測

疊代求出與x最相似的k個使用者,預測x對 這k個使用者也評分過的items i 的評分

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

[1999_SIGIR An Algorithmic Framework for Performing Collaborative Filtering.pdf]

皮皮blog

基于物品的協同過濾算法ItemCF

ItemCF的Motivation和Idea

User-User CF的問題

稀疏問題Issues of Sparsity

    Amazon: millions of items, each user rates hundreds of items

    With large item sets, small numbers of ratings, too often there are points where no recommendation can be made

    解決方案包括:item-item, dimensionality reduction

計算性能Computational performance

    With millions of users (or more), computing all-pairs correlations is expensive

    Even incremental approaches were expensive

    使用者屬性user profiles可能變化很快– needed to compute in real time to make users happy

The Item-Item Insight

Item-Item相似度相對更穩定fairly stable:

    依賴于使用者數比item數更多。Average item has many more ratings than an average user

    Intuitively, items don’t generally change rapidly – at least not in ratings space (special case for time-bound items)

Item similarity is a route to computing a prediction of a user’s item preference

基于物品的協同過濾算法Item-item collaborative filtering(簡稱ItemCF)給使用者推薦那些和他們之前喜歡的物品相似的物品。

比如,該算法會因為你購買過《資料挖掘導論》而給你推薦《機器學習》。不過,ItemCF算法并不利用物品的内容屬性計算物品之間的相似度,它主要通過分析使用者的行為記錄計算物品之間的相似度。基于物品的協同過濾算法可以利用使用者的曆史行為給推薦結果提供推薦解釋,比如給使用者推薦《天龍八部》的解釋可以是因為使用者之前喜歡《射雕英雄傳》。

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

ItemCF的假設和限制Core Assumptions/Limitations

Item-item關系

    使用者品味遵從大多數人的品味。(否則如果你的品味太奇特,隻有你一個人喜歡這個item,這樣就沒法通過其它使用者行為計算這個item與其它item的相似性)

主要缺陷limitation/complaint: 低新穎性serendipity

    對比UU CF, UU算法中興趣相投的使用者可能帶來新穎的東西,II算法更能選出特别相似的items,更個性化。

Item-Item優點

表現很好works quite well

    Good MAE performance on prediction; good rank performance on top-N

高效的實作Efficient implementation

    至少在user的數目遠遠>item數目時。

    pre-computability:可以提前計算出item之間的相似度儲存着(item間的相似性沒有user那麼容易變化)。

Item-item is efficient and straightforward. A few parameters need tuning for specific data, domain.

複雜度Complexity

Pre-compute similarities for all pairs of items

    Item stability makes similarity pre-computation feasible

Naïvely: O(|I|)²

    If symmetric: only need to compute one direction

[Hui Xiong, Wenjun Zhou, Mark Brodie, and Sheng Ma (2008). TOP-K Φ Correlation Computation. INFORMS Journal on Computing (JOC). Volume 20, Number 4, pp. 539-552.]

ItemCF算法

提前計算Pre-compute所有物品對的相似度

查找與使用者likes Or has purchased Or has in their basket的物品相似的items

For each item to score

    Find the similar items the user has rated

    Compute the weighted average of user’s ratings

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

即Two step process:

   計算items之間的相似度(3種方法,同userCF)

        Correlation between rating vectors

            co-rated cases only (only useful for multi-level ratings)

        Cosine of item rating vectors

            can be used with multi-level or unary ratings

        Adjusted cosine (normalize each user’s ratings)

            to adjust for differences in rating scales

預測user-item的打分

    Weighted sum of rated “item-neighbors”

簡單來說,就是預先計算好items之間的相似度,通過user u評分過的items和某個要評分的item i的相似度權重計算預測的評分。

物品相似度度量

For two item rating vectors

    Centered Cosine similarity

For two unary vectors (buy or not, click or not)

    Jaccard index

鄰居選擇政策

鄰居的選擇

預測user u對item i的打分:

For a user u

    R_u: the set of items user u has rated

For item i

    Neighbor_i: the set of items which are in the top k similar item set to item i

Item j is in the intersection of R_u and Neighbor_i

如果item i的鄰居和user u打分過的items越相似,user u對item i的打分就會更高。但是如果item i的鄰居和user u打分過的所有items幾乎沒有重疊,那預測會相當差,就沒必要推薦了,放棄。The intersection of R_u and Neighbor_i too small: give up prediction.

鄰居數目的選擇

    k too small → inaccurate scores

    k too large → too much noise (low-similarity items)

    k = 20 often works well

ItemCF調參Tuning the model

通過cross-validation調參:相似性度量函數Similarity function (normalization or not); 鄰居大小Neighborhood size k.

Item-Item CF示例

示例1:估計estimate使用者5對電影1的打分(相似性函數使用pearson相關系數;鄰居大小設為2)。

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比
推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

是以預測的打分r_51 = (0.41*2 + 0.59*3)/(0.41 + 0.59) = 2.6

示例2:

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

皮皮blog

協同過濾的複雜度分析和改進

協同過濾複雜度分析

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

pre-compute的複雜度是計算item兩兩之間的複雜度的時間|U|,再乘以計算每個user進行推薦的使用者數。

pre-compute花費時間仍舊相當高,是以就有了下面的改進政策。

改進政策1

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

改進政策2:混合方法Hybrid Methods

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

1 first rater問題解決:處理新物品問題,使用物品的profiles。

2 cold start問題解決:處理新人物問題時,使用人口統計學知識建立人物profiles。

3 使用一個baseline算法,加上協同過濾就可以了。

Baseline與協同過濾的結合算法

整體基線估計Global Baseline Estimate

user-item矩陣稀疏性帶來的一個問題

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

使用baseline方法估計joe對電影sixth sense的評分示例

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

Mean是所有user對所有item評分的均值。3.7 is the average rating across all movies and all users.

可以看出Joe相對來說是一個tough rater。

注意這裡并沒有使用joe已經評分過的電影的任何資訊。

結合算法

實際上就是這兩個獨立分類器的線性組合

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

具體結合算法流程

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

Note: 其實這裡就是将減去的使用者均值μ+bx替換成了更好的baseline bxi。

其它改進

[基于baseline和stochastic gradient descent的個性化推薦系統]

[基于baseline、svd和stochastic gradient descent的個性化推薦系統]

[阿裡雲 大資料 推薦系統]

[Item2Vec:協同過濾的神經項嵌入(Item2Vec: Neural Item Embedding for Collaborative Filtering)]

UserCF算法的改進 User-User Variations and Tuning

參考前面UserCF算法的改進 User-User Variations and Tuning部分

ItemCF算法的其它改進和拓展

UserCF的改進也可以應用到ItemCF中來,不過其中的significant weight可能沒用,因為item對應的數目一般較多

variance weight:某個user的variance很小,打分基本不變,對結果貢獻可能小 normalization:沒必要了? unary data才有必要(如下)。

1 懲罰流行度,提高覆寫率和新穎度

原始ItemCF算法的覆寫率和新穎度都不高,這是由于哈利波特效應:(假如是使用類似jaccard公式計算unary items相似性,如果使用centered cosine應該沒有這個問題了)

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比
推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

上面的問題換句話說就是,兩個不同領域的最熱門物品之間往往具有比較高的相似度(因為使用者都買了,但是實際它們沒有什麼相關性)。這個時候,僅僅靠使用者行為資料是不能解決這個問題的,因為使用者的行為表示這種物品之間應該相似度很高。此時,我們隻能依靠引入物品的内容資料解決這個問題,比如對不同領域的物品降低權重等。這些就不是協同過濾讨論的範疇了。

2  Item-item on unary data

ItemCF在unary data (implicit feedback)同樣表現不錯: clicks, plays, purchases

資料表示

Need some matrix to represent data

    Logical (1/0) user-item ‘purchase’ matrix

        Not ‘purchase’: 0

    Purchase count matrix

        Log function on counts

Normalize user vectors to unit vectors

    Intuition: users who like many items provide less information about any particular pair. 這樣打分太多的使用者對應的items的打分都會除以一個大數而變小。

Similarities and Aggregating Scores

Cosine similarity

Aggregating scores

    For count matrix: weighted average(count ItemCF算法的評分預測)

    For binary matrix: sum of neighbor similarities(binary ItemCF算法的評分預測)

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

3  Incorporating user importance: User Trust

Goal: incorporate user trustworthiness into item relatedness computation

    User's global reputation, not per-user trust

Solution

    weight users by trust before computing item similarities. 也就是在預先計算items之間的相似度時,對應的打分乘上使用者的trust,代表這個打分的重要性。

High-trust users have more impact

[Massa and Avesani. 2004. ‘Trust-Aware Collaborative Filtering for Recommender Systems’. ]

ItemCF參考文獻:

[Mukund Deshpande, George Karypis:Item-based top-N recommendation algorithms. ACM Trans. Inf. Syst. 22(1): 143-177 (2004)]

[Hui Xiong, Wenjun Zhou, Mark Brodie, and Sheng Ma (2008). TOP-K Φ Correlation Computation. INFORMS Journal on Computing (JOC). Volume 20, Number 4, pp. 539-552.]

協同過濾的冷啟動問題

冷啟動問題的分類:1. 使用者冷啟動(新使用者來了);2. 物品冷啟動(新物品來了);3. 系統冷啟動(整個推薦系統都是新的,也可以認為,它和“使用者冷啟動”的差別是,所有使用者對系統冷啟動來講都是新使用者,都面臨冷啟動問題)

解決方法:

1 使用者冷啟動問題解決

給使用者推薦熱門排行;進一步利用使用者的注冊資訊,如果知道使用者的分類(如:男或者女使用者),或者能夠通過一些資訊(如:使用者的注冊資訊)來獲得使用者的分類,在這個分類中,根據已有的使用者統計這個分類下的排行,再把這個排行結果推薦給新使用者。如果使用者的注冊資訊不多,且使用者填寫的比較全面,則這些資訊可以形成一個決策樹的組織形式,新使用者總會落到樹的一個葉子節點(分類)中,推薦該節點下的熱門排行就行了。

那麼在子類中依據什麼對物品進行排序呢?這就要計算物品與子類中使用者的關聯程度,或者說這類使用者對物品的喜好程度。則形式化地,定義N(i)為喜歡物品i的使用者群體,定義U(f)定義為具有某個特征f的使用者群體(例如:為男性使用者),定義特征f與物品i的關聯程度為:p(f, i) = | N(i) join U(f) | / ( | N(i) | + alpha),參數alpha作用是解決資料稀疏問題。p表示機率,模計算表示集合的元素數量。

1. 引導使用者把自己的一些屬性表達出來

比如: 回答一系列問題, 選擇喜歡的item, 添加屬性标簽, 寫Bio等等。這類做法會增加新使用者使用産品的成本, 太複雜的産品還可能吓跑新使用者, 一般這類做法能誘導的使用者資料都比較有限.。

2. 利用現有的開放資料平台

比如: facebook, twitter, google或者新浪微網誌,msn這些平台,通過使用者授權的曆史資料,來識别一些使用者的屬性.。

3. 曲線救國

做一款讓使用者更願意或者更容易表現個人偏好的産品, 先讓使用者玩一段時間. 再引導使用者進入其他産品。

4. 利用使用者的手機等興趣偏好進行冷啟動。Android手機開放度較高,是以對于各大廠商來說多了很多了解使用者的機會,就是使用者安裝了其他什麼應用。舉個例子,當一個使用者安裝了美麗說,蘑菇街,辣媽幫,大姨媽等應用,是否就是基本判定該手機使用者是個女性,且更加可以細分的知道是在備孕還是少女,而安裝了rosi寫真,1024用戶端帶有屌絲氣質的應用則可以鎖定使用者是個屌絲,此時對于應用方來說,是一個非常珍貴的資源。比如一個新聞應用如今日頭條,拿到了這些使用者安裝應用的資料,使用者首次安裝就可以獲得相對精準的推薦!目前讀取使用者安裝的應用不僅是APP應用商店的标配。另外如豌豆莢鎖屏,360衛士app更是做了檢測使用者每天開啟應用的頻率等等,這種相比隻了解使用者安裝什麼應用,對使用者的近期行為畫像會更為精準。

2 物品冷啟動問題解決

UserCF對物品冷啟動問題并不敏感,而temCF中,物品冷啟動就是比較嚴重的問題。

解決方法是通過物品的内容來計算物品之間的相似度,并作為ItemCF的補充。物品之間的相似度可以通過餘弦距離來計算。但是當文本很短,關鍵詞很少的時候,餘弦距離就很難計算出準确的相似度。作者推薦用topic model來處理,流行的有LDA模型。LDA描述了“文檔--主題--詞語”之間的機率關系。在計算物品相似度的時候,可以将物品(文檔)通過LDA計算物品在話題上的分布,再利用話題分布的相似度來計算物品之間的相似度。話題分布相似度可以利用KL距離來計算,距離越大相似度越低——其時相似度數值并不重要,能比較就行。

3 系統冷啟動問題解決

讓使用者回答一個問題清單,奧妙在于這個清單是随着使用者的回答而改變問題的——系統計算,每次給使用者提出最具區分力的物品,問使用者是否感興趣。

那麼對于目前使用者來講,什麼是“最具區分力的”物品?Nadav Golbandi是這樣想的:首先,對于一群使用者和一些物品,如果使用者對這些物品的打分的方差很大,說明這些使用者的興趣不一緻;其次,對于某一個物品,使用者的反應是,喜歡、不喜歡、無所謂(沒有打分),這三種反應可以将使用者分為三個群體;最後,要找的物品i滿足如下條件,即物品i對将使用者群體分為三類,這三類使用者的方差都很大,即使用者興趣都不很一緻,則物品i說是對這群使用者是有區分力的。

發揮專家的作用

即利用專家來對資料進行标注。

同時解決1,2

參考前面的改進政策2:混合方法Hybrid Methods

[項亮《推薦系統實踐》_第三章推薦系統冷啟動問題 ]

[【學習筆記】讀項亮的《推薦系統實踐》_第三章推薦系統冷啟動問題 ]

[知乎:有哪些解決推薦系統中冷啟動的思路和方法?]

皮皮blog

UserCF和ItemCF兩種算法對比

UU CF: Getting information from the subset of people who most share your tastes

II CF: To getting information from potentially everybody in the community, but filtered so that it's the information that's relevant to the items that you have in common with them

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

UserCF的推薦結果着重于反映和使用者興趣相似的小群體的熱點,而ItemCF的推薦結果着重于維系使用者的曆史興趣。換句話說,UserCF的推薦更社會化,反映了使用者所在的小型興趣群體中物品的熱門程度,而ItemCF的推薦更加個性化,反映了使用者自己的興趣傳承。

從技術上考慮,UserCF需要維護一個使用者相似度的矩陣,而ItemCF需要維護一個物品相似度矩陣。從存儲的角度說,如果使用者很多,那麼維護使用者興趣相似度矩陣需要很大的空間,同理,如果物品很多,那麼維護物品相似度矩陣代價較大。

協同過濾優缺點pros&cons

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

Note: 最後一個缺點popularity bias可以通過加大熱門item的懲罰來解決。

UserCF和ItemCF優缺點的對比

UserCF ItemCF
性能 适用于使用者較少的場合,如果使用者過多,計算使用者相似度矩陣的代價交大 适用于物品數明顯小于使用者數的場合,如果物品很多,計算物品相似度矩陣的代價交大
領域 實效性要求高,使用者個性化興趣要求不高 長尾物品豐富,使用者個性化需求強烈
實時性 使用者有新行為,不一定需要推薦結果立即變化 使用者有新行為,一定會導緻推薦結果的實時變化
冷啟動

在新使用者對少的物品産生行為後,不能立即對他進行個性化推薦,因為使用者相似度是離線計算的;

新物品上線後一段時間,一旦有使用者對物品産生行為,就可以将新物品推薦給其他使用者

新使用者隻要對一個物品産生行為,就能推薦相關物品給他,但無法在不離線更新物品相似度表的情況下将新物品推薦給使用者

(但是新的item到來也同樣是冷啟動問題)

推薦理由 很難提供令使用者信服的推薦解釋 可以根據使用者曆史行為歸納推薦理由

Note: lz感覺某寶可能就是itemcf+item profile,因為買羽毛球拍後總是推薦相似的羽毛球拍,新買東西後就立刻變化成新的相似商品。

這些優缺點很多是可以解決的,解決方案參考如上所述的改進。

UserCF和ItemCF的适用場景

UserCF更适合用于個性化新聞推薦:個性化新聞推薦更加強調抓住新聞熱點,熱門程度和時效性是個性化新聞推薦的重點,而個性化相對于這兩點略顯次要。是以,UserCF可以給使用者推薦和他有相似愛好的一群其他使用者今天都在看的新聞,這樣在抓住熱點和時效性的同時,保證了一定程度的個性化。UserCF适合用于新聞推薦的另一個原因是從技術角度考量的。因為作為一種物品,新聞的更新非常快,每時每刻都有新内容出現,而ItemCF需要維護一張物品相關度的表,如果物品更新很快,那麼這張表也需要很快更新,這在技術上很難實作。絕大多數物品相關度表都隻能做到一天一次更新,這在新聞領域是不可以接受的。而UserCF隻需要使用者相似性表,雖然UserCF對于新使用者也需要更新相似度表,但在新聞網站中,物品的更新速度遠遠快于新使用者的加入速度,而且對于新使用者,完全可以給他推薦最熱門的新聞,是以UserCF顯然是利大于弊。

ItemCF在圖書、電子商務和電影個性化推薦中的優勢:在圖書、電子商務和電影網站,比如亞馬遜、豆瓣、Netflix中,ItemCF則能極大地發揮優勢。首先,在這些網站中,使用者的興趣是比較固定和持久的。一個技術人員可能都是在購買技術方面的書,而且他們對書的熱門程度并不是那麼敏感,事實上越是資深的技術人員,他們看的書就越可能不熱門。此外,這些系統中的使用者大都不太需要流行度來輔助他們判斷一個物品的好壞,而是可以通過自己熟悉領域的知識自己判斷物品的品質。是以,這些網站中個性化推薦的任務是幫助使用者發現和他研究領域相關的物品。是以,ItemCF算法成為了這些網站的首選算法。此外,這些網站的物品更新速度不會特别快,一天一次更新物品相似度矩陣對它們來說不會造成太大的損失,是可以接受的。

在實際的網際網路中,使用者數目往往非常龐大,而在圖書、電子商務網站中,物品的數目則是比較少的(lz表示天貓宣稱商品數加起來有10億)。此外,物品的相似度相對于使用者的興趣一般比較穩定,是以使用ItemCF是比較好的選擇。當然,新聞網站是個例外,在那兒,物品的相似度變化很快,物品數目龐大,相反使用者興趣則相對固定(都是喜歡看熱門的)。

UserCF和ItemCF離線實驗性能對比及分析

推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比
推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比
推薦系統:協同過濾collaborative filtering基于使用者的協同過濾算法UserCF基于物品的協同過濾算法ItemCF協同過濾的複雜度分析和改進UserCF和ItemCF兩種算法對比

要指出的是,離線實驗的性能在選擇推薦算法時并不起決定作用。首先應該滿足産品的需求,比如如果需要提供推薦解釋,那麼可能得選擇ItemCF算法。其次,需要看實作代價,比如若使用者太多,很難計算使用者相似度矩陣,這個時候可能不得不抛棄UserCF算法。最後,離線名額和點選率等線上名額不一定成正比。而且,這裡對比的是最原始的UserCF和ItemCF算法,這兩種算法都可以進行各種各樣的改進。一般來說,這兩種算法經過優化後,最終得到的離線性能是近似的。

皮皮blog

from: http://blog.csdn.net/pipisorry/article/details/51788955

ref: 海量資料挖掘Mining Massive Datasets(MMDs) -Jure Leskovec courses 推薦系統Recommendation System*

ICT Luoping's recsys lessons, summer 2016*

《推薦系統實踐》-項亮

繼續閱讀