楊娜,趙廣杰,張多才,聞鵬
(西安航天天繪數(shù)據(jù)技術有限公司,陜西 西安 710061)
時空數(shù)據(jù)是具有時間和空間等屬性的數(shù)據(jù)統(tǒng)稱,時空數(shù)據(jù)無所不在,從空天地專用傳感器到物聯(lián)網中各類傳感器,會產生前所未有的時空大數(shù)據(jù)。以空間衛(wèi)星為例說明遙感大數(shù)據(jù),目前全球在軌衛(wèi)星總共約3 300 顆,涵蓋陸地資源、氣象海洋軍民商衛(wèi)星,可產生多源遙感衛(wèi)星大數(shù)據(jù)。多源遙感衛(wèi)星數(shù)據(jù)、地理測繪數(shù)據(jù)、全球高清影像數(shù)據(jù)、海量傳感器數(shù)據(jù)等組成空天地時空大數(shù)據(jù)。同時呈現(xiàn)過量的數(shù)據(jù)信息,用戶無法從中獲取所需要的部分,信息使用效率反而降低。傳統(tǒng)的搜索引擎往往是根據(jù)用戶輸入的數(shù)據(jù)字符串對信息進行檢索,難以滿足用戶的個性化需求,而推薦系統(tǒng)是解決信息過載最有效的方式。
學術界對推薦系統(tǒng)進行了大量研究,本文概述了針對大數(shù)據(jù)、用戶畫像、數(shù)據(jù)內容、地理空間位置推薦系統(tǒng)的相關研究?;诖髷?shù)據(jù)的推薦系統(tǒng)已經成為了移動互聯(lián)網的研究熱點,文獻[1-2]分別基于大數(shù)據(jù)計算框架設計了用戶畫像平臺、基于用戶畫像的推薦系統(tǒng);文獻[3-4]通過采集用戶信息建立用戶個人畫像,使用推薦算法向用戶推薦課程資源或閱讀資源,提高了推廣成功率;文獻[5]提出基于用戶興趣的個性化推薦系統(tǒng)設計方案,分析用戶訪問的新聞數(shù)據(jù),提取新聞的特征詞,建立用戶興趣模型,實現(xiàn)了新聞個性化推薦;文獻[6]設計和實現(xiàn)的推薦系統(tǒng),利用系統(tǒng)頁面訪問次數(shù)與頁面停留時間,產生向用戶推薦的頻繁項集;文獻[7]提出了基于數(shù)據(jù)挖掘的上下文感知個性化旅游推薦系統(tǒng),利用用戶照片地理位置上下文,提取用戶歷史旅游地點,對用戶感興趣的旅游地點進行推薦;文獻[8]設計了基于情景預測的實時營銷系統(tǒng),關注店面地理位置和考慮用戶消費周期,提高了推薦算法精度;文獻[9]通過視頻主題和用戶畫像自動地生成興趣播單,向用戶推薦電影,幫助用戶發(fā)現(xiàn)感興趣的視頻,提高平臺流量。以上文獻分別利用大數(shù)據(jù)平臺、推薦內容的地理位置及內容信息、用戶行為習慣等設計了推薦系統(tǒng),目前未檢索到針對時空大數(shù)據(jù)的推薦系統(tǒng)。
本文針對時空大數(shù)據(jù)共享場景,采用大數(shù)據(jù)計算框架和自然語言處理等技術,設計了時空大數(shù)據(jù)推薦系統(tǒng),并且考慮了產品數(shù)據(jù)的位置、時間信息,對用戶行為進行了分析。
Apache Spark 是一個開源的用于分布式計算的通用框架,為批處理、微批處理和交互式處理提供高性能的服務。Spark 被優(yōu)化在內存中運行,能夠更快地處理數(shù)據(jù)。Spark 涵蓋各種工作負載,包括批處理應用程序、迭代算法、流式處理和交互式查詢。
Spark Core 是Spark 框架的基礎通用執(zhí)行引擎,所有其他組件都是基于此引擎實現(xiàn),它在外部存儲系統(tǒng)中提供內存計算和數(shù)據(jù)集引用服務。
Spark Streaming 是Spark 核心API(Application Program Interface,應用程序接口)的一個擴展,用于流式數(shù)據(jù)處理。它利用Spark Core 的快速調度功能來執(zhí)行流式分析,對實時流式數(shù)據(jù)的處理具有可擴展性、高吞吐量、可容錯性等特點。能夠接收實時的輸入數(shù)據(jù)流,然后將這些數(shù)據(jù)切分為批數(shù)據(jù),提供給Spark引擎進行處理,Spark 引擎對數(shù)據(jù)進行處理生成運算結果。數(shù)據(jù)可以從許多來源(如Kafka,它是由Apache軟件基金會開發(fā)的一個開源流處理平臺)獲取,并且可以使用復雜的算法進行處理,這些算法用map、reduce、join 和window 等高級函數(shù)表示。
Spark SQL 將SQL(Structured Query Language,結構化查詢語言)查詢與Spark 程序結合,為結構化數(shù)據(jù)處理提供支持,將結構化數(shù)據(jù)作為Spark 中的RDD(Resilient Distributed Datasets,分布式數(shù)據(jù)集)進行查詢。它提供Python、Scala 和Java API,能夠運行SQL 查詢及復雜的分析算法。它提供多種方式與Spark SQL 進行交互,包括SQL、Dataset AP 等。
本文使用的自然語言模型有詞袋模型、詞向量模型。詞袋模型將所有詞語裝進一個袋子里,不考慮其詞法和語序的問題,即每個詞語都是獨立的,完全丟失語序關系,只要在上下文之內即可。word2vec 是基于神經網絡的語言模型,這種詞向量模型能夠將自然語言中的詞轉化為詞向量,語義相似的詞會有相似的向量表示。
word2vec 利用語料庫訓練出的word2vec 模型,可用來映射每個詞到一個向量,可用來表示詞對詞之間的關系。根據(jù)詞語相似度構建模型,對語法分析、文本分析等有很大的提升。利用語料庫,對word2vec 詞向量模型進行訓練,將完成的訓練模型文件保存,輸出詞向量模型文件。HanLP(Han Language Processing)是由一系列模型與算法組成的Java 工具包,設計詞袋模型、word2vec 詞向量模型等。
通過采集分析用戶行為數(shù)據(jù),引接時空產品數(shù)據(jù),設計時空大數(shù)據(jù)推薦模型,實現(xiàn)個性化推薦、熱門推薦、產品相似推薦等應用。系統(tǒng)包括數(shù)據(jù)采集層、數(shù)據(jù)處理層、模型層和應用層,其總體架構設計如圖1 所示。
圖1 時空大數(shù)據(jù)推薦總體設計
2.1.1 數(shù)據(jù)采集層
完成用戶行為數(shù)據(jù)、用戶屬性數(shù)據(jù)和外部數(shù)據(jù)源數(shù)據(jù)等各類數(shù)據(jù)的采集,是推薦系統(tǒng)模型分析的數(shù)據(jù)來源。其中用戶行為數(shù)據(jù)包括搜索日志數(shù)據(jù)、瀏覽記錄數(shù)據(jù),外部數(shù)據(jù)源采集包括資源目錄數(shù)據(jù)、產品數(shù)據(jù)、POI(Point Of Interest,興趣點)數(shù)據(jù)。
其中,POI數(shù)據(jù)是地理信息系統(tǒng)中的一個術語,是一切可以抽象為空間點的現(xiàn)實世界的實體,每個POI包含名稱、類別、坐標和分類4 方面信息,例如名稱為“可可西里鹽湖地區(qū)”就是一個POI。
2.1.2 數(shù)據(jù)處理層
對采集的數(shù)據(jù)進行分析處理,構建用戶畫像,提取數(shù)據(jù)產品特征,形成用戶畫像庫和產品特征庫。
2.1.3 模型層
分析用戶行為數(shù)據(jù)和產品數(shù)據(jù),結合用戶畫像庫和產品特征庫,構建基于用戶畫像的個性化推薦模型、最熱推薦模型、產品相似推薦模型,為應用層提供算法支撐。
2.1.4 應用層
基于模型層提供的算法,實現(xiàn)首頁個性化推薦、首頁最熱推薦、產品詳情頁相似推薦。
推薦系統(tǒng)由數(shù)據(jù)采集到推薦服務的實現(xiàn)流程如圖2 所示。
圖2 推薦系統(tǒng)流程
主要實現(xiàn)步驟如下:①用戶行為數(shù)據(jù)采集。通過埋點的方式,獲取用戶搜索產品、瀏覽產品詳情等行為數(shù)據(jù),將采集數(shù)據(jù)存儲到消息中間件中。②產品數(shù)據(jù)采集。利用ETL(Extract Transform Load,數(shù)據(jù)倉庫技術)工具,連接外部數(shù)據(jù)源,采集外部數(shù)據(jù)源產品數(shù)據(jù),將采集數(shù)據(jù)存儲到推薦系統(tǒng)產品庫中,實現(xiàn)產品數(shù)據(jù)采集。③用戶畫像構建。從消息中間件讀取用戶行為數(shù)據(jù),并解析存儲,同時生成用戶標簽,包括用戶角色標簽、用戶興趣標簽,構建用戶畫像庫。④產品特征提取。產品特征提取包括產品標簽提取和數(shù)據(jù)產品關聯(lián)。其中,產品標簽提取包括圖像的目標標簽、專題產品標簽、分類標簽;數(shù)據(jù)產品關聯(lián)包括產品數(shù)據(jù)與POI數(shù)據(jù)的關聯(lián)。⑤推薦服務引擎?;谟脩舢嬒竦膫€性化推薦、最熱推薦、產品相似推薦組成推薦服務引擎。其中,基于用戶畫像的個性化推薦是通過計算用戶興趣標簽與產品相似性,生成產品推薦列表;最熱推薦是基于Spark SQL 技術,對產品瀏覽數(shù)據(jù)進行統(tǒng)計分析,獲取當前最熱門的產品數(shù)據(jù);產品相似推薦是根據(jù)產品特征相似度,向用戶返回瀏覽產品的推薦列表,實現(xiàn)產品相似推薦。⑥推薦應用。將推薦結果通過Web 服務方式展示給用戶,用戶在系統(tǒng)頁面查看推薦結果,從而實現(xiàn)首頁推薦和詳情頁推薦。
數(shù)據(jù)采集層主要實現(xiàn)用戶行為數(shù)據(jù)采集、用戶屬性數(shù)據(jù)和外部數(shù)據(jù)源數(shù)據(jù)采集。
3.1.1 用戶行為數(shù)據(jù)采集
用戶行為數(shù)據(jù)主要包括搜索記錄數(shù)據(jù)和瀏覽記錄數(shù)據(jù),通過埋點的方式實現(xiàn)用戶行為數(shù)據(jù)采集,實現(xiàn)過程如下。
用戶在瀏覽器頁面輸入關鍵詞搜索數(shù)據(jù)或點擊數(shù)據(jù)詳情觸發(fā)埋點服務調用,將行為記錄數(shù)據(jù)發(fā)送到消息中間件,數(shù)據(jù)采集服務從消息中間件提取用戶行為數(shù)據(jù),將行為數(shù)據(jù)存儲到緩存數(shù)據(jù)庫中,實現(xiàn)行為數(shù)據(jù)采集。采用異步方式實現(xiàn)對用戶行為信息的采集,提高服務并發(fā)量。用戶行為數(shù)據(jù)格式如表1 所示。
表1 用戶行為數(shù)據(jù)格式
3.1.2 用戶屬性信息采集
用戶屬性信息主要包括用戶所屬部門、角色等信息,其中用戶角色分為圖像產品人員、專題產品人員等。通過用戶登入注冊服務,將用戶屬性信息輸入到消息中間件中,推薦系統(tǒng)從中間件中提取用戶屬性信息,采集用戶屬性信息。
3.1.3 外部數(shù)據(jù)源采集
外部數(shù)據(jù)源數(shù)據(jù)主要包括資源目錄數(shù)據(jù)、產品數(shù)據(jù)、POI數(shù)據(jù),其中產品數(shù)據(jù)包括圖像產品數(shù)據(jù)、專題產品數(shù)據(jù)等。采用ETL 采集工具,配置數(shù)據(jù)采集任務,定時采集數(shù)據(jù),將外部數(shù)據(jù)源產品信息采集到推薦系統(tǒng)數(shù)據(jù)庫中。采集任務配置的主要步驟包括增加數(shù)據(jù)源,選擇源端、目的端數(shù)據(jù)庫表,配置字段映射,提交采集任務配置和采集調度策略配置。定時調度執(zhí)行采集任務,實現(xiàn)對外部數(shù)據(jù)源數(shù)據(jù)的采集。
3.2.1 用戶畫像構建
用戶畫像是根據(jù)用戶社會屬性、用戶行為等信息抽象出的一個標簽化的用戶模型。構建用戶畫像的核心工作即是給用戶貼“標簽”,用標簽來描述用戶的行為和特征,而標簽是通過對用戶信息分析而得來的高度簡練的特征標識,是一種簡潔的用于描述用戶信息的方法。用戶畫像構建步驟如下。
用戶畫像標簽體系構建:通過分析時空大數(shù)據(jù)用戶靜態(tài)、動態(tài)數(shù)據(jù),建立數(shù)據(jù)分類體系,設計標簽形式。標簽形式分為用戶靜態(tài)標簽和用戶動態(tài)標簽。其中,用戶靜態(tài)標簽根據(jù)用戶的角色信息得到;用戶動態(tài)標簽是對用戶行為進行分析挖掘得到的,包括興趣點標簽、興趣事件標簽、興趣目錄標簽。用戶畫像標簽體系如圖3 所示。
圖3 用戶畫像標簽體系
用戶行為分析及動態(tài)標簽生成:結合構建的用戶標簽體系,從用戶行為數(shù)據(jù)中提取關鍵詞,獲取用戶感興趣的興趣點、興趣事件、興趣目錄。采用NLP(Nature Language Processing,自然語言處理)等技術對采集的用戶行為數(shù)據(jù)進行分析,生成用戶動態(tài)標簽,構建用戶畫像。
具體實現(xiàn)步驟為:基于采集的用戶搜索記錄數(shù)據(jù),利用NLP 技術提取興趣點、興趣事件、興趣目錄,并按搜索時間倒序存儲到redis 緩存庫中;利用用戶產品瀏覽記錄數(shù)據(jù),查詢獲取產品元數(shù)據(jù)信息,將用戶瀏覽記錄、產品元數(shù)據(jù)轉換為用戶、興趣點、事件、興趣目錄關鍵詞格式,按時間倒序存儲到redis 緩存庫中,形成用戶畫像庫。
3.2.2 數(shù)據(jù)產品特征提取
數(shù)據(jù)產品特征主要包括產品類型、關聯(lián)興趣點、關聯(lián)事件特征、所屬資源目錄。針對圖像產品、專題產品等不同數(shù)據(jù)類型,分別研制產品POI數(shù)據(jù)關聯(lián)模塊和專題產品提取模塊,實現(xiàn)不同數(shù)據(jù)的產品特征提取,將數(shù)據(jù)特征存儲到產品特征庫中。數(shù)據(jù)產品特征組成如圖4 所示。
圖4 數(shù)據(jù)產品特征組成圖
產品POI數(shù)據(jù)關聯(lián):針對圖像產品數(shù)據(jù),采用ETL將圖像產品元數(shù)據(jù)與POI數(shù)據(jù)關聯(lián),關聯(lián)的POI名稱作為圖像產品的特征。
具體實現(xiàn)步驟為:針對采集的圖像產品元數(shù)據(jù),提取圖像產品經緯度坐標,計算圖像經緯度坐標與興趣點坐標距離,當距離小于閾值,該興趣點與圖像產品是關聯(lián),將關聯(lián)的興趣點ID 與名稱存儲到圖像產品元數(shù)據(jù)庫中,實現(xiàn)圖像產品與POI數(shù)據(jù)關聯(lián)。
專題產品提?。横槍n}產品數(shù)據(jù),利用NLP 技術智能提取專題產品特征信息,提取興趣點-興趣事件-時間關鍵信息,并存儲到專題產品數(shù)據(jù)庫中;引接純文本專題數(shù)據(jù),提取文本數(shù)據(jù)中的摘要信息并存儲到產品庫中。
模型層包括基于用戶畫像的個性化推薦模型、最熱推薦模型和產品相似分析模型3 種推薦模型。其中,基于用戶畫像的個性化推薦模型為系統(tǒng)首頁“猜你喜歡”提供推薦服務接口,最熱推薦模型為系統(tǒng)首頁“最熱推薦”提供推薦服務接口,產品特征相似度分析模型向數(shù)據(jù)產品詳情頁提供推薦服務接口。
通過應用層展示時空數(shù)據(jù)共享推薦系統(tǒng)推薦的數(shù)據(jù),包括首頁個性化推薦、首頁最熱推薦和產品詳情頁相似推薦3 種推薦應用。
3.4.1 首頁個性化推薦
通過基于用戶畫像的個性化推薦模型,實現(xiàn)個性化推薦Web 服務接口,該服務返回topn個與用戶標簽相似度最高的數(shù)據(jù)產品,將個性化推薦數(shù)據(jù)展示到系統(tǒng)首頁“猜你喜歡”推薦列表下。
3.4.2 首頁最熱推薦
通過最熱推薦模型,對用戶行為數(shù)據(jù)進行統(tǒng)計分析,實現(xiàn)最熱推薦服務。用戶訪問系統(tǒng)首頁,發(fā)起最熱推薦請求,返回推薦請求數(shù)據(jù),將最熱推薦數(shù)據(jù)展示到系統(tǒng)首頁“最熱推薦”列表下。
3.4.3 產品詳情頁相似推薦
用戶通過系統(tǒng)查詢檢索功能,獲取數(shù)據(jù)產品列表,點擊感興趣的產品,進入產品詳情頁,詳情頁面右側部分,展示與產品相似的數(shù)據(jù)產品列表。
通過word2vec 語義查詢,構造產品相似推薦模型,實現(xiàn)產品相似推薦服務,該服務接口返回與瀏覽產品最相似的topn個產品列表,向用戶展示推薦的相似產品列表。
在基于用戶畫像個性化推薦模型、最熱推薦模型和產品相似分析模型基礎上,設計推薦服務引擎,為應用層提供推薦接口。
若數(shù)據(jù)產品特征與用戶標簽相同或者相似,那么它們就是有內在相關性的。所以可以利用已提取的數(shù)據(jù)產品特征,分析數(shù)據(jù)產品與用戶標簽的相似程度,進而得出與用戶相似度高的數(shù)據(jù)產品列表。
基于數(shù)據(jù)處理層生成的用戶畫像庫和數(shù)據(jù)產品特征庫,構建基于用戶畫像的個性化推薦模型,對用戶產品喜好程度進行預測,向用戶推薦感興趣的數(shù)據(jù)。
根據(jù)發(fā)起推薦請求用戶ID,獲取該用戶的標簽,計算用戶標簽與數(shù)據(jù)產品特征的相似度,并對用戶的相似產品進行倒序排列,獲取最相似的topn個產品。與用戶最相似的topn個數(shù)據(jù)產品計算API如下:
式中:x、y為用戶標簽內容和最相似產品個數(shù)變量。
基于用戶畫像個性化推薦的實現(xiàn)過程如圖5所示。
圖5 基于用戶畫像個性化推薦的實現(xiàn)過程
實現(xiàn)步驟如下:用戶u 訪問系統(tǒng)首頁,發(fā)起個性化推薦請求;系統(tǒng)接收到推薦請求,根據(jù)用戶的ID 從用戶畫像庫查找到用戶u 的畫像標簽;根據(jù)數(shù)據(jù)產品特征庫,進行數(shù)據(jù)產品與用戶畫像的相似度計算;將計算得出的產品相似度倒序排列,向用戶返回topn個相似度最高的產品列表。
對采集的用戶行為數(shù)據(jù)進行分析,統(tǒng)計數(shù)據(jù)產品訪問次數(shù),構建最熱推薦分析模型。實現(xiàn)過程如下:利用Spark SQL 框架,研制最熱推薦分析模塊,從消息中間件中讀取用戶行為數(shù)據(jù),基于統(tǒng)計模型進行數(shù)據(jù)產品訪問次數(shù)統(tǒng)計,將分析結果存儲到Redis 緩存數(shù)據(jù)庫中。用戶發(fā)起最熱推薦請求,系統(tǒng)從緩存中獲取訪問次數(shù)最高的n個數(shù)據(jù)產品,通過應用服務向用戶展示推薦列表。
用戶已經瀏覽過或正在瀏覽當前產品,因此剔除候選集中當前瀏覽的產品。獲取候選集產品列表,根據(jù)word2vec 詞向量模型,將產品特征轉為詞向量,得到產品特征詞向量列表??梢杂靡粋€詞或多個詞的查詢語句來得到產品特征庫中與查詢產品特征語義上最相似的topn個產品(產品ID 及其相似度),實現(xiàn)過程如下。
4.3.1 構造產品文檔向量模型
首先需要加載一個預先訓練好的word2vec 詞向量模型(通過開源網站下載獲取模型文件),然后加載待查詢的產品列表,將產品特征轉化為特征向量。
產品特征向量是基于詞向量,將一個產品特征列表轉換成向量的模型(詞袋模型)。每個產品由多個特征標簽組成,分別將產品特征標簽轉化為詞向量,詞向量相加組成產品特征向量,計算公式如下:
式中:y為產品的特征向量;xi為產品特征標簽向量變量。
將產品列表中的每個產品特征轉化為產品特征向量,組成產品特征向量集合,計算公式如下:
式中:map(y)為計算得出的產品特征向量集合;yj為產品特征向量變量。
4.3.2 語義查詢
可以用一個產品特征詞或多個特征詞的查詢語句來得到產品特征向量集合中與查詢特征語義上最相似的topn個產品(ID 及其相似度)。語義查詢步驟如下。
根據(jù)產品特征進行onehot 編碼并轉換為詞袋向量,根據(jù)word2vec 詞向量模型,將待推薦產品特征轉為特征向量,然后通過cosine 相似度公式,計算產品詞向量列表與待推薦產品詞向量的相似度。相似度計算公式如下:
式中:T(x,y)為產品x與產品y的相似度;xi和yi分別為產品x與產品y的特征值變量。
計算該產品特征與產品列表的相似度,倒序排列,獲取相似度最高的n個產品,向用戶返回產品推薦列表。
本文分析了用戶的行為數(shù)據(jù),根據(jù)用戶的興趣特點和瀏覽行為,結合產品特征信息,設計了基于用戶畫像的推薦模型、最熱推薦模型和產品相似推薦模型,基于推薦模型實現(xiàn)推薦應用向用戶推薦感興趣的產品信息。隨著產品種類擴展和數(shù)據(jù)量增加,下一步采用離線任務、實時任務相結合的方式設計推薦系統(tǒng),離線任務計算生成推薦候選集,實時任務從候選集中過濾排序推薦列表。進一步根據(jù)系統(tǒng)長時間運行數(shù)據(jù),計算推薦算法的準確率和召回率,提高算法精度和系統(tǒng)體驗,從而更好地服務于時空大數(shù)據(jù)共享服務平臺。