(全文共計3667字,閱讀全文預計須要10分鐘)
前端
爲何咱們須要推薦系統?程序員
隨着科技的進步、時代的發展,人類面臨的主要問題已經從信息資源匱乏轉變成信息資源氾濫。信息從未像如今這般觸手可及。但伴隨而生的問題是,咱們很容易就被淹沒在信息的汪洋大海里。所以,咱們須要某種工具來幫助過濾冗餘信息。算法
一位研究互聯網對社會和經濟影響的美國做家Clay Shirky (克萊·舍基)曾說過一句話:「人類面臨的問題並不是信息氾濫,而是信息過濾失效。」推薦系統正是經過建立信息過濾器,爲人類提供幫助。推薦系統的做用不可估量,Netflix甚至舉辦了一場名爲Netflix Prize的活動。該公司事先公佈了一個包含部分用戶信息及用戶對某些電影評分信息的數據集,要求參賽者根據該數據集搭建一個推薦系統,預測其餘用戶對這些電影的評分,比賽獲勝者能拿到100萬美圓的獎金。最終結果公佈後,獲勝者的算法要比Netflix自家的算法精準10%。數據庫
那麼推薦算法的魅力到底是什麼呢?於用戶而言,推薦系統猶如「智能」過濾器,幫助他們快速找到心儀之物。於企業而言,推薦系統之內容爲驅動,爲企業創收。
機器學習
亞馬遜、Spotify(目前全球最大的流行音樂服務商)、Instagram(在線圖片及視頻分享的社交軟件)和Netflix等公司都利用推薦系統幫助用戶瞭解自家網站上的種種產品——書籍、電影、電子產品等。推薦系統經過分析個體用戶的行爲,向用戶推薦對他們可能有用的產品,從而創造用戶價值。這篇文章以Klipfolio公司(加拿大一家軟件生產公司)Hack Day(專屬於程序員和軟件開發者等互聯網工做者的比賽)當天的工做爲例,教你如何經過簡單五步,就能快速上手搭建推薦系統。工具
當前的主流推薦系統有哪些?學習
目前有兩種主流的推薦算法能幫助用戶有效過濾信息。測試
第一種是基於物品的協同過濾算法。這種算法首先分析物品的內容屬性,而後向用戶推薦與他們以前購買的商品類似的物品。若是用戶標記電影A爲「喜歡」,推薦系統還會向他推薦具備相同屬性的其餘電影。這些屬性可能包含:電影製片人、主演、電影類型、時長、公映日期等。優化
第二種是基於用戶的協同過濾算法,這同第一種算法的推薦原理不一樣。這種算法首先篩選出具備相同興趣愛好的用戶集,而後向目標用戶推薦該用戶集喜歡的、且他沒有使用過的商品。這種算法的推薦原理基於以下假設:具備類似用戶行爲的用戶通常也有類似的興趣愛好。網站
如何快速入門搭建推薦系統?
Klipfolio公司在向用戶推薦商品時,使用的是基於用戶的協同過濾系統。新手小白在初學搭建推薦系統時,只須要照着這五步走:
1、 收集整理用戶和產品的信息
這一步相當重要。咱們要了解咱們的目標用戶以及目標用戶正在使用的產品。本文咱們將討論Klipfolio 公司的產品Klip(一款計算機數據管理插件)。這款產品實現了數據可視化,將用戶鏈接到產品上的數據做爲驅動。
首先咱們須要瞭解Klip和 Klip的用戶屬性之間的聯繫。生產數據庫中存放着可以鏈接用戶與用戶所使用的產品的數據表。經過基礎查詢,咱們能夠抽取這些信息,將其轉換爲標準(規範)形式並加載到內存表中。與生產數據庫相比,經過內存表查詢信息更加迅速、便捷。
這一過程一般被簡稱爲ETL(數據倉庫技術,即抽取-轉換-加載)。
信息收集相當重要,將信息整理成標準表單一樣重要。有了標準表單,咱們很容易就能對客戶及其使用的產品與其餘客戶及其餘產品進行比較。
在該場景下,咱們用數據表中的N維行向量來表示每位用戶。N 維列向量則與每個可能出現的插件對應。若是某一用戶使用了所在列的插件, 那麼會被標記爲「已使用」,反之則是「未使用」。這兩種結果分別用數值1和0來標記。上述樣本數據表示爲以下形式:
數據經轉換後,下一步即是討論如何向目標用戶推薦Klip插件了。在此咱們假設目標用戶爲用戶A。
2、 比較目標用戶和其餘用戶
有了上述標準表單,咱們要作的下一步就是添加新功能,比較用戶A 和其餘用戶。該功能可以篩選出與用戶A高度類似的用戶集以及這些用戶使用過的Klip插件。
咱們能夠利用常規的機器學習庫(如Python的scikit-learn)以及鄰近算法,分析轉換後的數據並計算出用戶集。該算法使用了線性代數中最多見的距離度量(如歐幾里得),計算一組向量(如上述圖表)與單個查詢向量(如表明用戶A 使用過的Klip的向量)之間的類似性。
有了上述模型,只要咱們輸入一個具備相同N維屬性的查詢向量,便能從原始數據集中獲得一個與用戶A高度類似的用戶集。假設用戶A 分別使用過「谷歌分析-受衆指標」插件與「谷歌分析-競選漏斗」插件。
上述標準表單中的查詢向量與下圖相似,能夠用做輸入以接收用戶列表(以其在表中的行號表示)。數值0,1,2分別對應原始數據庫中的三位用戶Lianne, Luke 和 Alex。
3、 添加新功能,篩選與用戶A歷史使用產品相似但未被該用戶使用的產品
咱們已經識別出Lianne, Luke和 Alex三位用戶與目標用戶的類似度最高,下一步即是計算這三位用戶的向量,從而篩選與其餘用戶歷史使用商品相似而用戶A未使用的Klip。
運用基礎集合論,咱們能夠獲得目標用戶A曾使用的Klip集和其餘類似用戶曾使用的Klip集。如:
在示例數據庫中顯示以下:這些產品即是算法向目標用戶推薦的產品。這種推薦邏輯源於這一事實:目標用戶A曾使用過其餘類似用戶使用過的某一產品, 那麼他可能會對他們曾使用的其餘產品也有興趣。
4、 排序與推薦
若是想讓目標用戶A對新產品感興趣,那麼便要把與用戶A類似的用戶集曾使用過的產品排在前列,從而提升推薦的準確度。
咱們能夠將推薦給目標用戶A的產品進行排序,從而擴充推薦系統。使用同一產品的類似用戶越多,該產品的排序越靠前。背後的推薦邏輯源於:若是與目標用戶A類似的衆多用戶使用該產品,那麼目標用戶A也有可能使用該產品。
到了這一步,系統便向用戶A 推薦在推薦列表中排序靠前的產品。
5、 評估與測試
不要指望推薦系統一次就能生成正確的產品推薦結果。咱們要從上述第一步開始,對用戶及用戶使用的產品不斷進行測試,從而提升推薦系統的準確度。
具體來講,咱們須要從目標用戶中選出一小部分用戶做爲測試用戶,與其他目標用戶進行比較。在測試的過程當中,首先剔除測試用戶曾經使用的一些產品數據,而後重複上述步驟2-5,最後檢驗系統推薦的產品與以前剔除的產品是否一致。若是推薦系統再次向測試用戶推薦了以前被剔除的產品,那麼能夠說該推薦系統的準確性較高。
示例數據庫中一個典型的場景以下圖所示:
在這個場景中,咱們將在包含用戶Lianne, Alex 和Jeremy的數據集的基礎上,爲用戶Luke 和Ali查詢推薦結果。若是該推薦系統向測試用戶Luke和Ali從新推薦的產品與以前被剔除的產品對應,那麼該推薦系統的有效性較高。
小結
歸納來講,搭建基於用戶的協同過濾推薦系統分五步走:
1. 收集整理系統中每一位用戶的產品使用狀況,並以標準形式存儲收集到的數據,便於後續對不一樣用戶的產品使用狀況進行比較。
2. 對比目標用戶與與其餘用戶目前的產品使用狀況。運用最近鄰算法,計算表明每一用戶產品使用狀況的向量,從而得出與目標用戶類似度最高的推薦模型。
3. 收集與目標用戶類似度最高的用戶集使用的全部產品,創建產品集;剔除該產品集中用戶A正在使用的產品,將該產品集中剩餘產品做爲推薦產品候選集。
4. 計算推薦產品候選集中不一樣候選產品出現的頻次,並據此排序。產品出現頻次越高,排序越靠前。
5. 交叉驗證推薦系統。將原始數據隨機分爲兩組,一組作爲訓練集,一組作爲測試集,利用訓練集訓練分類器,而後利用測試集驗證模型,記錄最後的分類準確率。
知道了這五步,就找到了快速上手搭建推薦系統的門路。咱們要作的下一步即是改進推薦系統,優化網頁信息過濾的用戶體驗,提升該產品的用戶留存。
不過,若是以爲上邊的方法仍是有難度的話,還有一個好辦法——找先薦!
先薦是AI明星公司第四範式出品的、 基於「第四範式先知」機器學習平臺和其餘自主專利研發的、 集內容上傳、內容管理、內容分發、推薦干預、前端渲染於一體的一站式推薦服務可視化平臺。先薦支持PC、WAP、 APP全平臺接入,幫助客戶從0到1搭建推薦系統,顯著提高用戶活躍、留存、觀看時長等重要業務指標。當前主要提供如下三種推薦服務:
一、個性化推薦:千人千場千面的推薦,先薦基於機器學習強大的意圖識別能力,爲每一個用戶在不一樣時間不一樣地點推薦最適合當前場景的內容,常見於網站首頁的「推薦」、「猜你喜歡」等模塊。
二、關聯推薦:基於當前內容的語義分析,推薦與當前內容類似的內容,以提升站內停留時長和人均閱讀篇數,常見於內容詳情頁底部或側邊欄的「相關推薦」模塊。
三、熱門推薦:基於全站內容的閱讀量統計,進行全局、分頻道或分地域排行,常見於首頁或內容詳情頁的「熱門文章」、「排行榜」等模塊。
同時,先薦後臺也提供了豐富的推薦配置和數據統計功能,支持客戶隨時瞭解推薦狀態,精確控制本身的推薦服務。
目前,先薦已服務過近千家客戶,已與新華社、人民日報、環球網、鈦媒體、虎嗅、億歐、CSDN等三百餘家媒體開展了深刻合做,成功地幫客戶突破了在內容推薦上的瓶頸。
若有興趣瞭解先薦更多內容,歡迎訪問www.tuijianxitong.cn