《Python數據分析與機器學習實戰-唐宇迪》讀書筆記第13章--推薦系統

python數據分析我的學習讀書筆記-目錄索引 html

 第13章推薦系統python

   大數據與人工智能時代,互聯網產品發展迅速,競爭也愈來愈激烈,而推薦系統在其中發揮了決定性的做用。例如,某人觀看抖音的時候,特別喜歡看籃球和遊戲的短視頻,只要打開APP,就都是熟悉的旋律,系統會推薦各類精彩的籃球和遊戲集錦,根本不用本身動手搜索。廣告與新聞等產品也是如此,都會抓住用戶的喜愛,對症下藥才能將收益最大化,這都歸功於推薦系統,本章向你們介紹推薦系統中的經常使用算法。算法

13.1推薦系統的應用機器學習

   在大數據時代,每分鐘都在發生各類各樣的事情,其對應的結果也都經過數據保存下來,如何將數據轉換成價值,就是推薦系統要探索的目標(見圖13-1)。異步

 邀月工做室

  圖13-1 互聯網數據量ide

  推薦系統在生活中隨處可見,購物、休閒、娛樂等APP更是必不可缺的法寶,在雙十一購物時,估計你們都發現了,只要是搜索過或者瀏覽過相似商品,都會再次出如今各類廣告位上。函數

  你可能喜歡的電影,你可能喜歡的音樂,你可能喜歡的……這些你們再熟悉不過,系統都會根據用戶的點擊、瀏覽、購買記錄進行個性化推薦,如圖13-2所示。圖13-2(b)是用筆者的京東帳號登陸時的專屬排行榜,全是啤酒,由於以前搜索過幾回啤酒關鍵詞卻沒有買,系統天然會認爲正在猶豫買不買呢。post

 邀月工做室

  圖13-2 推薦系統場景學習

  圖13-3是亞馬遜、京東、今日頭條3個平臺的推薦系統的數據,幾個關鍵指標都顯示了其價值所在,那麼怎麼進行推薦呢?首先要有各項數據,才能作這件事。例如,你在抖音中觀看某些視頻的停留時間較長,帳號上就會打上一些標籤。例如,筆者喜歡看籃球和打遊戲,那麼標籤可能就是籃球、王者榮耀、遊戲迷……這些標籤僅僅爲了優化用戶體驗嗎?本身使用較多的APP推薦的廣告是否都是常關注的領域呢?大數據

 邀月工做室

  圖13-3 推薦系統的價值

當你們使用產品時,無形之中早已被打上各類標籤,這就是用戶畫像,並不須要知道你的模樣,只要知道你的愛好,投其所好可以吸引你們就足夠了(見圖13-4)。

 邀月工做室

  圖13-4 用戶畫像

 

13.2協同過濾算法

  若是你們想邀請朋友去看一場電影,你的首選對象是誰?應該是本身的好朋友吧,由於大家有共同的愛好。如今有幾部電影同時上映,實在拿不定主意選哪一部,該怎麼辦呢?這時可能會有兩種方案。

  • 1.問問各自的好朋友,由於彼此的品位差很少,朋友喜歡的電影,大概也符合你的口位。
  • 2.回憶一下看過的喜歡的電影,看看正在上映的這些電影中,哪部與以前看過的相似。

  問題是如何讓計算機肯定哪一個朋友跟你的喜愛相同呢?如何肯定哪一部新的電影與你以前看過的相似呢?這些任務能夠經過協同過濾來完成,也就是經過用戶和商品的畫像數據進行類似度計算(見圖13-5)。

 邀月工做室

  圖13-5 類似計算

  協同過濾看起來複雜,作起事來仍是很簡單的,在推薦系統中主要有兩種方案。

  • 1.基於用戶的協同過濾:找最類似的朋友,看看他們喜歡什麼。
  • 2.基於商品的協同過濾:找看過的商品,看看哪些比較相似。

