杜成喜 郭瑞祥 左彬靖 肖明 王杰
摘 要:隨著互聯(lián)網(wǎng)的高速發(fā)展,期間衍生出了一系列改變?nèi)藗兩畹募夹g(shù)產(chǎn)物?;ヂ?lián)網(wǎng)移動支付的迅速普及,我們享受到越來越多的生活便利。其中推薦系統(tǒng)最具代表性,它的出現(xiàn)使得人們不再像過去那樣通過搜索引擎從海量的數(shù)據(jù)中查找自己所需要的信息,而是根據(jù)推薦系統(tǒng)主動提供的物品信息進(jìn)行選擇。這一局面的改變,得益于人們不斷地在推薦算法上進(jìn)行研究而取得的成果。在真實生活中,當(dāng)用戶在商場環(huán)境中打開手機的時候,存在定位信號不準(zhǔn)、環(huán)境信息不全、店鋪信息缺失、不同店鋪空間距離太近等挑戰(zhàn),因此,如何精確地判斷用戶所在商鋪是一個難題,這也是這一方面推薦系統(tǒng)的難題之一。文章研究了基于XGBoost的用戶定位與商鋪推薦。
關(guān)鍵詞:商鋪推薦;用戶定位;分布式
隨著“互聯(lián)網(wǎng)+”的發(fā)展與興起,傳統(tǒng)的各行各業(yè)正在深受其影響,飛速發(fā)展,這些也深刻影響著人們的生活,有一些生活中的典型案例,如:當(dāng)你走進(jìn)某家商場的某家餐廳時,手機會自動彈出附近商家的優(yōu)惠券;當(dāng)你走進(jìn)某家衣服店時,手機可以自動推薦你所喜歡的衣服;當(dāng)你經(jīng)過一些地方時,手機會提醒你附近是否有自己喜歡的東西,在我們?nèi)粘I暇W(wǎng)購物時,每個人的購物軟件所推薦的物品也是根據(jù)個人的日常愛好和生活習(xí)慣來進(jìn)行推薦,從而在一定程度上實現(xiàn)“千人千面”,以上種種,都是推薦系統(tǒng)在人們?nèi)粘I钪械囊恍w現(xiàn)。在上述所列舉的例子中可以看出,要想根據(jù)用戶的消費信息實現(xiàn)精準(zhǔn)推薦,在商場中精確地定位用戶當(dāng)前所在店鋪或者位置非常關(guān)鍵,而在本文中就是希望能夠通過用戶的手機WiFi等信號信息,精準(zhǔn)定位用戶的位置,從而實現(xiàn)對不同位置的用戶進(jìn)行精準(zhǔn)推薦。
根據(jù)如何抽取參考特征,我們可以將推薦引擎分為以下四大類。
(1)基于內(nèi)容的推薦引擎:它將計算得到并推薦給用戶一些與該用戶已選擇過的項目相似的內(nèi)容。例如,當(dāng)你在網(wǎng)上購書時,你總是購買與歷史相關(guān)的書籍,那么基于內(nèi)容的推薦引擎就會給你推薦一些熱門的歷史方面的書籍。
(2)基于協(xié)同過濾的推薦引擎:它將推薦給用戶一些與該用戶品味相似的其他用戶喜歡的內(nèi)容。例如,當(dāng)你在網(wǎng)上買衣服時,基于協(xié)同過濾的推薦引擎會根據(jù)你的歷史購買記錄或是瀏覽記錄,分析出你的穿衣品位,并找到與你品味相似的一些用戶,將他們?yōu)g覽和購買的衣服推薦給你。
(3)基于關(guān)聯(lián)規(guī)則的推薦引擎:它將推薦給用戶一些采用關(guān)聯(lián)規(guī)則發(fā)現(xiàn)算法計算出的內(nèi)容。關(guān)聯(lián)規(guī)則的發(fā)現(xiàn)算法有很多,如Apriori,AprioriTid,DHP,F(xiàn)P-tree等。
(4)混合推薦引擎:結(jié)合以上各種,得到一個更加全面的推薦效果。
1 數(shù)據(jù)描述
本文所使用的數(shù)據(jù)主要包含三大部分。
第一部分?jǐn)?shù)據(jù)是店鋪和商場信息數(shù)據(jù)(數(shù)據(jù)示例見表1)[1],主要包含6個有用字段,分別是店鋪ID(shop_id),店鋪類型ID(catehory_id,共有40種左右類型),店鋪位置—經(jīng)度(longitude),店鋪位置—緯度(latitude),人均消費指數(shù)(price),店鋪所在商場ID(mall_id),這一部分?jǐn)?shù)據(jù)總共包含97個mall的信息,涉及8 477間shop[1]。
第二部分?jǐn)?shù)據(jù)是用戶在店鋪內(nèi)的交易數(shù)據(jù)(數(shù)據(jù)示例見表2)[1],數(shù)據(jù)是在2017年8月份的交易數(shù)據(jù),主要包含6個字段,分別是用戶ID(user_id),用戶所在商鋪的ID(shop_id),行為時間戳(time_stamp),行為發(fā)生時的位置—經(jīng)度(longitude),行為發(fā)生時的位置—緯度(latitude),行為發(fā)生時的WiFi環(huán)境(WiFi_info,包括bssid:WiFi唯一識別碼,signal:強度,flag:是否連接)[1]。
第三部分則是測試數(shù)據(jù)[1],測試數(shù)據(jù)主要使用是時用戶交易時刻環(huán)境的相關(guān)數(shù)據(jù)(數(shù)據(jù)示例見表3),數(shù)據(jù)是2017年9月前兩周的交易數(shù)據(jù),包含測試數(shù)據(jù)ID,用戶ID,商場ID,行為時間戳,行為發(fā)生時位置—經(jīng)度,行為發(fā)生時位置-緯度,行為發(fā)生時WiFi環(huán)境[1]。
在使用算法進(jìn)行模型建設(shè)之前,對數(shù)據(jù)的處理是不可避免而且必要的環(huán)節(jié),例如對用戶在店鋪內(nèi)的交易數(shù)據(jù)中的WiFi_info進(jìn)行切分解析,還有運用mapreduce分布式計算方式從用戶維度對數(shù)據(jù)進(jìn)行清洗處理,獲取到用戶的消費店鋪和消費次數(shù)等信息,以便后續(xù)模型的建設(shè),還有對缺失值的填補,以及去除重復(fù)的垃圾數(shù)據(jù)。在算法方便本文主要采用兩種算法進(jìn)行對比,分別是XGBoost算法和Logistic Regression算法。下面對這兩種算法進(jìn)行簡要介紹與分析。
2 算法介紹
2.1 XGBoost
GB算法中最典型的基學(xué)習(xí)器是決策樹,尤其是CART,GBDT是GB和DT的結(jié)合,需要注意的是這里的決策樹是回歸樹,首先,XGBoost是Gradient Boosting的一種高效系統(tǒng)實現(xiàn),并不是一種單一算法。XGBoost里面的基學(xué)習(xí)器除了用tree(gbtree),也可用線性分類器(gblinear)[2]。而GBDT則特指梯度提升決策樹算法[3]。
XGBoost相對于普通gbm的實現(xiàn),可能具有以下的一些優(yōu)勢:(1)顯式地將樹模型的復(fù)雜度作為正則項加在優(yōu)化目標(biāo)。(2)公式推導(dǎo)里用到了二階導(dǎo)數(shù)信息,而普通的GBDT只用到一階。(3)允許使用column(feature) sampling來防止過擬合,借鑒了Random Forest的思想,sklearn里的gbm好像也有類似實現(xiàn)。(4)實現(xiàn)了一種分裂節(jié)點尋找的近似算法,用于加速和減小內(nèi)存消耗。(5)節(jié)點分裂算法能自動利用特征的稀疏性。(6)data事先排好序并以block的形式存儲,利于并行計算。(7)支持分布式計算可以運行在MPI,YARN上,得益于底層支持容錯的分布式通信框架rabit。
2.2 Logistic Regression算法
Logistic Regression(邏輯回歸)是當(dāng)前業(yè)界比較常用的機器學(xué)習(xí)方法,用于估計某種事物的可能性。類似某用戶購買某商品的可能性,某病人患有某種疾病的可能性等。這個世界是隨機的(當(dāng)然了,人為的確定性系統(tǒng)除外,但也有可能有噪聲或產(chǎn)生錯誤的結(jié)果,只是這個錯誤發(fā)生的可能性太小了,小到千萬年不遇,小到忽略不計而已),所以萬物的發(fā)生都可以用可能性或者幾率(Odds)來表達(dá)[4]?!皫茁省敝傅氖悄呈挛锇l(fā)生的可能性與不發(fā)生的可能性的比值。Logistic regression可以用來回歸,也可以用來分類,主要是二分類。它給我們提供的就是樣本屬于正類的可能性是多少。
3 實驗過程及結(jié)果
3.1 實驗過程
3.1.1 訓(xùn)練集劃分
在訓(xùn)練集劃分上,筆者簡單地將訓(xùn)練數(shù)據(jù)的最后7天劃分為訓(xùn)練區(qū)間,此前的作為特征提取區(qū)間。線上預(yù)測時使用全部數(shù)據(jù)作為特征提取區(qū)間。本地驗證時,直接從訓(xùn)練集中拿出最后3天作為驗證集。本地驗證時不更新特征提取區(qū)間(即仍然使用7.1—8.24作為特征提取區(qū)間),降低了實現(xiàn)上的復(fù)雜性。
3.1.2 特征構(gòu)造
(1)標(biāo)記特征。
記錄中是否有連接的WiFi。
記錄中是含否有null。
記錄中WiFi與候選shop出現(xiàn)過的WiFi重合的個數(shù)。
(2)“總量—比例”特征。
該mall的總歷史記錄數(shù)、候選shop在其中的占比。
該user的總歷史記錄數(shù)、候選shop在其中的占比。
WiFi歷史上出現(xiàn)過的總次數(shù)、候選shop在其中的占比。
在當(dāng)前排序位置(如最強、第二強、第三強…)上WiFi歷史上出現(xiàn)過的總次數(shù)、候選shop在其中的占比。
連接的WiFi出現(xiàn)的總次數(shù)、候選shop在其中的占比。
經(jīng)緯度網(wǎng)格(將經(jīng)緯度按不同精度劃分成網(wǎng)格)中的總記錄數(shù)、候選shop在其中的占比。
對于特征3、4,每條記錄中的10個WiFi由強到弱排列,可生成10個特征。
(3)差值特征。
WiFi強度—候選shop的歷史記錄中該WiFi的平均強度。
WiFi強度—候選shop的歷史記錄中該WiFi的最小強度。
WiFi強度—候選shop的歷史記錄中該WiFi的最大強度。
3個WiFi強度差值特征,按照信號強度由強到弱排列,可生成10個特征[3]。
(4)距離特征。
與候選shop位置的GPS距離(L2)。
與候選shop歷史記錄中心位置的GPS距離(L2)。
與候選shop對應(yīng)WiFi信號強度歷史均值的距離(L1,L2)[3]。
(5)其他特征。
特征中還包括多分類的輸出概率。另外,還有一些利用規(guī)則定義的距離特征,這里不再詳述。
3.2 實驗結(jié)果
通過對上述數(shù)據(jù)進(jìn)行清洗處理,構(gòu)造特征,然后分別訓(xùn)練了XGBoost和Logistic Regression兩個模型,其中評價標(biāo)準(zhǔn)為預(yù)測出的shop_id和標(biāo)準(zhǔn)答案中的shop_id相同,也就是評價標(biāo)準(zhǔn)為準(zhǔn)確率ACC=預(yù)測正確樣本總數(shù)/總樣本數(shù),得出結(jié)果如表4所示。
由此結(jié)果可以看出,在此種業(yè)務(wù)背景之下,通過對數(shù)據(jù)的處理,特征的提取構(gòu)造等一系列處理方法,分別選用XGBoost算法和傳統(tǒng)的Logistic Regression算法進(jìn)行了對比,得出了在指標(biāo)為ACC的情況下的預(yù)測結(jié)果。
4 結(jié)語
本文提出了一種基于XGBoost的用戶定位與商鋪推薦方法,通過對用戶信息和商鋪數(shù)據(jù)的挖掘與探索,構(gòu)造出合適的特征,然后通過與傳統(tǒng)的Logistic Regression在評價標(biāo)準(zhǔn)為ACC的情況下進(jìn)行了對比,發(fā)現(xiàn)此種方法準(zhǔn)確率明顯高于傳統(tǒng)的方法,后續(xù)希望能夠通過這種方法結(jié)合現(xiàn)有的推薦系統(tǒng)實現(xiàn)對用戶的精準(zhǔn)推薦,實現(xiàn)算法的實際效益。
[參考文獻(xiàn)]
[1]阿里云.商場中精確定位用戶所在店鋪[EB/OL].(2018-05-26)[2018-11-05].https://tianchi.aliyun.com/competition/information.htm?spm=5176.11165261.5678.2.7d5148aesPuqnG&raceId=231620.
[2]邱耀,楊國為.基于XGBoost算法的用戶行為預(yù)測與風(fēng)險分析[J].工業(yè)控制計算機,2018(9):44-45.
[3]倪巍,王宗欣.基于接收信號強度測量的室內(nèi)定位算法[J].復(fù)旦學(xué)報(自然科學(xué)版),2004(1):72-76.
[4]張昊,紀(jì)宏超,張紅宇.XGBoost算法在電子商務(wù)商品推薦中的應(yīng)用[J].物聯(lián)網(wǎng)技術(shù),2017(2):108-110.