1. 程式人生 > >購物網站的推薦演算法-個性化推薦演算法中如何處理買了還推

購物網站的推薦演算法-個性化推薦演算法中如何處理買了還推

1. 引言

目前在工業界推薦中廣泛使用的協同過濾演算法(Collaborative Filtering)主要分為user-based和item-based兩種型別,user-based多用於挖掘那些有共同興趣的小團體;而item-based側重於挖掘item之間的關係,然後根據使用者的歷史行為來為使用者生成推薦列表。相比item-based,user-based方法推薦的新穎性好一些,但是準確性差,而item-based 的方法應用更為廣泛。item-based的CF在使用過程中經常被詬病會經常推薦最近購買過商品的類似商品。這是因為使用者對最近購買的商品以及相似商品有較多的歷史行為(點選,加購,購買),CF在推薦的時候對這部分商品相關聯的商品會給予較高的權重。常用的處理方法是對推薦列表中與使用者近期購買過的商品的葉子類目相同的商品進行過濾,根據具體需求可以選擇對應的購買時間區間以及過濾白名單。這種處理方法有著明顯的弊端:

  1. 使用者購買過的商品並不是所有都需要過濾,即使需要過濾相對應的過濾購買週期也是不盡相同的。比如使用者購買一件T恤後很有可能會第二天繼續購買一件T恤,在購買一箱牛奶後可能要過一個月後再買一箱牛奶,而在購買一個冰箱後可能要過好幾年才會再置換冰箱。相對應的我們在推薦時候不需要對T恤進行過濾,對牛奶則應該選擇在三個星期內進行過濾,而對冰箱則很可能需要一直過濾。統一的購買時間區間以及過濾白名單都不能很好解決上述問題。
  2. 單純對使用者近期購買的商品的葉子類目進行過濾在很多情況沒法很好的解決使用者體驗問題,比如使用者購買了一件連體泳衣,相應的推薦結果會出現較多分體泳衣的召回。僅僅對連體泳衣的葉子類目進行過濾並不能過濾掉分體泳衣的召回,仍然會對使用者特別是高階使用者的體驗造成較大的困擾。

使用者的購買決策往往會受到很多主觀因素和客觀因素的影響。近幾年也有不少的研究工作將使用者的購買時序考慮進推薦過程中並驗證可以有效提高推薦效果。使用者購買商品後對其他的商品購買影響可能是正向的影響,也可能是負向的影響,比如使用者在購買完一個手機以後,對購買相似推薦的其他手機的意圖會明顯下降,而對搭配推薦的手機殼的購買則會明顯提升。本文主要針對相似推薦中買了還推的情況進行分析,提出演算法來解決常用處理方法會出現的弊端。

2. 演算法介紹

相似推薦中買了還推的問題的本質是要研究使用者購買商品A後對與商品A相似的商品A+A+的購買意圖變化。我認為其中有兩個關鍵的問題是我們首先需要解決的:

  1. 如何準確的衡量使用者購買商品A後對相似商品A+A+的購買意圖變化?
  2. 如何獲取使用者購買商品A後的購買意圖發生變化的相似商品A+A+的集合S?

下面的內容主要是圍繞這兩個問題展開來討論。

2.1 購買意圖變化衡量

假設使用者購買商品A的時間點為0,則我們需要衡量的是使用者在購買商品A後在時間點y對A+A+的第一次進行購買的概率,這裡第一次進行購買表明使用者在時間點y前未購買A+A+。survival analysis經常被用來對一個事件發生的時間區間進行建模,這裡我們也使用survival analysis來對上述條件概率進行估計。

2.1.1 survival analysis

survival analysis是一個在統計學中研究比較多的topic,在經濟以及可靠性分析領域有著不少的應用。它其中很重要的一部分就是用來預測一個事件發生的時間,比如說一臺機器什麼時候會出錯或者一位病人什麼時候無法延續生命。這裡我們可以用它來預測使用者在什麼時間會購買商品。在基本的survival analysis中有一個假設是當時間趨於無窮,時間總會發生,比如說一臺機器總是會出錯,一個病人總有一天會總結他的生命。對應到我們的問題,它其實假定當時間趨於無窮,使用者在購買商品A後肯定會購買A+A+。survival analysis有一個很重要的hazards function。假設p(y)p(y)是一件事件發生的時間分佈概率密度函式,T是一個代表事件發生時間的隨機變數,P(y)=Pr(Ty)P(y)=Pr(T≤y)是相對應的累積分佈函式,則survival function SU(y)=Pr(T>y)=1P(y)SU(y)=Pr(T>y)=1−P(y),相對應的hazards函式則為

h(y)=p(y)/SU(y)=p(y)/(1P(y))h(y)=p(y)/SU(y)=p(y)/(1−P(y))
它的物理意義是表示事件在時間點y之前未發生而在時間點y瞬時發生的概率。對應到買了還推的問題上它表示使用者在購買商品A後在時間點y之前未購買相似商品A+A+而在時間點y購買A+A+的概率,也正是我們需要估計的。

2.1.2 hazards 函式

