張宜曼 蘇樂
摘 要: 利用物聯(lián)網(wǎng)新興技術(shù)和無線移動(dòng)定位技術(shù)的優(yōu)勢,設(shè)計(jì)開發(fā)了一款基于室內(nèi)定位的商品推薦系統(tǒng),實(shí)現(xiàn)從過載的信息中識別出用戶感興趣的商品,借助近場通信技術(shù)(NFC)搜集用戶數(shù)據(jù),借助室內(nèi)定位技術(shù)實(shí)時(shí)定位用戶位置,并根據(jù)用戶購物的歷史數(shù)據(jù)用協(xié)同過濾算法實(shí)現(xiàn)商品推薦將結(jié)果推送給用戶以達(dá)到讓用戶滿意的購物體驗(yàn)。
關(guān)鍵詞: 推薦系統(tǒng);NFC;協(xié)同過濾;室內(nèi)定位
Abstract:Taking advantage of the new technology of Internet of Things and wireless mobile positioning technology this paper designs and develops a commodity recommendation system based on indoor positioning realizes the identification of goods of interest to users from overload information collects user data with NFC and locates users' position with indoor positioning technology in real time. According to the historical data of the user shopping the product recommendation is implemented by using the collaborative filtering algorithm.
Key words: recommendation system;NFC;collaborative filtering;indoor positioning
引言
用戶在大型超市購物時(shí)目的不明確,又不能依賴導(dǎo)購員的指引,超市也并未提供針對用戶需求的合理推薦,由于信息量不足導(dǎo)致用戶需要花費(fèi)大量的時(shí)間用于產(chǎn)品的選購比較,難以獲得滿意的購物體驗(yàn)。這就需要超市采取一種有效方式盡快找到用戶感興趣的商品,將其推薦給用戶,進(jìn)而改善購物體驗(yàn)。針對以上問題,本文提出了一種結(jié)合室內(nèi)定位的商品推薦系統(tǒng),采用協(xié)同過濾算法實(shí)現(xiàn)商品推薦。如圖1所示,本文設(shè)計(jì)的介紹基于協(xié)同過濾和室內(nèi)定位的商品推薦系統(tǒng),在研發(fā)過程上主要可解析為4個(gè)部分:首先,是搜集用戶數(shù)據(jù);其次,將根據(jù)歷史信息推薦計(jì)算;繼而,則定位用戶在室內(nèi)位置;最后,是實(shí)現(xiàn)商品推薦。本文將針對這一課題展開如下研究論述。
1 用戶數(shù)據(jù)搜集
NFC(Near Field Communication)[1-2] 即近場通信,是一種類似于RFID的短距離的無線通信技術(shù)標(biāo)準(zhǔn),能夠快速、自動(dòng)地建立無線網(wǎng)絡(luò),為蜂窩設(shè)備、藍(lán)牙設(shè)備、WiFi設(shè)備提供一個(gè)虛擬鏈接,使電子設(shè)備可以在短距離范圍進(jìn)行通訊。
數(shù)據(jù)搜集模塊是結(jié)合用戶在結(jié)賬時(shí)通過接觸商品的NFC標(biāo)簽或掃描商品的條形碼,在得到商品名稱、生產(chǎn)廠商、商品分類等信息的同時(shí),也將用戶購買的物品信息上傳到系統(tǒng)服務(wù)器,作為系統(tǒng)分析數(shù)據(jù)的來源。用NFC讀取標(biāo)簽信息步驟的偽代碼如下:
//建立監(jiān)聽機(jī)制
當(dāng)監(jiān)聽機(jī)制檢測到正在掃描NFC標(biāo)簽時(shí),將通知系統(tǒng)接收NFC標(biāo)簽信息,接著讀取NDEF格式的標(biāo)簽信息。研究可得偽代碼如下:
Nfc Adapter nfc Adapter=Nfc Adapter.get Default Adapter(this);
if(nfc Adapter != null && nfc Adapter.is Enabled()) { //判斷手機(jī)是否支持NFC功能
if(nfc Adapter.ACTION_NDEF_DISCOVERED.equals(get Intent().get Action())) {
Parcelable[] par =
get Intent().get Parcelable ArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
Ndef Message ndef Msg=(Ndef Message)par[0];//信息被封裝為NdefMessage
}
}
通過以上步驟得到商品NFC標(biāo)簽信息,包含商品名稱、編號、商品分類等信息。將得到的數(shù)據(jù)上傳到服務(wù)器端數(shù)據(jù)庫中,用作后續(xù)推薦計(jì)算的數(shù)據(jù)來源。
2 基于協(xié)同過濾的推薦
協(xié)同過濾推薦(Collaborative Filtering recommendation)[3-4]已由學(xué)界公認(rèn)為是推薦系統(tǒng)中居于流行領(lǐng)先地位、且已獲高度實(shí)現(xiàn)的應(yīng)用技術(shù)。協(xié)同過濾算法分為基于用戶的協(xié)同過濾和基于物品的協(xié)同過濾。前者是根據(jù)用戶之間的相似性,把用戶喜歡的物品推薦給相似度高的用戶;后者是根據(jù)用戶的歷史行為計(jì)算物品之間的相似度,向用戶推薦相似性高的物品。
2.1 計(jì)算物品之間的相似度
在協(xié)同過濾中,2個(gè)物品產(chǎn)生相似度是因?yàn)閮烧邥?huì)由很多用戶共同喜歡,這其中就蘊(yùn)含著一個(gè)假設(shè),就是:每個(gè)用戶的興趣都局限在某個(gè)方面,因此如果2個(gè)物品屬于一個(gè)用戶的興趣列表,那么這2個(gè)物品可能就屬于有限的幾個(gè)領(lǐng)域;而如果2個(gè)物品屬于很多用戶的興趣列表,那么這2個(gè)物品就可能屬于同一個(gè)領(lǐng)域,因而有很大的相似度。
對于用戶數(shù)量遠(yuǎn)大于商品數(shù)量的大型超市,基于物品的推薦算法更為準(zhǔn)確。研究中采用調(diào)整的余弦相似度(Adjusted Cosine,AC)計(jì)算物品間的相似度。數(shù)學(xué)表述如下:
2.2根據(jù)物品的相似度和用戶的歷史行為給用戶生成推薦列表
研究中,采用數(shù)據(jù)搜集模塊得到的用戶數(shù)據(jù)建立用戶偏好商品表,同時(shí)基于用戶購買商品的數(shù)量、次數(shù)、對商品的評分/評論等參數(shù)計(jì)算用戶對商品的偏好數(shù)據(jù)。使用mahout[5]技術(shù)框架,這是一個(gè)基于 Java 實(shí)現(xiàn)的,高效、可擴(kuò)展的推薦引擎,利用推薦器Recommender,調(diào)用數(shù)據(jù)模型DataModel、用戶相似度Similarity得到基于物品的協(xié)同過濾推薦結(jié)果。關(guān)鍵部分的設(shè)計(jì)偽代碼為:
MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setServerName("my_user");
dataSource.setUser("my_database_host ");
dataSource.setPassword("my_password ");
JDBCDataModel dataModel = new MySQLJDBCData Model(dataSource "my_prefs_table" "my_user_column" "my_item_column" "my_pref_value_column");//讀取用戶偏好數(shù)據(jù)集合
DataModel model = new FileDataModel(new File("preferences.dat"));
ItemSimilarity similarity = new PearsonCorrelation Similarity(model);
Recommender recommender = new GenericItemBased Recommender(model similarity);//調(diào)用推薦器得到Item-CF推薦計(jì)算結(jié)果
3 基于WiFi室內(nèi)定位
本小節(jié)解決的問題是如何得到用戶的實(shí)時(shí)位置并將推薦結(jié)果傳送到用戶的無線設(shè)備。大型超市內(nèi)部一般都有無線網(wǎng)絡(luò)覆蓋,采用基于無線WiFi的室內(nèi)定位技術(shù)實(shí)時(shí)獲取用戶的位置信息以及該位置所在區(qū)域的貨架商品的分類信息,從而定制提供了該推薦系統(tǒng)關(guān)于室內(nèi)定位方面的有效功能。
3.1 位置指紋定位技術(shù)概述
基于WiFi的室內(nèi)定位技術(shù)[6]是在用戶手機(jī)開啟WLAN功能的情況下,根據(jù)手機(jī)收集到的周圍的AP(Access Point)信號強(qiáng)度,再將每個(gè)AP廣播出來的MAC地址等信息發(fā)送到位置服務(wù)器。位置服務(wù)器比對所有AP的信號強(qiáng)度,并檢索得出每個(gè)AP的地理位置信息,而且連同用戶的實(shí)際位置上傳到服務(wù)器,這就規(guī)范構(gòu)建了向用戶推送該位置的實(shí)際服務(wù)。
基于WiFi的室內(nèi)定位技術(shù)主要有2種:位置指紋定位法和信號傳播模型法。目前,位置指紋定位法可以較精確地定位到各類無線移動(dòng)接收終端且具有較快定位速度,其應(yīng)用較為常見,部署成本低,商家接受容易,故而本系統(tǒng)選用了此種定位方法。
3.2 位置指紋定位法
位置指紋定位法,分為離線訓(xùn)練階段和在線定位階段。對應(yīng)內(nèi)容可分述如下:
(1)離線訓(xùn)練階段。在進(jìn)行室內(nèi)定位前,工作人員將會(huì)按照一定規(guī)則劃分多個(gè)參考點(diǎn),依次測量每個(gè)參考點(diǎn)處接收到的各個(gè)AP的ID、信號強(qiáng)度、MAC地址等數(shù)據(jù),并發(fā)送到定位系統(tǒng)服務(wù)器的數(shù)據(jù)庫中,建立指紋數(shù)據(jù)表。
(2)在線定位階段。將用戶手機(jī)掃描到的各個(gè)AP的信號強(qiáng)度值發(fā)送到系統(tǒng)服務(wù)器,服務(wù)器端依據(jù)一定算法與指紋數(shù)據(jù)表中每個(gè)參考點(diǎn)處測得的信號強(qiáng)度值相比較,從而確定用戶當(dāng)前位置。
綜上可得,基于位置指紋定位法的設(shè)計(jì)原理可如圖2所示。
具體來說,位置指紋定位法是采用漸進(jìn)式自適應(yīng)非等長數(shù)據(jù)的最鄰近匹配算法來計(jì)算當(dāng)前位置掃描到的各個(gè)AP的信號強(qiáng)度值,并與指紋數(shù)據(jù)表中各個(gè)參考點(diǎn)處的AP的信號強(qiáng)度值相對照,進(jìn)而求取矢量距離,最終選取矢量距離最小的參考點(diǎn)位置作為用戶當(dāng)前的位置。
其中,i是AP編號;RSSIci是在線定位階段參考點(diǎn)ci測得的第i個(gè)AP的信號強(qiáng)度值;RSSIpi是在線定位階段中于當(dāng)前位置得到的第i個(gè)AP的信號強(qiáng)度值;結(jié)果是當(dāng)前位置與第j個(gè)參考點(diǎn)間的矢量距離,計(jì)算出當(dāng)前位置與所有參考點(diǎn)的矢量距離,選取與用戶最近的參考點(diǎn)作為用戶當(dāng)前位置。本次系統(tǒng)設(shè)計(jì)中,還采用了如下方法改進(jìn)結(jié)果精度,即,選取結(jié)果中矢量距離較小的n個(gè)參考點(diǎn)的位置的平均值作為用戶當(dāng)前位置。
4 基于室內(nèi)定位的商品推薦系統(tǒng)實(shí)現(xiàn)
本文研發(fā)系統(tǒng)中的推薦功能環(huán)節(jié)涉及的設(shè)計(jì)內(nèi)容主要有:根據(jù)用戶在購物過程中用手機(jī)掃描的商品的NFC標(biāo)簽向用戶展示商品關(guān)聯(lián)的標(biāo)簽信息,如商品名稱、生產(chǎn)廠家、生產(chǎn)日期、已經(jīng)購買過的顧客對該商品的評價(jià)情況等;根據(jù)室內(nèi)定位確定的用戶位置將推薦計(jì)算模塊得到的商品推薦列表發(fā)送到用戶手機(jī)上,同時(shí)完整顯示推薦列表中對應(yīng)的商品的評價(jià)信息等。至此,研究得到推薦系統(tǒng)的原理可如圖3所示。
基于協(xié)同過濾和室內(nèi)定位的商品推薦系統(tǒng)實(shí)現(xiàn)了在超市中通過移動(dòng)設(shè)備向用戶推薦商品的功能。該系統(tǒng)服務(wù)器設(shè)定為由Linux系統(tǒng)搭建的虛擬機(jī),系統(tǒng)數(shù)據(jù)庫選用了MySql數(shù)據(jù)庫,研發(fā)軟件為Mahout0.10。該系統(tǒng)運(yùn)行后,輸出的向用戶展示商品信息的設(shè)計(jì)界面如圖4所示,而最終設(shè)計(jì)整合的向用戶推薦商品的界面效果如圖5所示。在初期,超市可以通過張貼海報(bào)、制作廣告牌等方式宣傳、鼓勵(lì)顧客使用該商品推薦系統(tǒng),掃描商品的NFC標(biāo)簽以獲取商品的詳細(xì)信息,有效節(jié)省了翻看系列商品的保質(zhì)期及生產(chǎn)日期的時(shí)間。
5 結(jié)束語
本文提出的基于協(xié)同過濾和室內(nèi)定位的商品推薦系統(tǒng),可在利用室內(nèi)定位技術(shù)實(shí)時(shí)定位到用戶的當(dāng)前位置后,再根據(jù)用戶購買商品的歷史數(shù)據(jù)分析獲取用戶對每個(gè)種類下各款不同商品的喜好,進(jìn)而借助協(xié)同過濾算法向用戶推薦其喜歡的商品。本推薦系統(tǒng)能對顧客購買商品做出有效的推薦,提升顧客體驗(yàn),是商家提高服務(wù)水平和促銷盈利的有效手段。未來工作中,本系統(tǒng)在推薦的精準(zhǔn)度方面還有待進(jìn)一步的改進(jìn)與完善。
參考文獻(xiàn)
[1] 陳勇,羅俊海,朱玉全,等. 物聯(lián)網(wǎng)技術(shù)概論及產(chǎn)業(yè)應(yīng)用[M]. 南京:東南大學(xué)出版社,2013.
[2] RESATSCH F,KARPISCHEK S SANDNER U S et al. Mobile sales assistant:NFC for retailers[C]//Proceedings of the 9th international conference on Human computer interaction with mobile devices and services. Singapore:ACM,2007:313-316.
[3] 項(xiàng)亮. 推薦系統(tǒng)實(shí)踐[M]. 北京:人民郵電出版社,2012.
[4] RICCI F ROKACK L SHAPIRA B et al. 推薦系統(tǒng)技術(shù)、評估及高效算法[M]. 李艷民,胡聰,吳賓,等譯. 北京:機(jī)械工業(yè)出版社,2015.
[5] 劉芳先,宋順林. 改進(jìn)的協(xié)同過濾推薦算法[J]. 計(jì)算機(jī)工程與應(yīng)用,2011,47(8):72-75.
[6] 曾雪琳,吳斌. 基于位置的社會(huì)化網(wǎng)絡(luò)的并行化推薦算法[J]. 計(jì)算機(jī)應(yīng)用,2016,36(2):316-323,335.