亞馬遜推薦演算法簡介

2021-07-11 10:43:55 字數 3336 閱讀 8086

眾所周知,現在的購物**通常採用推薦演算法來幫助乙個使用者找到他需要的商品。該推薦演算法的輸入是一組與他的興趣有關的內容(並且現在沒有辦法能精確地對使用者興趣建模,只能靠利用跟興趣相關的資料),輸出是一組他很可能想要購買的商品列表。

電子商務領域的推薦演算法有很多具有挑戰性問題需要解決,例如怎樣處理海量的使用者資訊和商品資料、如何保證實時性並提高推薦的精準性,以及現在很多碩士**解決了很長時間之後還在前赴後繼解決的冷啟動(cold start)問題和資料稀疏性(data sparsity)問題等。目前,傳統的推薦演算法分為以下三類:

協同過濾(collaborative filtering)

聚類模型(cluster model)

內容搜尋(content-based searching)

協同過濾的核心思想是相似的使用者會購買相似的商品,因此,根據其他使用者的購買資訊來推薦商品給當前使用者(使用者a)。這些「其他使用者」,在他們自己並不知情的情況下,被推薦演算法塑造成當前使用者的「導購員」。為了給當前使用者a推薦他想要的東西,必須找出與使用者a相似的那些使用者(b、c、d…),利用使用者b、c、d…的資訊給a產生推薦資訊。因此,計算使用者間的相似度的方法非常重要。

電子商務**儲存了每個使用者購買過的商品,因此他們可以利用這種資訊提出一種計算使用者相似度的方法,即把**所有商品作為向量的乙個維度,如果乙個使用者買了一件商品n件,則這個維度上的值就是n,例如。

使用者商品1

商品 2

…商品n

使用者a40…

2 a⃗ 

=(4,

0,..

.,2)

假設現在有使用者a和b,根據他們的購買資訊可以計算a與b的相似度:

similarity(a

⃗ ,b⃗ 

)=cos(a⃗ 

,b⃗ )

=a⃗ ⋅

b⃗ ∥a

⃗ ∥∗∥

b⃗ ∥

有了使用者間的相似度之後,協同過濾演算法就可以按以下流程框架來產生推薦:

1、根據使用者相似度,找出一組與當前使用者最相似的使用者集合

s 。

2、得到集合

s中的使用者所購買過的所有商品的集合

i 。

3、將當前使用者購買過的商品集合記為 ia

,則商品集合 r=

i−ia

為推薦結果。

4、對

r 中的商品按某種策略排序,按照該順序給使用者產生推薦。

上面的流程是乙個總的框架,每個具體步驟可以根據實際需要調整。例如,步驟4中的排序策略,可以自由設定。

協同過濾的特點:

1、用乙個向量表示使用者,商品數越多向量維度越高,計算量越大。

2、大多數使用者所購買的商品種類數相對於**所有商品總數其實是很小的,因而使用者向量會是乙個稀疏向量,浪費計算資源。

總之,這種方法缺點就是計算複雜度太高,為 o(mn) ,m 代表使用者數目,n代表商品數目。它不能用於大型資料集。應對策略:分割槽、取樣、降維(例如聚類,pca方法)。

1、使用者數降維:去掉某些使用者、取樣

2、商品數降維:去掉冷門商品或熱門商品

以上這些應對策略可以降低計算複雜度,但是同時推薦的準確性也降低了。

這種方法也是基於「相似使用者會購買相似商品」思想,且需要計算使用者間的相似度。它與協同過濾的不同在於尋找相似使用者的方法上,剩餘的步驟與協同過濾完全一致。

首先,利用使用者相似度和無監督機器學習方法即聚類演算法對所有使用者聚類。將使用者表示為向量,聚類演算法可以將互相相似的使用者歸為一組,從而將使用者劃分為n個群組(n是聚類演算法根據使用者資料自動得到的)。在聚類完成後,在所得到的群組中選擇乙個與當前使用者最相似的群組,完成尋找與當前使用者相似使用者集合的任務(協同過濾中第1步)。這種將當前使用者a歸為哪乙個群組的問題,可以看做乙個分類問題。這個問題可以採用多種方法解決,例如用群組中所有使用者向量的平均值代表該群組,從而再計算與使用者a的相似度。s¯