我們首先需要估計使用者在購買A後購買A+A+的時間分佈概率密度函式p(y)p(y)。一個很直接的想法是用所有購買過A且後續購買了A+A+的使用者在不同時間點上的人數分佈來估計。為了避免兩個商品之間的資料的稀疏性,我們考慮使用者購買集合S中商品後續再購買集合S中商品在不同時間點的人數分佈。這裡我們採用同一葉子類目商品集合作為S。這樣我們可以得到相應的概率分佈曲線p(y,S)p(y,S),進而得到相應的h(y,S)h(y,S)。以保暖上裝這一葉子類目為例,對應的p(y,S)p(y,S)如下:

圖片名稱

對應的h(y,S)h(y,S)曲線如下

圖片名稱

可以看到它的時間分佈概率曲線是一個很明顯的類power law曲線。大部分重複購買了保暖上裝的使用者都是在上次購買保暖上裝後較短時間內進行了購買,而在購買250到300天后再購買的使用者很少。保暖上裝具有很明顯的季節性,使用者一般都會選擇在來年的秋冬季節再進行購買,因而購買250到300天后再購買的使用者從常識上來說不應該這麼少。那是什麼原因導致結果與預期的結果有比較大的出入呢?

這是因為我們在進行統計估計時只拿到使用者在淘寶和天貓上的購買記錄,而使用者很多時候並不一定會選擇在淘寶和天貓上進行購買。以保暖上裝為例,很多使用者會選擇直接去商場或者去其他購物網站進行購買。而使用者在短期內會在淘寶或天貓上再購買很大程度是受上次在淘寶或天貓購買的記憶留存影響。當時間逐漸推移,這種記憶留存的影響也會逐漸衰減,對使用者的購買的影響也會逐漸衰弱。這種情況在survival analysis中被稱為censoring,表示未觀測到的資料。我們對hazards函式進行估計時需要將這部分資料的影響考慮進去。

2.1.3 使用者購買記憶函式

為了進行修正,我們引入使用者u在時間點y對集合S(葉子類目)的購買記憶函式m(u,y,S)m(u,y,S),主要由兩部分組成:

m(u,y,S)

相關推薦

購物網站推薦演算法-個性化推薦演算法如何處理

1. 引言 目前在工業界推薦中廣泛使用的協同過濾演算法(Collaborative Filtering)主要分為user-based和item-based兩種型別,user-based多用於挖掘那些有共同興趣的小團體;而item-based側重於挖掘item之間

Slope one—個性化推薦最簡潔的協同過濾演算法

Slope One 是一系列應用於 協同過濾的演算法的統稱。由 Daniel Lemire和Anna Maclachlan於2005年發表的論文中提出。 [1]有爭議的是,該演算法堪稱基於專案評價的non-trivial 協同過濾演算法最簡潔的形式。該系列演算法的簡潔特

BAT大牛親授-個性化推薦演算法實戰

第1章 個性化推薦演算法綜述 個性化推薦演算法綜述部分,主要介紹個性化推薦演算法綜述,本課程內容大綱以及本課程所需要準備的程式設計環境與基礎知識。 1-1 個性化推薦演算法綜述 1-2 個性化召回演算法綜述

BAT大牛親授--個性化推薦演算法實戰

第1章 個性化推薦演算法綜述個性化推薦演算法綜述部分,主要介紹個性化推薦演算法綜述,本課程內容大綱以及本課程所需要準備的程式設計環境與基礎知識。 第2章 基於鄰域的個性化召回演算法LFM本章節重點介紹一種基於鄰域的個性化召回演算法,LFM。從LFM演算法的理論知識與數學原理進行介紹。並結合公開資料集,程式碼

BAT大牛親授 個性化推薦演算法實戰

第1章 個性化推薦演算法綜述個性化推薦演算法綜述部分,主要介紹個性化推薦演算法綜述,本課程內容大綱以及本課程所需要準備的程式設計環境與基礎知識。 第2章 基於鄰域的個性化召回演算法LFM本章節重點介紹一種基於鄰域的個性化召回演算法,LFM。從LFM演算法的理論知識與數學原理進行介紹。並結合公開資料集,程式碼

BAT大牛親授--個性化推薦演算法實戰完整資源

BAT大牛親授--個性化推薦演算法實戰完整資源 獲取資源請掃描二維碼 回覆BAT大牛 獲取資源請掃描二維碼 回覆BAT大牛 獲取資源請掃描二維碼 回覆BAT大牛 第1章 個性化推薦演算法綜述 個性化推薦演算法綜述部分,主要介紹個性化推薦演算法綜述,本課程內容大綱

詳解個性化推薦五大最常用演算法

推薦系統,是當今網際網路背後的無名英雄。 我們在某寶首頁看見的商品,某條上讀到的新聞,甚至在各種地方看見的廣告,都有賴於它。 昨天,一個名為Stats&Bots的部落格詳解了構建推薦系統的五種方法。 量子位編譯如下: 現在,許多公司都在用大資料來向用戶進行

個性化推薦演算法的理論建立

