彭梅 胡必波 章家寶
摘要:隨著大數(shù)據(jù)時代的到來,其應(yīng)有價值也越來越廣泛,特別在“互聯(lián)網(wǎng)+”商業(yè)推廣中的“精準(zhǔn)營銷”更是發(fā)揮著重要的意義。該文利用用戶的搜索記錄文本為數(shù)據(jù),進行分詞處理、建模,采用SparkSql與hive進行整合(spark on hive)。首先,采用SparkSql對表中的元數(shù)據(jù)進行讀取,再使用Spark引擎進行底層數(shù)據(jù)的分析處理達到高效為有搜索記錄的用戶建立標(biāo)簽從而構(gòu)建用戶畫像的,達到構(gòu)建智能推薦目的。最后,利用幾種常用的分詞工具對本文測試,并使用Bayes模型比較了它們在項目中的效果。
關(guān)鍵詞:搜索記錄;分詞;用戶畫像;模型
中圖分類號:TP3 文獻標(biāo)識碼:A
文章編號:1009-3044(2020)33-0014-03
開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):
1 構(gòu)建用戶畫像的概述
1.1 構(gòu)建用戶畫像的意義
隨著大數(shù)據(jù)時代的到來,大數(shù)據(jù)在互聯(lián)網(wǎng)產(chǎn)業(yè)中得到廣泛應(yīng)用,特別是電商、廣告、服務(wù)搜索等方面的個性化和智能化的水平得到很大的提高,近年來大數(shù)據(jù)技術(shù)加快了對傳統(tǒng)行業(yè)應(yīng)用的滲透,驅(qū)動生產(chǎn)方式和管理模式進行變革,推動各行各業(yè)向網(wǎng)絡(luò)化數(shù)字化、智能化發(fā)展,使得在“互聯(lián)網(wǎng)+”這樣一個宏觀市場背景下,大數(shù)據(jù)技術(shù)對經(jīng)濟發(fā)展趨勢的影響愈發(fā)舉足輕重。
用戶畫像分析是指利用大數(shù)據(jù)技術(shù)的算法根據(jù)用戶在互聯(lián)網(wǎng)中行為推斷用戶特征的過程、手段和方法,同時也是對個體進行精確定位的手段,最后利用網(wǎng)聯(lián)網(wǎng)web、手機應(yīng)用等工具進行個性化推薦,個性化的搜索,在互聯(lián)網(wǎng)+商業(yè)推廣中的“精準(zhǔn)營銷”更是發(fā)揮著重要的意義。比如,你在某電商平臺瀏覽或購買商品的行為發(fā)生時,就足夠使得該網(wǎng)絡(luò)商家掌握了你在該電商平臺搜索記錄等數(shù)據(jù),他就可以利用大數(shù)據(jù)技術(shù)開發(fā)的第三方應(yīng)用軟件根據(jù)你購買商品的偏好和瀏覽軌跡進行同類產(chǎn)品精準(zhǔn)推薦,這也說明了利用用戶畫像可以做到“精準(zhǔn)營銷”,是有非常有商業(yè)價值的。
1.2 用戶畫像的具體作用
1)精準(zhǔn)營銷,分析根據(jù)用戶的行為,提取用戶喜好標(biāo)簽,然后利用互聯(lián)網(wǎng)等方式進行營銷。
2)用戶統(tǒng)計,根據(jù)高頻用戶行為分析全國高薪職業(yè)Top10。
3)數(shù)據(jù)挖掘,利用大數(shù)據(jù)技術(shù)構(gòu)建智能推薦算法,利用關(guān)聯(lián)規(guī)則計算,喜歡二次元的用戶通常喜歡什么風(fēng)格品牌,再使用大數(shù)據(jù)的聚類算法分析出喜歡二次元群體年齡段分布情況。
4)將傳統(tǒng)的用戶和市場的調(diào)研,利用大數(shù)據(jù)技術(shù)分析定位服務(wù)群體,完善產(chǎn)品運營,提供高水平的服務(wù)。
5)個性化服務(wù),利用大數(shù)據(jù)技術(shù)通過用戶畫像進行分析,發(fā)現(xiàn)形象、價格區(qū)間偏好比重最大,那么就給新產(chǎn)品提供了非常客觀有效的決策依據(jù)。
6)企業(yè)發(fā)展戰(zhàn)略,利用大數(shù)據(jù)進行業(yè)務(wù)經(jīng)營分析以及競爭分析可以及時調(diào)整企業(yè)發(fā)展戰(zhàn)略。
1.3基于查詢記錄的用戶畫像難點
1)數(shù)據(jù)源,用戶畫像需要有大量的數(shù)據(jù)支持,并且需要較為全面的數(shù)據(jù),基于查詢記錄的用戶畫像正是依靠非常多的用戶查詢記錄來進行用戶畫像,用戶繁多的查詢記錄可以給用戶進行較為全面的畫像。
2)業(yè)務(wù)結(jié)合,對于用戶畫像不能只存在于理論階段,需要筆者團隊根據(jù)實際的業(yè)務(wù)跟理論基礎(chǔ)結(jié)合起來。
3)動態(tài)更新,因為查詢業(yè)務(wù)是實時更新的用戶數(shù)據(jù),因此需要根據(jù)用戶實時的查詢數(shù)據(jù)來對于用戶的畫像結(jié)果進行實時更新,實現(xiàn)精準(zhǔn)推薦。
4)用戶畫像中的處理細節(jié)展示。
5)大家知道,用SparkSql整合hive來進行電商用戶畫像,即使用Hive將hql語句轉(zhuǎn)化為MapReduce來計算的設(shè)計方案很好,但因為Hive原因是基于MapReduce的,它會生成MapRe-duce Job,從而查詢提交到結(jié)果返回需要查詢時間非常長,我們可以利用Spark生成Spark Job的快速執(zhí)行能力來縮短HiveHQL的響應(yīng)時間。
6)本項目是利用用戶的搜索記錄文本為數(shù)據(jù),進行分詞處理、建模,采用SparkSql與hive進行整合(spark on hive)。首先,采用SparkSql對表中的元數(shù)據(jù)進行讀取,再使用Spark引擎進行底層數(shù)據(jù)的分析處理達到高效為有搜索記錄的用戶建立標(biāo)簽從而構(gòu)建用戶畫像的,達到構(gòu)建智能推薦目的。最后,利用幾種常用的分詞工具對本文測試,并使用Baves模型比較了它們在項目中的效果。
2 數(shù)據(jù)處理
2.1 停用詞處理
在實際的自然語言中,有很多的非實意詞語或者其他并沒有實際作用的詞語,這些詞語我們必須在分詞環(huán)節(jié)后進行過濾處理即停用詞處理。停用詞處理的關(guān)鍵在于停用詞的認(rèn)定,我們可以通過使用停用詞表,對停用詞進行單獨處理可以大大加快詞語切分速度以及后續(xù)的句法分析歸約速度,因此在進行分詞處理及使用的NLP技術(shù),如BOW,Count Vectorizer或F-IDF(詞頻和逆文檔頻率)特征計算的過程中,均保留了空格、標(biāo)點以及停用詞這些信息。
2.2 分詞處理
分詞就是將句子、段落、文章這種長文本,分解為以字詞為單位的數(shù)據(jù)結(jié)構(gòu),方便后續(xù)的處理分析工作。由于詞是信息載體的最小單位,所以分詞處理是關(guān)鍵,分詞目前已經(jīng)有很多開源工具可以使用,比如中科大的ICTCIAS.IKanalyzer. hanlp等等。很多分詞原理是用的CRF,即條件隨機場,通過對詞語的位置標(biāo)注和詞性等特征來進行分詞。
3 系統(tǒng)設(shè)計
本項目中的文本為用戶的搜索詞條記錄,這些詞條長度通常短,使得對樣本進行分詞效果便顯得較為重要。本文測試了幾種常用的分詞工具,并使用Bayes模型比較了它們在項目中的效果。
在本系統(tǒng)中,筆者團隊根據(jù)數(shù)據(jù)所產(chǎn)生的誤差對于數(shù)據(jù)進行后置處理也就是分析法中常說的錯誤分析,根據(jù)用戶的查詢記錄以及筆者團隊的算法得出了一些錯誤的樣本,做錯誤樣本分析的好處在于錯誤樣本分析可以給模型優(yōu)化指引方向。在進行錯誤樣本分析的過程中,我們也找到了一些規(guī)律:對于屬性值存在空缺的樣本,我們首先使用屬性值已知的樣本作為訓(xùn)練樣本,使用LR模型訓(xùn)練分類器,再對這部分屬性空缺樣本進行預(yù)測,從而補全空缺值。但我們發(fā)現(xiàn)在最終的兩級多模型融合得到的結(jié)果中,對于教育屬性空缺的樣例,它們的年齡和性別預(yù)測準(zhǔn)確率很低;對于年齡屬性空缺的樣例,教育預(yù)測準(zhǔn)確率很低;對于性別屬性空缺的樣例,教育預(yù)測準(zhǔn)確率很低。
3.1 用戶畫像建模
根據(jù)互聯(lián)網(wǎng)上個人用戶所填寫資料信息如:性別,年齡,喜好等等,我們利用大數(shù)據(jù)技術(shù)進行數(shù)據(jù)處理,主要包括數(shù)據(jù)預(yù)處理,降維,分類,回歸,聚類,模型選擇等去掉不用的屬性保留有用的數(shù)據(jù)信息,推算出用戶標(biāo)簽,進行精準(zhǔn)用戶畫像。比如大數(shù)據(jù)精準(zhǔn)營銷,涵蓋用戶的忠誠度可以分為忠誠型用戶(會購買,并且不會對比其他家)、偶爾型用戶(有優(yōu)惠才會購買)、投資型用戶、游覽型用戶、系統(tǒng)未能識別用戶。本項目用戶畫像基本表如表1所示。
3.3 系統(tǒng)分析流程
系統(tǒng)分析流程如圖2所示。
特征構(gòu)造方式:多角度、多粒度、多維度。
優(yōu)秀的特征群構(gòu)建體系:特征表達能力強、自動化程度高、泛化能力強。
3.4 系統(tǒng)所用到的技術(shù)
系統(tǒng)用到的技術(shù)有:scala、hhase、hive、hadoop、spark、flume、sparksql、python、storm、kafka、mysql等,這里需要用到Sparksql+hive。
Spark SQL主要目的是使得用戶可以在Spark上使用SQL,其數(shù)據(jù)源既可以是彈性分布式數(shù)據(jù)集或者文本、Hive、Json等外部的數(shù)據(jù)源。Spark on Hive是Spark SQL的其中一個分支也是使用Hive中HQL的解析、邏輯執(zhí)行計劃翻譯、執(zhí)行計劃優(yōu)化等邏輯,將物理執(zhí)行計劃從MR作業(yè)替換成Spark作業(yè)。Spark-Sql整合hive就是獲取hive表中的元數(shù)據(jù)信息,然后通過Spark-Sql來操作數(shù)據(jù)。
具體的整合步驟為:
1)先將hive-site.xml文件拷貝到Spark的conf目錄下,系統(tǒng)配置文件就能找到Hive的元數(shù)據(jù)以及數(shù)據(jù)存放位置。
2)準(zhǔn)備Mysql相關(guān)驅(qū)動,比如:mysql-connectoI-java-5.1.49.jar。
3)進行整合成功測試,先啟動hadoop集群,再啟動spark集群確保啟動成功之后執(zhí)行命令:/var/local/spark/bin/spark-sql-master spark://itcast01:7077 -executoI-memory lg -total-exec-utor-coreS。
4)如果可以進入到命令行里面說明可以運行成功了。
4 具體實現(xiàn)
1) SecondSession該類主要是先讀取到元數(shù)據(jù),然后切分可用數(shù)據(jù),讀取到表的結(jié)構(gòu),創(chuàng)建一個視圖,把需要的數(shù)據(jù)寫入到視圖里面去。首先先獲取到SparkSession類的實例化,需要傳人配置文件的信息,也就是如下代碼段所示:val spark= Spark-Session. builder(). appName(”FirstSessionAnalysis”). config(”spark.testing.memory”,2147480000”).master(”local[*]).getOrCreate0然后我們需要創(chuàng)建一個rdd來讀取元數(shù)據(jù)。井且創(chuàng)建表結(jié)構(gòu)valschemas=”cookie,event,ispaid, data_date, time”.split(”,”).map(fp=> StructField(fp,StringType》獲取到schemas然后運用前面創(chuàng)建的sparksession的實例化對象創(chuàng)建視圖,寫入關(guān)鍵信息即可。系統(tǒng)所用到的工具類:此類為該項目所用到的時間工具類,該類的第一個方法timeDiff主要是計算時間差,返回值為long類型。第二個方法為一個主方法,主要是測試timeDiff方法是否正確。并且打印出時間差。具體代碼實現(xiàn)為:val df= new Sim-pleDateFormat(”yyyy-MM-dd HH:mm:ss”) val st= df.parse(start.toString) val et= df.parse(end.toString) val diff= et.getTime -st.getTime diffSec= diff/1000
2)Hive以及hbase的sc ala類,類描述:運用scala語言來編寫hive以及hbase,首先定義一個判斷字符串是否為空的方法,也就是def nuIIHandle(str: String):String,返回值為string,然后再創(chuàng)建一個主方法。不需要返回值。需要傳人一個字符數(shù)組,然后判斷字符數(shù)組的長度,如果不滿足條件那么就會報錯,打印出錯誤的內(nèi)容。如果滿足條件,那么久創(chuàng)建一個SparkSession,需要傳人一些配置文件的信息。然后再用spark sql查詢,查詢之后對于map的結(jié)構(gòu)進行轉(zhuǎn)換,再依次傳人到hbase中。(要保證行鍵,列族,列名的整體有序,必須先排序后處理,防止數(shù)據(jù)異常過濾)將rdd轉(zhuǎn)換成HFile需要的格式,Hfile的key是Immu-tableBytesWritable,那么我們定義的RDD也是要以Immutable-BytesWritable的實例為key,然后保存到hdfs上面。
5 運行及系統(tǒng)測試
各模型的結(jié)果f1值如表所示。
6 小結(jié)
國家“十三五”規(guī)劃綱要里明確提出來要實施國家大數(shù)據(jù)戰(zhàn)略,為我國在大數(shù)據(jù)領(lǐng)域的未來發(fā)展繪制了宏偉的藍圖,開啟了我國大數(shù)據(jù)發(fā)展的新時代。隨著大數(shù)據(jù)及人工智能的到來,利用大數(shù)據(jù)+人工智能技術(shù)進行數(shù)據(jù)收集和分析,并根據(jù)需求建立模型,從而進行商業(yè)的數(shù)據(jù)分析與運營將獲取更多商用價值。
參考文獻:
[1]馬超.基于主題模型的社交網(wǎng)絡(luò)用戶畫像分析方法[D].合肥:中國科學(xué)技術(shù)大學(xué),2017.
[2]席巖,張乃光,王磊,等.結(jié)合大數(shù)據(jù)技術(shù)的用戶畫像推薦方法研究[J].有線電視技術(shù),2018,25(5):16-18.
[3]劉蓓琳,張琪.基于購買決策過程的電子商務(wù)用戶畫像應(yīng)用研究[J].商業(yè)經(jīng)濟研究,2017(24):49-51.
[4]李錦銳,章家寶,彭梅.基于大數(shù)據(jù)技術(shù)的求職用戶畫像系統(tǒng) 研究與設(shè)計[J].產(chǎn)業(yè)與科技論壇,2019,18(4):75-76.
[5]電商用戶畫像環(huán)境搭建一我是楠楠-5ICTO博客https://blog.5lcto.com/14473726/2439624.
【通聯(lián)編輯:代影】
作者簡介:彭梅(1975-),女,湖南保靖人,副教授,在職碩士研究生,主要研究方向:大數(shù)據(jù)與人工智能應(yīng)用開發(fā);胡必波(1979-),男,廣東廣州人,講師,在職碩士研究生,主要研究方向:大數(shù)據(jù)與人工智能應(yīng)用開發(fā);章家寶(1998-),男,廣東揭陽人,在讀本科,主要研究方向:大數(shù)據(jù)數(shù)據(jù)分析以及Javaweb系統(tǒng)編寫。