=1n⋅

∑u⃗ s

max←

maxs

(similarity(s

¯,a⃗ 

))缺點:

1) 該方法的缺點與協同過濾中降低計算複雜度的方法類似。當聚類所得到的群組粒度較大時,推薦結果的準確率很低;但是若將聚類群組的粒度調小後,計算量又會變得很高,並不比協同過濾好多少。

2) 聚類問題是乙個 np難問題,因而不能計算得到其最優解,在實際中往往採用貪心法,得到近似最優解,降低了給乙個使用者產生精準推薦結果的可能性。

內容搜尋法將推薦問題看做乙個尋找相關商品的問題。根據使用者購買的一件商品,利用其某個屬性構造乙個查詢條件,用該查詢條件來搜尋匹配的商品並作為推薦結果。例如,尋找同一作者、同一賣家、同一品牌、同一標籤的商品等搜尋。

這種推薦演算法其實就是乙個搜尋演算法,其缺點是在使用者當前已買過的商品數量很少時能產生較好的結果,但是在使用者購買的商品數量很多時,無法構造乙個有效的查詢條件。

亞馬遜提出了一種item-to-item協同過濾推薦演算法(注:在2023年之前就已提出,現在看來已經很老了),這種演算法的執行時間完全不受使用者個數、商品個數影響,適用於大型的資料,能實時返回高質量推薦結果。

做法

在傳統協同過濾演算法中,「使用者-商品」關係是這樣描述的(**中填入代表使用者對某商品好感度的數值):

-商品1

商品2商品3

…商品m

使用者1使用者2

使用者3…

使用者n

也就是用乙個m維的向量來表示乙個使用者(m等於所有商品總數),然後計算使用者之間的相似度。

如果想要計算商品之間的相似度,應該怎麼做呢?亞馬遜演算法的思路是這樣:尋找使用者經常一起購買的兩件商品,如果這兩件商品被同時購買的次數越多說明它們越相似。因此,我們可以將資料庫中所有商品兩兩比較一遍,計算出任意兩件商品之間的相似度。然而這種方法非常耗時間,亞馬遜演算法內部採用了以下演算法來計算商品相似度:

偽**

for each item i in product-catalog

for each customer c who purchased i

for each item j purchased by customer c

record that a customer purchased i and j

end for

end for

for each item j

compute the similarity between i and j.

end for

end for

對於如何計算商品相似度,我們可以把前面的「使用者-商品」矩陣旋轉一下,用買過這件商品的使用者數作為表示商品的向量的乙個維度,從而得到「商品-使用者」關係矩陣,然後用余弦相似度計算商品間的相似度。

推薦演算法簡介

在推薦系統簡介中,目前,主要的推薦方法包括 基於內容推薦 協同過濾推薦 基於關聯規則推薦 基於效用推薦 基於知識推薦和組合推薦。一 基於內容推薦 基 於內容的推薦 content based recommendation 是資訊過濾技術的延續與發展,它是建立在專案的內容資訊上作出推薦的,而不需要依據...

推薦演算法 簡介

推薦演算法最早在1992年就提出來了,但是火起來實際上是最近這些年的事情,因為網際網路的爆發,有了更大的資料量可以供我們使用,推薦演算法才有了很大的用武之地。最開始,所以我們在網上找資料,都是進yahoo,然後分門別類的點進去,找到你想要的東西,這是乙個人工過程,到後來,我們用google,直接搜尋...

常用推薦演算法簡介

在推薦系統簡介中,我們給出了推薦系統的一般框架。很明顯,推薦方法是整個推薦系統中最核心 最關鍵的部分,很大程度上決定了推薦系統效能的優劣。目前,主要的推薦方法包括 基於內容推薦 協同過濾推薦 基於關聯規則推薦 基於效用推薦 基於知識推薦和組合推薦。一 基於內容推薦 基 於內容的推薦 content ...