1.例子解析(item協同過濾)       1.1推薦思路          假如有A,B,C,D四個使用者,且每個使用者對a,b,c,d四個專案有過點選瀏覽,關係圖如下:         首先該演算法的基本思想是協同過濾,協同過濾的方式是基於使用者行為的,如果喜

基於Spark ALS演算法個性化推薦

今天來使用spark中的ALS演算法做一個小推薦。需要資料的話可以點選檢視,在文末點選閱讀原文即可獲取。其實在R中還有一個包可以做推薦,那就是recommenderlab。如果資料量不大的時候可以使用r

今日頭條個性化推薦演算法

要點: 1. 協同過濾 基於投票的規則,若某個使用者組對某篇文章投票較多,則判斷該使用者組對該篇文章較感興趣 2. 使用者屬於多組情況處理 若某個使用者屬於多個組,則採用加權平均的方式選取得分最高的文章進行推薦,權重係數利用邏輯迴歸確定。 w1(組的權重係數)*該組對某文章

基於內容推薦個性化新聞閱讀實現(二):基於SVD的推薦演算法

一、前言 SVD前面已經說了好多次了,先不論其資訊檢索被宣稱的各種長處如何如何,在此最主要的作用是將稀疏的term-doc矩陣進行降維,當一篇篇文章變成簡短的向量化表示後,就可以用各種科學計算和機器學習演算法進行分析處理了。 之前的推薦演算法的設計是用的最大熵估計,他和諸如樸素貝葉斯、邏輯迴歸等,本質就

個性化推薦演算法 綜述

隨著網際網路的迅速發展,接入網際網路的網頁與伺服器數量也以指數形式迅猛增長。網際網路的發展,使得海量資訊以飛快的更新速度在我們眼前不斷呈現。例如,卓越亞馬遜上存在著上千萬的圖書,NetFlix上有數萬部電影。如此眾多的資訊,遍歷一遍都變得十分艱難,更何況要在其中找到自己感興趣的部分。傳統的搜尋策略,為每個

BAT大牛親授-個性化推薦演算法實戰(完整版)

課程目錄:第1章 個性化推薦演算法綜述個性化推薦演算法綜述部分,主要介紹個性化推薦演算法綜述,本課程內容大綱以及本課程所需要準備的程式設計環境與基礎知識。1-1 個性化推薦演算法課程導學 試看1-2 個性化推薦演算法綜述 試看1-3 個性化召回演算法綜述 試看第2章 基於鄰域的個性化召回演算法LFM本章節

2019最新BAT大牛親授-個性化推薦演算法實戰

課程目錄: 第1章 個性化推薦演算法綜述 個性化推薦演算法綜述部分,主要介紹個性化推薦演算法綜述,本課程內容大綱以及本課程所需要準備的程式設計環境與基礎知識。 1-1 個性化推薦演算法課程導學 試看 1-2 個性化推薦演算法綜述 試看 1-3 個性化召回演算法綜述 試看 第2章 基於鄰域的個性

個性化推薦典型任務與傳統演算法

典型任務和演算法(模型) 1.相似匹配(基於內容) 1.1 標籤匹配 1.2 LDA主題模型 2.評分預測 2.1.large scale 問題。為什麼不直接進行迴歸預測呢? 2.2.user or item based 協同過濾

熱度演算法個性化推薦

今日頭條的走紅帶動了“個性化推薦”的概念,自此之後,內容型的產品,個性化演算法就逐漸從賣點變為標配。伴隨著“機器學習”,“大資料”之類的熱詞和概念,產品的檔次瞬間提高了很多。而各種推薦演算法絕不僅僅是研發自己的任務,作為產品經理,必須深入到演算法內部,參與演算

推薦系統遇上深度學習(二十)-貝葉斯個性化排序演算法原理及實戰

排序推薦演算法大體上可以分為三類,第一類排序演算法類別是點對方法(Pointwise Approach),這類演算法將排序問題被轉化為分類、迴歸之類的問題,並使用現有分類、迴歸等方法進行實現。第二類排序演算法是成對方法(Pairwise Approach),在序列方法中

Just Waiting for You!個性化推薦帶你領略不一樣的演算法之美

2016年,SDCC·中國軟體開發者大會相繼走進了上海、深圳、成都、杭州各地。11月18日-20日將在北京完美收官,屆時年度最受歡迎的企業、講師將在這裡齊聚一堂,約百位講師將圍繞電商架構、程式語言、前端開發、微信開發、視訊直播、推薦演算法、Spark實踐等方面,

個性化推薦演算法------基於內容的推薦和基於鄰域的協同過濾

這篇文章主要討論了個性推薦演算法中,基於內容推薦和基於鄰域的協同過濾推薦的分析比較。 資料集:使用者對電影的歷史評價記錄,只有喜歡與不喜歡,喜歡用1表示,不喜歡用2表示,格式如下: 使用者歷史電影評分

演算法文章推薦

大數a-b:https://blog.csdn.net/liusu201601/article/details/83054406 無向圖割點求法:https://blog.csdn.net/zsyz_ZZY/article/details/79907335     &nb