13.2.1基於用戶的協同過濾

   首先來看一下基於用戶的協同過濾,假設有5組用戶數據,還有用戶對兩種商品的評分,經過不一樣的評分,計算哪些用戶的品位比較類似。

  最直接的方法是,把用戶和評分數據展現在二維平面上,如圖13-6所示。很明顯,用戶A、C、D應該是一類人,他們對商品1都不太滿意,而對商品2比較滿意。用戶E和B是另一類,他們的喜愛與用戶A、C、D正好相反。

  只要有數據,計算類似度的方法比較多,下面列出幾種常見的類似度計算方法:

 邀月工做室

  圖13-6 用戶類似度

  • 歐幾里得距離(Euclidean Distance)

 邀月工做室

  • 皮爾遜相關係數(Pearson Correlation Coefficient)

 邀月工做室

  • 餘弦類似度(Cosine Similarity)

 邀月工做室

  • 協方差

 邀月工做室

  類似度的計算方法還有不少,對於不一樣任務,你們均可以參考使用,其中歐幾里得距離早已家喻戶曉,基本全部涉及距離計算的算法中都會看到它的影子。皮爾遜相關係數也是一種常見的衡量指標,即用協方差除以兩個變量的標準差獲得的結果,其結果的取值範圍在[−1,+1]之間。圖13-7展現了不一樣分佈的數據所對應的皮爾遜相關係數結果。

   由圖可見,當兩項指標很是類似的時候,其值爲+1,例如學習時長和學習成績的關係,學習時間越長,學習成績越好。當兩項指標徹底顛倒過來的時候,其值爲−1,例如遊戲時長和學習成績的關係,遊戲時間越長,學習成績越差。當兩項指標之間沒有關係的時候,其值就會接近於0,例如身高和學習成績,它們之間並無直接關係。

  在基於用戶的推薦中,一旦經過類似度計算找到那些最相近的用戶,就能夠看看他們的喜愛是什麼,若是在已經購買的商品中,還有一件商品是待推薦用戶尚未購買的,把這件商品推薦給用戶便可。

  假設系統向用戶A推薦一款商品,經過歷史數據得知,其已經購買商品A和C,尚未購買商品B和D,此時系統會認爲接下來他可能要在商品B和D中選一個。那給他推薦商品B仍是商品D呢?按照協同過濾的想法,首先要找到和他最類似的用戶,經過對比發現,用戶A和用戶C的購買狀況十分相似,都購買了商品A和C,此時能夠認爲用戶C和用戶A的品位類似,而用戶C已經購買了商品D,因此最終給用戶A推薦了商品D,這就是最簡單的基於用戶的協同過濾(見圖13-8)。

 邀月工做室

  圖13-7 相關係數

 邀月工做室

  圖13-8 基於用戶的協同過濾

  基於用戶的協同過濾作起來雖然很簡單,可是也會遇到如下問題。

  • 1.對於新用戶,很難計算其與其餘用戶的類似度。這也是常常討論的用戶冷啓動問題,最簡單的辦法就是用排行榜來替代推薦。
  • 2.當用戶羣體很是龐大的時候,計算量就很是大。
  • 3.最不可控的因素是人的喜愛是變化的,每個時間段的需求和喜愛可能都不相同,而且購買很大程度上都是衝動行爲,這些都會影響推薦的結果。

  綜上所述,基於用戶的協同過濾並不常見,通常用在用戶較少而商品較多的狀況下,可是中國市場偏偏相反,用戶羣體十分龐大,商品類別相對更少。

