基于协同过滤和室内定位的商品推荐系统

2018-05-23 11:46张宜曼苏乐
智能计算机与应用 2018年2期
关键词:室内定位推荐系统协同过滤

张宜曼 苏乐

摘 要: 利用物联网新兴技术和无线移动定位技术的优势,设计开发了一款基于室内定位的商品推荐系统,实现从过载的信息中识别出用户感兴趣的商品,借助近场通信技术(NFC)搜集用户数据,借助室内定位技术实时定位用户位置,并根据用户购物的历史数据用协同过滤算法实现商品推荐将结果推送给用户以达到让用户满意的购物体验。

关键词: 推荐系统;NFC;协同过滤;室内定位

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

引言

用户在大型超市购物时目的不明确,又不能依赖导购员的指引,超市也并未提供针对用户需求的合理推荐,由于信息量不足导致用户需要花费大量的时间用于产品的选购比较,难以获得满意的购物体验。这就需要超市采取一种有效方式尽快找到用户感兴趣的商品,将其推荐给用户,进而改善购物体验。针对以上问题,本文提出了一种结合室内定位的商品推荐系统,采用协同过滤算法实现商品推荐。如图1所示,本文设计的介绍基于协同过滤和室内定位的商品推荐系统,在研发过程上主要可解析为4个部分:首先,是搜集用户数据;其次,将根据历史信息推荐计算;继而,则定位用户在室内位置;最后,是实现商品推荐。本文将针对这一课题展开如下研究论述。

1 用户数据搜集

NFC(Near Field Communication)[1-2] 即近场通信,是一种类似于RFID的短距离的无线通信技术标准,能够快速、自动地建立无线网络,为蜂窝设备、蓝牙设备、WiFi设备提供一个虚拟链接,使电子设备可以在短距离范围进行通讯。

数据搜集模块是结合用户在结账时通过接触商品的NFC标签或扫描商品的条形码,在得到商品名称、生产厂商、商品分类等信息的同时,也将用户购买的物品信息上传到系统服务器,作为系统分析数据的来源。用NFC读取标签信息步骤的伪代码如下:

//声明需要使用NFC

//建立監听机制

当监听机制检测到正在扫描NFC标签时,将通知系统接收NFC标签信息,接着读取NDEF格式的标签信息。研究可得伪代码如下:

Nfc Adapter nfc Adapter=Nfc Adapter.get Default Adapter(this);

