郝勝男 趙領杰
摘要:該文在研究了推薦系統和搜索技術以后,提出了一種利用搜索引擎來進行數據召回的方式,首先采用關鍵詞抽取算法對用戶的歷史記錄進行概率分析,抽取出個性化的關鍵詞并給到ElasticSearch搜索引擎進行候選集的召回,然后提出一種特征融合的方法對樣本集進行了整合,最后利用機器學習算法對樣本進行了訓練并預測輸出。與協同過濾和純粹的基于內容的推薦系統進行對比,利用基于ElasticSearch的推薦系統架構將推薦系統的點擊率提高到了17.5%。
關鍵詞: 推薦系統; ElasticSearch; 機器學習; SVM; GBDT
中圖分類號:TP391 文獻標識碼:A 文章編號:1009-3044(2017)36-0230-03
Abstract: Based on the research of the recommendation system and search technology, this paper puts forward a method of data to recall the use of search engines, the first probability analysis using keyword extraction algorithm to extract the user record, and personalized keywords to the ElasticSearch search engine recall candidate set, the sample sets for the integration method a fusion feature is then proposed, finally using machine learning algorithm to training samples and predictive output. Compared with collaborative filtering and pure content-based recommendation system, the recommendation rate of recommendation system is increased to 17.5% by using ElasticSearch based recommendation system architecture.
Key words: recommendation system; ElasticSearch; machine learning; SVM; GBDT
1 概述
21世紀以來,信息技術的不斷發展和互聯網規模的不斷擴大,使得數據量有了指數級的增長,不同的用戶在接受來自世界各地海量的數據,如何有效地將數據轉化為信息,成為一個亟待解決的問題[1]。從用戶的角度來看,用戶更加想接收到對自己有用的信息,或者自己感興趣的信息,而不是海量信息的集合;從信息提供者的角度來看,想提供一種對于不同用戶展示不同信息的平臺,而這個展示的信息是跟用戶緊密聯系的。在這種情況下,推薦系統應運而生[2]。推薦系統的產生主要完成以下的工作內容:將用戶和信息緊密結合,對于不同的用戶進行個性化的定制,通過分析特定用戶的偏好,幫助用戶從海量數據中篩選出用戶偏好的信息,然后將這些個性化的信息呈現給用戶。
推薦系統最核心的部分為推薦算法,本文首先研究了當前最流行的推薦算法,主要包括基于內容的推薦算法,基于協同過濾的推薦算法。其中還包括在模型建立過程中用到的數據降維方法,特征提取方法等。這些算法在不同的場景應用中都會有各自的優缺點,因此會有不同的適用范圍。在用戶使用有一定基礎的情況下,基于物品的協同過濾算法在目前來說是一種比較穩定的通用推薦算法,它預測準確度較高,而且算法的解釋性較高。
搜索技術是一項比較成熟的技術,它將因特網上的信息進行整合,對用戶開放查詢。搜索引擎主要工作原理分為三部分:從網絡中搜集數據;將數據進行整理;接受用戶的查詢。搜索引擎有著快速返回搜索結果的優勢,因此可以將搜索技術應用于實時推薦系統中。這樣對于推薦系統的實時性和準確性都會有一定的提高。
本文對基于搜索技術的推薦系統關鍵技術進行研究,對于數據到推薦結果之間進行了搜索和推薦兩步篩選,并對實時推薦系統提供了一種通用架構。在推薦算法的選用中,提供了一種將推薦問題轉化為二分類問題的特征合并方法,與普通的基于協同過濾的算法相比較,解決了“冷啟動”的問題,同時在算法內部隱含用戶和物品聚類的數學依據,對于數據量大而用戶量少的推薦場景提高了推薦準度,也解決了“冷啟動”問題。
2 基于ElasticSearch的推薦系統架構
基于ElasticSearch的推薦系統架構,將推薦任務分為兩步排序,第一步排序使用高并發的ElasticSearch搜索引擎返回相關的候選集,第二步通過機器學習算法對候選集進行排序最終生成推薦結果。
搜索引擎的輸入為關鍵詞,因此本文中推薦系統的架構第一步是搜集到用戶的歷史記錄以后進行關鍵詞的提取,關鍵詞的提取采用了更改的TF-IDF算法,提取到多維度的關鍵詞之后放到ElasticSearch中搜索,會得到不同維度的搜索結果,從而解決了推薦系統的多樣性的問題,再進行第二步推薦算法的排序,這里采用了不同的機器學習的算法,離線訓練的模型持久化到內存,然后對候選集進行二次排序最終得到推薦列表展示給用戶。
搜索技術主要解決實時推薦系統的速度問題和搜索結果的多樣性問題,推薦算法主要解決推薦結果的個性化問題。
2.1 基于用戶的ElasticSearch關鍵詞抽取
關鍵詞抽取其實是TF-IDF的一種在應用場景的實現,將某一個用戶的歷史記錄作為一整篇文檔,所有數據作為總的文檔。用戶所有的歷史記錄數目為M,其中一條記錄標記為[I={i1,i2,...,in}],公式中i為記錄中的詞。endprint
2.2 推薦系統的機器學習算法排序
用戶與物品之間的信息協同過濾等算法之外,還可以使用統計學習方法,例如分類和回歸來做排序,為了實現這種方式,本文提供了一種將用戶信息和物品信息提取特征并融合的算法。將融合后的特征作為正負樣本來用在分類或者回歸上面。
用戶在系統中留下的瀏覽和點擊日志分別表明了用戶對于物品的不同喜好,可以根據用戶的不同隱性反饋計算出用戶對于物品的顯性得分,然后根據已知的用戶-物品的得分來做回歸,而本文中使用的是分類方法,即用戶對于物品有點擊或者瀏覽行為即為正樣本,對于負樣本的選擇可以使用隨機方法,這樣有了正負樣本以后就可以使用LogisticRegression等二分類方法來做排序。在做分類和回歸之前,本文特征提取算法可以描述為以下算法:
這樣就得到了正負樣本,就可以使用分類方法來對候選集做二次排序得到最終推薦列表。
正負樣本生成:在特征向量生成過程中,可以采用用戶-物品特征融合的方式進行正負樣本的提取,用戶的基本信息的特征向量為User,物品的特征向量為Item,若用戶對物品感興趣則正樣本可以選擇為
2.3 基于ElasticSearch的推薦系統架構設計
推薦系統架構設計如圖1所示。
系統總架構分為一下幾個模塊:表現層,分析層,推薦引擎層。表現層是用戶與推薦系統連接的橋梁,用戶可以通過瀏覽,點擊等行為留下自己的行為信息,而日志分析層則可以通過這些點擊瀏覽行為推斷出用戶的基本信息或者在表現層誘導用戶去填寫自己的基本信息。日志分析層還承擔了評價用戶對某些物品的喜好程度,通過不同的點擊瀏覽次數來對喜好程度進行分級。推薦引擎模塊拿到分析模塊的分析結果來對用戶未瀏覽過或者點擊過的物品進行評價,將評價高的物品推薦給用戶。
整個推薦系統借用了搜索引擎的信息聚合和排序的功能,利用搜索引擎可以快速將海量的物品列表排序并取回一小部分的候選集。在搜索引擎的選擇上,使用了開源的ElasticSearch搜索引擎,ElasticSearch是一個基于Lucene的搜索服務器。它提供了一個分布式多用戶能力的全文搜索引擎,基于RESTful web接口,能夠達到實時搜索,穩定,可靠,快速,安裝使用方便。而且ElasticSearch提供了不同種文檔相關度的排序,使得與搜索詞更加相近的文檔排序更高,內部使用倒排索引來實現,從而達到了快速的效果。
3 效果對比
3.1 機器學習算法的效果對比
利用上文的機器學習算法,以及特征融合方法,本文抓取了某客戶管理系統的用戶信息,并對于用戶的特征以及物品的特征進行了提取融合,分成了訓練集和測試集合進行了算法的對比,主要對比了算法的AUC和算法線上預測的速度。
橫軸是訓練集合的大小,縱軸是AUC值,從圖中可以看出,隨著訓練集合的增多,AUC的值整體會提升,說明算法的準確性與數據的多少有直接關系,達到一定量以后,準確性達到平穩狀態,由于機器的性能問題,SVM算法在訓練到10萬量級的時候花費時間過長,因此沒有曲線,說明SVM算法較其他算法計算復雜度要高;整體對比上,GBDT算法的AUC一直高于其他算法,最終可以達到AUC=0.85的準確性。
隨后比較了三種模型在線上運行對于不同數量召回集合預測的速度對比,如表1所示:
表中可以看出,隨著召回數量級的增多,算法的預測時間都會增長,邏輯回歸花費的時間最短,而SVM算法花費的時間已經超出了線上推薦系統的要求,GBDT算法的時間勉強可以接受。
3.2 推薦效果對比
本文抓取了某客戶管理系統的用戶信息,進行了協同過濾推薦,基于內容的推薦和基于ElasticSearch的推薦的效果推薦,在同樣每次為用戶展示20條推薦結果的條件下,三種算法的點擊率如表2所示。
從線上點擊率來看,基于ElasticSearch的推薦系統架構能夠為用戶帶來更高的點擊率,因此效果要略好于純粹的協同過濾和基于內容的推薦系統。
4 結論
本文在研究了關鍵詞抽取和ElasticSearch搜索引擎的搜索性能以后,提出了一種關鍵詞抽取方式,利用不同用戶的歷史記錄來抽取關鍵詞并借助ElasticSearch來召回候選集,大大提高了召回速度,并提出一種用戶-物品特征融合的方式,借助機器學習算法來對候選集進行了重新排序,并將結果返回給用戶,并與協同過濾和純粹的基于內容的推薦系統進行了比較,提高了推薦系統的點擊率。
參考文獻:
[1] 劉建國, 周濤, 汪秉宏. 個性化推薦系統的研究進展[J]. 自然科學進展, 2009(19):1-15.
[2] PAUL Z, CHRIS E. Understanding Big Data[M]. McGraw-Hill Osborne Media, 2011.
[3] 常江. 基于ApacheMahout的推薦算法的研究與實現[D]. 成都:電子科技大學, 2013.
[4] 項亮. 推薦系統實踐[M]. 北京:人民郵電出版社, 2012.
[5] 任磊. 推薦系統關鍵技術研究[D]. 上海:華東師范大學, 2012.
[6] 劉源. 基于云計算的分布式推薦引擎算法研究[D]. 成都:電子科技大學, 2013.
[7] ADOMAVICIUS G, TUZHILIN A. Toward the Next Generation of Recommender Systems: A Survey of the State-of-the-Art and Possible Extensions[J]. IEEE Trans, 2005(17):734-749.
[8] GOLDBERG D, NICHOLS D. Using collaborative filtering to weave an information tapestry[J]. Commun ACM, 1992, 35(12):61-70.
[9] RESNICK P, LAKOVOUL N, SUSHAK M. GroupLens:An Open Architecture for Collaborative Filtering of Netnews[C]. In Proceedings of ACM 1994 Computer Supported Cooperative Work, Boston, 1994:175-186.