13.2.2基於商品的協同過濾

   基於商品的協同過濾在原理上和基於用戶的基本一致,只不過變成要計算商品之間的類似度。

  假設購買商品A的用戶大機率都會購買商品C,那麼商品A和C可能就是一套搭配的產品,例如相同牌子不一樣口味的冰淇淋,或者是啤酒和尿布的故事……接下來若是用戶C購買了商品A,確定要向他推薦商品C了(見圖13-9)。

 邀月工做室

  圖13-9 基於商品的協同過濾

  再來看一個實際的例子,如圖13-10所示,有12個用戶,6部電影,能夠把它們看成一個矩陣,其中的數值表示用戶對電影的評分。空着的地方表示用戶尚未看過這些電影,其實作推薦就是要估算出這些空值均可能是什麼,若是某一處獲得較高的值,意味着用戶極可能對這個電影感興趣,那就給他推薦這個電影。

 邀月工做室

  圖13-10 基於商品的協同過濾

  此時任務已經下達,要對5號用戶進行推薦,也就是要分別計算該用戶對全部未看過電影的可能評分,以其中一部電影的計算方法爲例,其餘位置的計算方法相同。例如想求5號用戶對1號電影的喜愛程度,假設已經經過某種類似度計算方法獲得1號電影和其餘電影的類似度(例如經過比對電影類型、主演、上映時間等信息),因爲5號用戶以前看過3號電影和6號電影(類似度爲負分的暫時不考慮),因此須要分別考慮這兩部電影和1號電影的類似度,計算方法如圖13-11所示。

 邀月工做室

  圖13-11 推薦指數計算

  這裏能夠把類似度看做權重項,類似度越高,起到的做用越大,最後再進行歸一化處理便可。最終求得5號用戶對1號電影的評分值爲2.6,看來他可能不喜歡1號電影。

  關於類似度的計算和最終結果的估計,還需具體問題具體分析,由於不一樣數據所需計算方式的差異仍是很大。與基於用戶的協同過濾相比,基於商品的協同過濾最大的優點就是用戶的數量可能遠大於商品的數量,計算起來更容易;並且商品的屬性基本都是固定的,並不會由於人的情感而發生變化,就像鼠標怎麼也變不成鍵盤。在很是龐大的用戶-商品矩陣中,計算推薦涉及的計算量十分龐大,因爲商品標籤相對固定,能夠不用像基於用戶的那樣頻繁更新。

 

13.3隱語義模型

   協同過濾方法雖然簡單,可是其最大的問題就是計算的複雜度,若是用戶-商品矩陣十分龐大,這個計算量多是難以忍受的,而實際狀況也是如此,基本須要作推薦的產品都面臨龐大的用戶羣體。如何解決計算問題,就是接下來的主要目標,使用隱語義模型的思想能夠在必定程度上巧妙地解決這些龐大的計算問題。

13.3.1矩陣分解思想

   真實數據集中,用戶和商品數據會構成一個很是稀疏的矩陣,假設在數以萬計的商品中,一個用戶可能購買的商品只有幾種,那麼其餘商品位置上的數值天然就爲0(見圖13-12)。

 邀月工做室

  圖13-12 稀疏矩陣

  稀疏矩陣的問題在於考慮的是每個用戶和每個商品之間的聯繫,那麼,可否換一種思路呢?假設有10萬個用戶和10萬個商品,先不考慮它們之間直接的聯繫,而是引進「中介」,每一個「中介」能夠服務1000個商品和1000個用戶,那麼,只須要100個「中介」就能夠完成任務。此時就將原始的用戶-商品問題轉換成用戶-中介和中介-商品問題,也就是把本來的一個龐大的矩陣轉換成兩個小矩陣。

  矩陣分解的目的就是但願其規模可以縮減,更方便計算,現階段推薦系統基本都是基於矩陣分解實現的。

  這裏能夠簡單來計算一下,按照以前的假設,用戶-商品數據集矩陣爲105×105=1×1010,很是嚇人的一個數字。加入中介以後,用戶-中介矩陣爲105×1000,中介-商品矩陣爲1000×105,分別爲1×107,在數值上差了幾個數量級。

  圖13-13是矩陣分解的示意圖,也就是經過引入一個「中介」來轉換原始問題,目的就是爲了下降計算複雜度,這裏能夠把用戶數n和商品數m都看成很是龐大的數值,而「中介」k倒是一個相對較小的值。

 邀月工做室

  圖13-13 矩陣分解

  一般把「中介」k定義爲隱含因子,隱含因子把數據進行了間接的組合,小小的改變卻解決了實際中的大問題。在推薦系統中,廣泛使用矩陣分解的方法進行簡化計算,其中最經常使用的手段就是SVD矩陣分解,在下一章的實戰中,你就會見到它的影子。

