「數據分析」協同過濾算法

數據分析之協同過濾算法

協同過濾簡單來說是利用某興趣相投、擁有共同經驗之羣體的喜好來推薦用戶感興趣的信息,個人通過合作的機制給予信息相當程度的迴應(如評分)並記錄下來以達到過濾的目的進而幫助別人篩選信息,迴應不一定侷限於特別感興趣的,特別不感興趣信息的紀錄也相當重要。 摘自百度百科

  • 推薦算法概述

    推薦算法是非常古老的,在機器學習還沒有興起的時候就有需求和應用了。概括來說,可以分爲以下5種:
    • 基於內容的推薦:這一類一般依賴於自然語言處理NLP的一些知識,通過挖掘文本的TF-IDF特徵向量,來得到用戶的偏好,進而做推薦。這類推薦算法可以找到用戶獨特的小衆喜好,而且還有較好的解釋性。這一類由於需要NLP的基礎,本文就不多講,在後面專門講NLP的時候再討論。

    • 協調過濾推薦:本文後面要專門講的內容。協調過濾是推薦算法中目前最主流的種類,花樣繁多,在工業界已經有了很多廣泛的應用。它的優點是不需要太多特定領域的知識,可以通過基於統計的機器學習算法來得到較好的推薦效果。最大的優點是工程上容易實現,可以方便應用到產品中。目前絕大多數實際應用的推薦算法都是協同過濾推薦算法。

    • 混合推薦:這個類似我們機器學習中的集成學習,博才衆長,通過多個推薦算法的結合,得到一個更好的推薦算法,起到三個臭皮匠頂一個諸葛亮的作用。比如通過建立多個推薦算法的模型,最後用投票法決定最終的推薦結果。混合推薦理論上不會比單一任何一種推薦算法差,但是使用混合推薦,算法複雜度就提高了,在實際應用中有使用,但是並沒有單一的協調過濾推薦算法,比如邏輯迴歸之類的二分類推薦算法廣泛。

    • 基於規則的推薦:這類算法常見的比如基於最多用戶點擊,最多用戶瀏覽等,屬於大衆型的推薦方法,在目前的大數據時代並不主流。

    • 基於人口統計信息的推薦:這一類是最簡單的推薦算法了,它只是簡單的根據系統用戶的基本信息發現用戶的相關程度,然後進行推薦,目前在大型系統中已經較少使用。

  • 關於協同過濾算法的理解

    • 用一句話概括就是 物理類聚,人以羣分
    • 更具體一點的話,可以將協同過濾算法分爲兩種:
      • 基於用戶的協同過濾算法(userbased collaboratIve filtering)(user-based\ collaboratIve\ filtering):需要計算的是用戶之間的相似度,找出喜好相似的用戶,並預測或者有數據顯示該用戶的對物品的評分,那麼就可以將評分最高的一些物品推薦給用戶
      • 基於物品的協同過濾算法(itembased collaborative filtering)(item-based\ collaborative\ filtering):和上面一種類似,只不過是改成了找物品的相似度,通過對相似度高的物品進行預測,然後將最高評分的一些物品推薦給用戶
    • 那麼顯然協同過濾的算法的關鍵就是先用歷史數據分析出用戶的偏好,然後找出相似的用戶或者物品。那麼相似性度量(Similarity Measurement)(Similarity\ Measurement)就成了關鍵
  • 相似性度量

    • 度量的方法很多,這裏介紹最基本的一種 — 夾角餘弦,其餘的學完了再來填坑
      我們知道在二維空間中向量A(x1,y1)A(x_1,y_1)與向量B(x2,y2)B(x_2,y_2)的夾角餘弦公式:
      cos(θ)=x1x2+y1y2x12+y12x22+y22cos(\theta)=\frac{x_1x_2+y_1 y_2}{\sqrt{x_1^2+y_1^2}\sqrt{x_2^2+y_2^2}}
      兩個nn維向量A(x1,x2,...,xn)A(x_1,x_2,...,x_n)B(y1,y2,...,yn)B(y_1,y_2,...,y_n)的夾角餘弦:
      cos(θ)=i=1nxiyii=1nxi2i=1nyi2cos(\theta)=\frac{\sum_{i=1}^{n}{x_iy_i}}{\sqrt{\sum_{i=1}^n{x_i^2}}\sqrt{\sum_{i=1}^n{y_i^2}}}
    • 其餘的方法的話這裏丟一個鏈接:相似性度量博客 還有這個:基於模型的協同過濾算法
  • 利用協同過濾算法做電影推薦

    • 這裏採用的最簡單的夾角餘弦做相似性測量的,更精準的做法有待慢慢學習,再回頭來改進這篇博客
    • 代碼以及數據都放在:github
發佈了152 篇原創文章 · 獲贊 23 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章