據統計,全球數據總量預計2020年達到44ZB,中國數據量將達到8060EB,佔全球數據總量的18%。現階段咱們所討論的人工智能,很大程度上都是在談「人工智能」這個大概念下機器學習領域中的深度學習技術。它的底層原理相對簡單,對數據有很大的依賴性,本質上是一種基於大數據的統計分析技術。算法
推薦系統做爲人工智能的落地場景之一,對數據的依賴性不言而喻。企業經過前期的數據收集,全面瞭解自身的產品和目標用戶;以後,經過一系列的數據挖掘技術,對目標用戶進行分類,刻畫用戶畫像;最後,再經過數據決策,制定產品運營方案,並不斷迭代、優化產品細節。能夠說,沒有前期的數據,以後的一系列操做無從談起。數據庫
那麼,推薦系統是如何處理數據的呢?微信
一個典型的推薦系統,處理數據一般會經歷如下四步:即數據收集、數據存儲、數據分析和數據過濾。網絡
實現推薦系統的第一步即是收集數據。這些數據能夠是顯性數據,也能夠是隱性數據。顯性數據就是指用戶主動輸入的數據,例如對內容的評論、點贊、轉發、下載等,隱性數據是指用戶的瀏覽歷史、閱讀時長、觀看記錄、搜索日誌等。後臺會爲每個使用該產品/訪問該站點的用戶建立一個數據集。app
用戶的行爲數據很容易收集,經過站點上的用戶行爲日誌就能獲取。若是用戶已經在使用APP,獲取用戶的行爲數據就不須要用戶的額外操做。但這種方法有一個缺點,獲取的數據分析起來很麻煩。好比說,從用戶的大量行爲日誌中過濾出真正須要的日誌很是麻煩。運維
因爲每一個用戶對產品的喜愛不一,所以收集到的每位用戶的數據集也大相徑庭。隨着時間的推移,收集到的用戶數據也愈來愈多,經過一系列數據分析,推薦的結果也會愈來愈精準。機器學習
咱們爲推薦算法提供的數據越多,推薦的效果就會越精準。這也就意味着,任何推薦問題均可以轉變爲大數據分析問題來解決。工具
用於建立推薦結果的數據類型可幫助咱們肯定應使用的數據存儲類型。咱們能夠選擇使用NoSQL(Not Only SQL)數據庫、標準SQL數據庫,甚至是某種對象存儲。根據不一樣的存儲目的如獲取用戶輸入/行爲,以及操做的難易程度、存儲的數量級、與其餘環境的集成以及數據的可移植性等因素,選擇合適的數據存儲類型。post
在保存用戶評級或評論時,可擴展和可託管的數據庫可以最大限度地減小所需的任務量,將注意力聚焦在推薦結果上。 Cloud SQL能夠知足這兩種需求,還能夠直接從Spark上加載數據。學習
爲了獲取相似用戶參與度之類的數據,咱們須要使用不一樣的分析方法過濾數據。若是想在用戶瀏覽產品時即時給出推薦結果,那麼須要更加靈活的數據分析方法。如下是分析數據的一些方法:
•實時分析
能夠在建立數據的同時對其進行處理。這種類型的系統一般包含能夠處理和分析事件流的工具。要想給出用戶實時的推薦結果,就要建立實時的數據分析系統。
•批量分析
要求按期處理數據。採用這種方法,意味着要有足夠的數據才能分析數據之間的相關性,例如每日閱讀量、關注量等。推薦結果可能會經過郵件形式發送給用戶。
•近實時分析
每隔幾分鐘或幾秒鐘刷新一次後能夠快速收集數據,進行分析。近實時系統最適合在一次瀏覽會話期間給出推薦結果。
下一步即是過濾數據,獲取爲用戶提供推薦所需的相關數據。咱們得先從上面的算法中選擇一種更合適的算法。好比說:
基於內容的過濾:推薦的產品具備與目標用戶喜歡的產品相似的特徵;
聚類:對目標用戶進行分類,處於某一個簇中的用戶會被當成一個總體來對待;
協同過濾:目標用戶喜歡其餘用戶喜歡的某一產品,那他也可能喜歡其餘用戶喜歡的其餘產品。
協同過濾可以使產品屬性理論化,並根據用戶的口味進行預測。協同過濾的假設基礎是:若是一位用戶喜歡另外一位用戶喜歡的某一個產品,那麼如今或未來他也有可能喜歡這位用戶喜歡的另外一個產品。
咱們將產品和用戶做爲兩個不一樣維度,把有關評級或互動的數據表示爲一組矩陣。假設如下兩個矩陣類似,若是用數字1代替現有的評級,用0補上缺乏的評級,就能獲得第二個矩陣。生成的矩陣爲真值表,其中數字表示用戶與產品之間的交互。
咱們可使用K-Nearest算法、Jaccard係數、Dijkstra算法、餘弦類似性來更好地關聯用戶數據集,以便根據評級或產品特徵進行推薦。
最後,根據推薦類型的及時性,用戶就會獲得相應的算法推薦結果。
相關閱讀:
如欲瞭解更多,歡迎搜索並關注先薦微信公衆號(ID:dsfsxj)。
本帳號爲第四範式智能推薦產品先薦的官方帳號。帳號立足於計算機領域,特別是人工智能相關的前沿研究,旨在把更多與人工智能相關的知識分享給公衆,從專業的角度促進公衆對人工智能的理解;同時也但願爲人工智能相關人員提供一個討論、交流、學習的開放平臺,從而早日讓每一個人都享受到人工智能創造的價值。