if(nfc Adapter != null && nfc Adapter.is Enabled()) { //判断手机是否支持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标签信息,包含商品名称、编号、商品分类等信息。将得到的数据上传到服务器端数据库中,用作后续推荐计算的数据来源。

2 基于协同过滤的推荐

协同过滤推荐(Collaborative Filtering recommendation)[3-4]已由学界公认为是推荐系统中居于流行领先地位、且已获高度实现的应用技术。协同过滤算法分为基于用户的协同过滤和基于物品的协同过滤。前者是根据用户之间的相似性,把用户喜欢的物品推荐给相似度高的用户;后者是根据用户的历史行为计算物品之间的相似度,向用户推荐相似性高的物品。

2.1 计算物品之间的相似度

在协同过滤中,2个物品产生相似度是因为两者会由很多用户共同喜欢,这其中就蕴含着一个假设,就是:每个用户的兴趣都局限在某个方面,因此如果2个物品属于一个用户的兴趣列表,那么这2个物品可能就属于有限的几个领域;而如果2个物品属于很多用户的兴趣列表,那么这2个物品就可能属于同一个领域,因而有很大的相似度。

对于用户数量远大于商品数量的大型超市,基于物品的推荐算法更为准确。研究中采用调整的余弦相似度(Adjusted Cosine,AC)计算物品间的相似度。数学表述如下:

2.2根据物品的相似度和用户的历史行为给用户生成推荐列表

研究中,采用数据搜集模块得到的用户数据建立用户偏好商品表,同时基于用户购买商品的数量、次数、对商品的评分/评论等参数计算用户对商品的偏好数据。使用mahout[5]技术框架,这是一个基于 Java 实现的,高效、可扩展的推荐引擎,利用推荐器Recommender,调用数据模型DataModel、用户相似度Similarity得到基于物品的协同过滤推荐结果。关键部分的设计伪代码为:

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");//读取用户偏好数据集合 ,用作下一步推荐计算的数据源

DataModel model = new FileDataModel(new File("preferences.dat"));

ItemSimilarity similarity = new PearsonCorrelation Similarity(model);

Recommender recommender = new GenericItemBased Recommender(model similarity);//调用推荐器得到Item-CF推荐计算结果

3 基于WiFi室内定位

本小节解决的问题是如何得到用户的实时位置并将推荐结果传送到用户的无线设备。大型超市内部一般都有无线网络覆盖,采用基于无线WiFi的室内定位技术实时获取用户的位置信息以及该位置所在区域的货架商品的分类信息,从而定制提供了该推荐系统关于室内定位方面的有效功能。

3.1 位置指纹定位技术概述

基于WiFi的室内定位技术[6]是在用户手机开启WLAN功能的情况下,根据手机收集到的周围的AP(Access Point)信号强度,再将每个AP广播出来的MAC地址等信息发送到位置服务器。位置服务器比对所有AP的信号强度,并检索得出每个AP的地理位置信息,而且连同用户的实际位置上传到服务器,这就规范构建了向用户推送该位置的實际服务。

基于WiFi的室内定位技术主要有2种:位置指纹定位法和信号传播模型法。目前,位置指纹定位法可以较精确地定位到各类无线移动接收终端且具有较快定位速度,其应用较为常见,部署成本低,商家接受容易,故而本系统选用了此种定位方法。

3.2 位置指纹定位法

位置指纹定位法,分为离线训练阶段和在线定位阶段。对应内容可分述如下:

(1)离线训练阶段。在进行室内定位前,工作人员将会按照一定规则划分多个参考点,依次测量每个参考点处接收到的各个AP的ID、信号强度、MAC地址等数据,并发送到定位系统服务器的数据库中,建立指纹数据表。

(2)在线定位阶段。将用户手机扫描到的各个AP的信号强度值发送到系统服务器,服务器端依据一定算法与指纹数据表中每个参考点处测得的信号强度值相比较,从而确定用户当前位置。

综上可得,基于位置指纹定位法的设计原理可如图2所示。

具体来说,位置指纹定位法是采用渐进式自适应非等长数据的最邻近匹配算法来计算当前位置扫描到的各个AP的信号强度值,并与指纹数据表中各个参考点处的AP的信号强度值相对照,进而求取矢量距离,最终选取矢量距离最小的参考点位置作为用户当前的位置。

其中,i是AP编号;RSSIci是在线定位阶段参考点ci测得的第i个AP的信号强度值;RSSIpi是在线定位阶段中于当前位置得到的第i个AP的信号强度值;结果是当前位置与第j个参考点间的矢量距离,计算出当前位置与所有参考点的矢量距离,选取与用户最近的参考点作为用户当前位置。本次系统设计中,还采用了如下方法改进结果精度,即,选取结果中矢量距离较小的n个参考点的位置的平均值作为用户当前位置。

4 基于室内定位的商品推荐系统实现

本文研发系统中的推荐功能环节涉及的设计内容主要有:根据用户在购物过程中用手机扫描的商品的NFC标签向用户展示商品关联的标签信息,如商品名称、生产厂家、生产日期、已经购买过的顾客对该商品的评价情况等;根据室内定位确定的用户位置将推荐计算模块得到的商品推荐列表发送到用户手机上,同时完整显示推荐列表中对应的商品的评价信息等。至此,研究得到推荐系统的原理可如图3所示。

基于协同过滤和室内定位的商品推荐系统实现了在超市中通过移动设备向用户推荐商品的功能。该系统服务器设定为由Linux系统搭建的虚拟机,系统数据库选用了MySql数据库,研发软件为Mahout0.10。该系统运行后,输出的向用户展示商品信息的设计界面如图4所示,而最终设计整合的向用户推荐商品的界面效果如图5所示。在初期,超市可以通过张贴海报、制作广告牌等方式宣传、鼓励顾客使用该商品推荐系统,扫描商品的NFC标签以获取商品的详细信息,有效节省了翻看系列商品的保质期及生产日期的时间。

5 结束语

本文提出的基于协同过滤和室内定位的商品推荐系统,可在利用室内定位技术实时定位到用户的当前位置后,再根据用户购买商品的历史数据分析获取用户对每个种类下各款不同商品的喜好,进而借助协同过滤算法向用户推荐其喜欢的商品。本推荐系统能对顾客购买商品做出有效的推荐,提升顾客体验,是商家提高服务水平和促销盈利的有效手段。未来工作中,本系统在推荐的精准度方面还有待进一步的改进与完善。

参考文献

[1] 陳勇,罗俊海,朱玉全,等. 物联网技术概论及产业应用[M]. 南京:东南大学出版社,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] 项亮. 推荐系统实践[M]. 北京:人民邮电出版社,2012.

[4] RICCI F ROKACK L SHAPIRA B et al. 推荐系统技术、评估及高效算法[M]. 李艳民,胡聪,吴宾,等译. 北京:机械工业出版社,2015.

[5] 刘芳先,宋顺林. 改进的协同过滤推荐算法[J]. 计算机工程与应用,2011,47(8):72-75.

[6] 曾雪琳,吴斌. 基于位置的社会化网络的并行化推荐算法[J]. 计算机应用,2016,36(2):316-323,335.

猜你喜欢
室内定位推荐系统协同过滤
基于用户偏好的信任网络随机游走推荐模型
基于链式存储结构的协同过滤推荐算法设计与实现
基于相似传播和情景聚类的网络协同过滤推荐算法研究
基于个性化的协同过滤图书推荐算法研究
个性化推荐系统关键算法探讨
基于协同过滤算法的个性化图书推荐系统研究
混合推荐算法在电影推荐中的研究与评述
面向老年人的室内定位系统
浅谈Mahout在个性化推荐系统中的应用
基于WiFi的室内定位中AP选择方法研究