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