13.3.2隱語義模型求解

   如何求解隱語義模型呢?其實在推薦系統中,想獲得的結果就是稀疏矩陣中那些爲0的值多是什麼,也就是想看一下用戶沒有買哪些商品。首先計算出其購買各類商品的可能性大小,而後依照規則選出最有潛力的商品便可。

  其中的難點在於如何構建合適的隱含因子來幫助化簡矩陣,如圖13-14所示,F是要求解的隱含因子,只須要把它和用戶與商品各自的聯繫弄清楚便可。

 邀月工做室

  圖13-14 隱含因子

  R矩陣能夠分解成P矩陣和Q矩陣的乘積,如圖13-15所示。此時只需分別求解出P和Q,天然就能夠還原回R矩陣:

 邀月工做室

 邀月工做室

  圖13-15 隱含因子求解

  這裏還須要考慮顯性和隱性反饋的問題,也就是數據集決定了接下來該怎麼解決問題,先來看一下顯性和隱性的區別(見表13-1)。

  表13-1 顯性與隱性反饋

 邀月工做室

  常見的帶有評分的數據集屬於顯性反饋,只有行爲沒有具體評估指標的就是隱形反饋。並非全部數據集都是理想的,有時須要本身定義一下負樣本。一般狀況下,對於一個用戶,沒有購買行爲的商品就是負樣本,關於負樣本的選擇方法還有不少,能夠根據實際狀況來定義。在商品集K(u,i)中,若是(u,i)是正樣本,則rui=1;若是(u,i)是負樣本,則rui=0。

  按照機器學習的思想,能夠把隱含因子看成要求解的參數,依舊仍是這個老問題,什麼樣的參數可以更符合實際的數據,先指定一個目標函數:

 邀月工做室

  看起來與迴歸中的最小二乘法有點相似,計算由隱含因子還原回來的矩陣與原始矩陣的差別程度,而且加入正則化懲罰項。

  按照以前回歸中的求解思路,此時能夠利用梯度降低進行迭代優化,首先計算梯度方向:

 邀月工做室

  接下來按照給定方向,選擇合適的學習率進行更新便可:

 邀月工做室

  在建模過程當中,須要考慮如下參數。

  • 1.隱含因子的個數或者看成隱分類的個數,須要給定一個合適的值。
  • 2.學習率α一直都是機器學習中最難搞定的。
  • 3.既然有正則化懲罰項,確定會對結果產生影響。
  • 4.正負樣本的比例也會有影響,對於每個用戶,儘可能保持正負樣本比例持平。

  隱語義模型在必定程度上下降了計算的複雜度,使得有些根本沒辦法實現的矩陣計算變成可能。在協同過濾中,每一步操做都具備實際的意義,很清晰地表示在作什麼,可是隱語義模型卻很難進行解釋,它與PCA降維獲得的結果相似,依舊很難知道隱含因子表明什麼,不過不要緊,一般只關注最後的結果,中間過程究竟作什麼,計算機本身知道就好。

13.3.3評估方法

   當建模完成以後,確定要進行評估,在推薦系統中,能夠評估的指標有不少,其中經常使用的均方根偏差(Root Mean Squared Error,RMSE)和均方偏差(Mean Square Error,MSE)分別定義爲:

 邀月工做室

  在評估方法中,不僅有這些傳統的計算方式,還須要根據實際業務進行評估,例如覆蓋率、多樣性。這些指標可以保證系統推薦的商品不至於老是那些常見的。

假設系統的用戶集合爲U,商品列表爲I,推薦系統給每一個用戶推薦一個長度爲N的商品列表R(u),根據推薦出來的商品佔總商品集合的比例計算其覆蓋率:

 邀月工做室

  多樣性描述了推薦列表中物品兩兩之間的不類似性。假設那麼用戶u的推薦列表R(u)的多樣性定義以下:

  定義了物品i和j之間的類似度,

 邀月工做室

  推薦系統的總體多樣性能夠定義爲全部用戶推薦列表多樣性的平均值:

 邀月工做室

  這裏給你們簡單介紹了幾種常見的評估方法,在實際應用中,須要考慮問題的角度還有不少,例如新穎性、驚喜度、信任度等,這些都須要在實際問題中酌情考慮。

 

本章小結:本章介紹了推薦系統中經常使用的兩種方法:協同過濾與隱語義模型。相對而言,協同過濾方法更簡單,可是,一旦數據量較大就比較難以處理,隱語義模型和矩陣分解方法都是現階段比較經常使用的套路。下一章將帶你們實際感覺一下推薦系統的魅力。

 

第13章完。推薦實戰:《Python數據分析與機器學習實戰-唐宇迪》讀書筆記第14章--音樂推薦系統實戰

python數據分析我的學習讀書筆記-目錄索引

 

該書資源下載,請至異步社區:https://www.epubit.com

相關文章
相關標籤/搜索