1、一种结合众包的 WIFI 指纹数据库自构建及更新算法 张熠 陈璟 王革超 江南大学物联网工程学院物联网技术应用教育部工程研究中心 摘 要: 传统指纹法需要在离线阶段耗费大量的人力和时间成本去密集采集 Wi-Fi 数据, 且位置指纹法的定位方式对环境变化很敏感, 需要定期手动更新指纹数据库.近些年很多研究采用指纹数据库更新算法, 但是这类算法默认是信任用户反馈的, 不能准确过滤其中的错误数据.本文提出了一种结合众包的指纹数据库自构建及更新算法 (AUAFC) , 在离线阶段只需在少量地标处采集指纹数据, 在地标间使用手机传感器数据进行航位推算以提供基本的位置服务.为了减小地标识别的边界误差, A
2、UAFC 包含一种地标识别边界收敛算法.当服务器端接收到用户反馈时启动动态聚类算法提取可信数据更新指纹数据库或向数据库中植入新的地标.实验结果表明, 地标识别边界收敛算法能使地标点的定位误差缩小至 2.6 米左右, 而且相比较于传统指纹更新算法, 本文算法 AUAFC 能准确的提取有效反馈信息并准确的植入新地标及更新原有的指纹数据库.关键词: 指纹更新; 动态聚类; 地标识别; 数据库自构建; 作者简介:张熠, 男, 1992 年生, 硕士研究生, CCF 会员, 研究方向为无线传感网络及室内定位;作者简介:陈璟, 女, 1977 年生, 博士, 副教授, 研究方向为无线传感网络及生物信息学;
3、E-mail:作者简介:王革超, 男, 1990 年生, 硕士研究生, 研究方向为无线传感网络及室内定位.收稿日期:2016-09-02基金:国家自然科学基金项目 (61170121) 资助WiFi Fingerprint Database Auto-building and Updating Algorithm Fusing CrowdsourcingZHANG Yi CHEN Jing WANG Ge-chao School of Internet of Thing Engineering, Engineering Research Center of Internet of Things
4、 Technology Applications Ministry of Education, Jiangnan University; Abstract: Traditional fingerprint-based method requires a process of site survey at off-line training phase which is time-consuming and labor-intensive, also this method needs specialized persons to update the database termly becau
5、se it is sensitive to the changes around the indoor environment. In recent years, many papers studied algorithms which can use users feedbacks to update the fingerprint database automatically, but they default accept users feedback to their algorithms, and cant filter the bad data accurately. We pro
6、posed a Wi-Fi fingerprint database auto-building and updating algorithm fusing crow dsourcing ( AUAFC) , during the off-line phase, we collected data at very little landmarks, between landmarks we analysed the data which gathered from users smartphone and provide basic location service. To reduce th
7、e boundary of the landmark recognition, the AUAFC proposed the algorithm to shrink the boundary of landmark. When the server receives the users feedback, it will use a dynamic clustering algorithm to extract the credible data and update the database or seed new landmark to the database. The result s
8、how s that the algorithm to shrink the boundary of landmark can make positioning error narrowed to 2. 6 meters at the points of landmarks. Compared with traditional fingerprint updating algorithm, our method-AUAFC can extract effective feedbacks accurately and seed new landmarks or update database a
9、ccurately.Keyword: fingerprint update; dynamic clustering; landmark detection; database auto-building; Received: 2016-09-021 引言随着基于位置的服务 (location-based services, LBS) 的兴起, 人们对室内位置服务的需求日益强烈, 如大型商场、地铁、飞机场等.基于 GPS1 (Global Positioning System) 和蜂窝基站的室外定位技术已非常成熟并得到大规模部署和应用.建筑物的遮挡和室内复杂的多径效应使得 GPS 无法用于室内环
10、境.低成本、高精度的室内定位解决方案已成为研究热点.基于 Wi-Fi 的指纹定位方法2-7应用最广泛, 主要的原因有两个:第一, 现在的室内环境都已经部署了大量的无线路由器, 可以提供大量的无线访问接入点 (Access Point, AP) , 这样在部署室内定位系统时就不需要额外的硬件设备了.第二, 如今几乎所有的智能手机都已经配备了各种传感器和 Wi-Fi 模块.现在常用的指纹法定位算法都是在文献2和文献3方法的基础上加以改进的.这种纯指纹法方式的室内定位算法虽然能够提供较为准确的位置估计, 但是建立指纹数据库和指纹数据库的维护更新工作需要大量的时间和人力成本.文献8, 9利用行人航迹推
11、算 (Pedestrian Dead-Reckoning, PDR) 和 UWB 定位互补技术, 采用约束滤波器使得位置估计精度达到亚米级, 有效弥补了纯指纹法定位技术的缺点, 提高了定位精度和稳定性, 但这些定位系统往往需要添加额外的硬件设施, 系统实现复杂, 而且部署成本高.随着智能手机越来越受到人们的青睐及室内 Wi-Fi 的大面积部署.结合 Wi-Fi 信息和手机传感器数据的室内定位方式渐渐成为主流, 文献10, 11在实验环境中选取了若干位置作为地标位置点, 然后利用这些位置点的指纹数据在航位推算过程中为用户提供必要的位置矫正.这种方法在离线阶段免去了繁重的样本采集过程, 但是相比较
12、于纯指纹法的密集参考点而言此类方法并不能很好的处理地标位置识别边界的问题.文献12, 13提出利用用户的反馈来更新指纹数据库, 并且通过评分机制在一定程度上阻止错误反馈过快对指纹数据库修改.但是这类指纹更新算法对于用户的反馈数据是无条件的加入到指纹更新算法中, 并不能很好的甄别有效信息与错误反馈.为了有效解决建立指纹数据库的繁琐与环境动态变化对信号强度 (Received Signal Strength Indicator, RSSI) 的影响, 本文提出了一种结合众包的指纹数据库自构建及更新算法 (AUAFC) .该算法在接收到用户的反馈数据后, 首先利用用户智能手机的传感器数据进行航位推算
13、, 对用户的反馈信息进行初步的判别以排除恶意反馈.然后利用 DBSCAN (Density-Based Spatial Clustering of Applications w ith Noise) 14聚类算法对反馈信息做进一步的聚类分析提取其可靠数据.最后, 在真实环境中的实验分析表明, 本文利用 DBSCAN 聚类分析的指纹数据库自构建及更新算法能在用户反馈中有效的提取真实指纹信息.2 相关工作2.1 航位推算行人航位推算系统能利用手机设备的内置传感器数据估算出行人的相对位置变化而不是绝对位置.PDR 几乎没有任何的部署难度并且在室内环境不要增加额外的硬件设备.基于智能设备的行人航位推算
14、原理如图 1 所示.已知行人的起始位置 (x 0, y0) , 利用方位角 1和步长 d1, 可以计算出下一步到达的位置 (x 1, y1) , 如此反复迭代计算, 可以计算出行人第 k 步到达的位置信息如下:图 1 行人航位算法原理 Fig.1 Principle of pedestriandead reckoning 下载原图式中 n和 dn (n=1, , k) 分别代表第 n 步的方位角和步长.然而, 当没有任何的坐标参考时 PDR 会有很严重的误差累计问题.在航空和军事领域, 高精度的传感器能提供稳定数据.但是对于用户的手机, 高精度的传感器是非常昂贵的.虽然基于微机电系统 (Mic
15、ro Electro-Mechanical Systems, M EM S) 的传感器更小更便宜, 但是在短时间内使用基于 M EM S 的传感器数据是非常可靠的.2.2 指纹法定位一般来说, 在室内定位系统中主要是利用来自无限访问节点 (APs) 或者其他的无线射频 (Radio Frequency, RF) 装置的 RSSI 来实现定位服务的, 其中主要的定位方法是:基于信号传播模型法和基于指纹法的系统15,16.对基于信号传播模型法的定位系统, 由于无线信道并不是一直很稳定的而且很多因素都会影响无线信号的传播, 此外, 该方法还需要所有 AP 的坐标信息, 这个在实际情况中是很难准确获取
16、的.所以本文是采用指纹法定位方式.基于指纹法的室内定位系统分为两个阶段:离线训练阶段和在线匹配阶段.在离线训练阶段, 每个 AP 在对应的位置点上的无线信号接收强度和其对应的物理地址 (Media Access Control, M AC) 作为一条指纹信息被采集然后存放于指纹数据库中;在线匹配阶段的时候, 用户的实时位置是通过与数据库中的指纹匹配来找到相似度最高的那个指纹所对应的位置.但是传统定位算法往往是针对有密集参考点的系统, 在本文中初始状态只有数个地标位置而且这些地标间的间距是非常大, 如果采用传统的定位算法所造成的定位误差在初始状态肯定是非常大的, 并且为了减小地标位置的识别边界,
17、 本文提出了一种地标识别边界收敛算法, 当用户只有在接近或进入地标位置的时候才会有位置信息反馈出来.2.3 聚类算法随着众包技术的广泛应用, 越来越多的文章17-19通过众包来更新指纹数据库从而减少专业人员手动更新数据库的频次.然而这类指纹数据库的更新机制主要是从优化参考位置的评价机制来做指纹更新的.虽然在用户的反馈行为比较规范的情况下效果很好, 但是在实际环境中反馈的信息中穿插了大量的错误反馈时, 这类更新算法就会集体失效.如何对用户的反馈数据进行有效的判别与分类成为了现阶段指纹数据库更新算法的关键.如图 2 所示, 在服务器的指纹反馈文件中每个位置都会对应多条用户反馈, 如何在这些指纹数据
18、中将对应位置的真实指纹信息提取分类出来正是本文需要做的.对数据的分类工作当属聚类算法处理能力最好了, 针对用户的反馈数据有以下这些特点:图 2 用户反馈数据集 Fig.2 Data set of users feedbacks 下载原图1) 每个位置的指纹都存在很多噪声点, 这些指纹信息是需要剔除的不应该对其做出归类.2) 每个位置指纹的聚类中心以及数量是未知的.3) 反馈的指纹数据是高维数据, 无法直观求得欧式距离.在本文中, 我们采用的是 DBSCAN 聚类算法.DBSCAN 是一个比较有代表性的基于密度的聚类算法, 与划分和层次聚类方法不同, 它将簇定义为密度相连的点的最大集合, 能够把
19、具有足够高密度的区域划分为簇, 并可在有噪声的数据中发现任意形状的聚类.DBSCAN 不需要事先知道簇类的数量, 并且 DBSCAN 能够识别出噪声点.3 地标识别边界收敛算法3.1 采样和建库本文的目标是收集大量的用户反馈, 经过本文的算法自动在对应参考位置生成相应的植入地标.在离线阶段我们需要选取若干地标位置点, 这些地标位置主要是为在初始阶段减小航位推算的累积误差而设立的, 所以地标点的选择上一般选择楼梯口、电梯及厕所周边等这些用户的必经之道上, 这样能够及时的对用户位置做相应的矫正.本文考虑到地标位置需要做准确的位置矫正, 所以根据文献10我们在采集到的指纹信息中只考虑 RSSI 值大
20、于-78d Bm 的 AP 信息.3.2 定位算法本文采用的定位算法是基于文献20中提到的基于 RS-SI 相似度的定位算法.由于本文研究的重点是指纹数据库的自构建及更新算法, 因此就没有考虑使用较为复杂的基于朴素贝叶斯概率模型的定位算法, 基于 RSSI 相似度的定位算法虽然算法过程比较简单, 但是这类方法在实际应用中还是很有效的.本文的地标识别边界收敛算法同样也能适用于其它确定性的定位算法如 KNN 及 KWNN 等.假设位置 i 扫描到的 AP 的集合为 Ai, 位置 j 扫描到的 AP 的集合为 Aj, 得到 AP 集合 A=AiA j, |A|表示位置 i 和位置 j 所扫描到的 A
21、P 的总个数.位置 i 扫描到APk的 RSSI 值表示为 fi (k) , 其中|f i (k) |表示 fi (k) 的绝对值, 如果在位置 i 没有扫描到 APk, 就令 fi (k) =0.我们定义位置 i 和位置 j 的相似度 S (i, j) 0, 1, 具体公式如下:3.3 离线训练阶段传统的室内定位系统经过上面的步骤指纹数据库就创建完毕, 但是由于地标指纹数据库中参考点的设置比纯指纹法少很多, 所以为了尽可能的在地标位置区域内准确的识别出区域内的用户, 这就必须针对每个地标位置的指纹信息通过离线训练的方式找到每个地标位置的最佳相似度, 只有在线定位相似度达到所在位置的最佳相似度
22、 (在指纹数据库中为字段 Similar 的值) 才能形成有效定位.算法 1 是离线训练过程, 其输入是在地标位置采集的多条指纹数据集Fingerprint_Set 和相应地标位置在指纹数据库中的指纹数据 DB_Entry.输出训练结果是相似度值 Similar.但是在离线训练阶段的数据集是没有去除噪声点的原始数据, 所以环境中的任何变化都会使 Wi-Fi 信号产生波动, 本文算法在得到每个训练指纹与地标指纹的相似度数组后, 对其进行相似度排序.Percent 变量就是限制样本的量, Percent 直接影响训练出的 Similar 值的大小, 而Similar 值过大在线阶段虽然可以尽可能的
23、使传回服务器的指纹得到定位结果但是这样会损失定位精度, 如果 Similar 值过小虽然可以使定位精度提高, 但是这样就只有很少量的指纹能实现定位.我们将在第四节通过实验找到最优的Percent 值.算法 1.离线训练阶段3.4 位置匹配阶段结合了相似度的位置匹配算法, 并不会像传统算法那样在接收到定位请求后都会有一个位置输出, 只有当与地标位置的相似度值大于该地标离线训练出的Similar 时才会有位置输出.算法 2 是在线阶段当接收到用户定位请求时的定位过程.其中算法输入为客户端获取的一条指纹条目 Fingerprint_Entry 和地标指纹数据库中的所有位置和其对应的指纹条目 DB_S
24、et;Location 为返回的定位结果.算法 2.定位算法4 指纹数据库自构建及更新算法通过上节的航位推算和地标矫正结合方法可以在初始阶段为用户提供基本的位置定位服务, 误差范围在 5 米左右.由于本文的指纹数据库自构建及更新都是通过用户反馈完成的, 所以相比较于传统指纹更新算法12,13中无条件接受用户反馈的做法不同, 如图 3 所示, 本文在接收到用户的反馈信息后首先需要结合手机传感器数据对其进行 PDR 反馈验证, 然后对反馈数据进行动态聚类分析以提取有效信息, 之后执行指纹更新或地标植入过程.图 3 用户反馈验证机制 Fig.3 Authentication mechanism fo
25、r users feedback 下载原图4.1 PDR 验证智能手机中的方向传感器在初始状态由于没有校准传感器数据可能在实际使用过程中存在固定角度偏差, 如图 4 所示, 虚线是真实的路径, 但是通过传感器数据航位推算出来的路径可能是实线路径的状态.从图中可以看出, 虽然路径不同, 但是在初始点和终点间的距离 dOD和 dOD*是一致的.其中航位推算的基本过程如公式 (3) 所示.其中 (x 0, y0) 和 (x k, yk) 表示需要进行航位推算的区间点;表示初始位置到终点间的步数, 这里采用的是文献21中加速度差分有限状态机计步算法.其计步误差在正常状态下为 1.12%, 在有干扰的状
26、态下计步误差为 4%.在本文中当用户向服务器反馈时, 首先找到上一次的地标矫正的位置 Last LocLM, 然后 PDR 估算出其当前的位置 CurrentLOC, 之后计算反馈的位置FeedbackLOC和矫正点的距离 D0 (Last LocLM, FeedbackLOC) , 再计算估算位置和矫正点位置的距离 D1 (Last LocLM, Current-LOC) , 最后判断 abs (D0-D1) 的值是否相近.图 4 用户反馈验证机制 Fig.4 Authentication mechanism of users feedback 下载原图4.2 动态聚类算法如图 5 所示,
27、分别是在物理空间和信号空间上对用户的反馈行为做了直观的表示.在物理空间中, 室内环境中覆盖了 Wi-Fi 信号, 图中黑色字母表示的是正确的位置指纹信息反馈, 区域中 ax和 dx虽然反馈的位置分别在 a 区域和 d 区域, 但是他们的真实位置并不在区域 a 和 d.当我们从信号空间去观察这些指纹信息时, 可以发现虽然物理空间上 ax被反馈在区域 a, 但是 ax信号与区域 a 内的其它反馈数据在相似度上有很大的不同, 在信号空间能很轻松的判别哪些反馈是我们需要提取出来的.图 5 指纹在物理空间和信号空间的表示 Fig.5 Fingerprint in physical space and t
28、he signal space 下载原图用户的反馈在一定程度上是不可控的, 这些反馈数据可以来自室内环境中的任意位置, 但是在同一个位置上的 WiFi 信号总体上肯定是围着某个聚类中心密集分布的, 其它的错误反馈数据在信号空间上肯定是远离聚类中心而分布的.DBSCAN 算法事先不需要确定聚类数目, 且可以形成任意形状的簇类, 正好符合我们的需要.算法中包含 Eps 和 Min P 两个参数, 其中 Eps 指明邻域半径的大小, Min P 指明聚类时样本点的邻域内至少包含的指纹个数.TIF 和 Min P 这两个参数的选取是本算法的关键.首先考虑 Eps 的选择, 在算法中如果 Eps 取值过
29、小, 此时的聚类半径就会非常小, 在信号上也就是指纹间需要非常相似才能形成一类, 这样的话在半径 Eps 范围内就会有越少的指纹条目, 进而提取的有效指纹数就会很少, 而且 Eps 越少在聚类过程中越有可能增加聚类中心的数目, 这样使指纹信息不能有效的集中可能会使聚类失败.如果 Eps 的取值过大, 虽然能够提取出尽可能多的指纹信息, 但是这样往往也会误将错误反馈的指纹也提取出来造成指纹更新有误差.我们在实验环境中任意选择了位置测试同一个参考位置下指纹间的相似度变化, 发现大部分指纹相似度均值在 0.945 左右, 所以我们将 Eps 的值设置为 0.55.之后是考虑 M in P 的取值.M
30、 in P 的取值也会影响聚类的大小.如果 Min P 过大, 在极端的情况下所有的反馈数据都会在一个聚类结果中, 这样的话用户的每条反馈数据会被接受, 如果存在用户大量恶意反馈时, 此时指纹数据库的定位准确度将大大降低.相反, 如果聚类过小, 比如一个点就是一个聚类, 这样用户的每次更正就会由于聚类中心过多都会被服务器拒绝, 导致数据库得不到有效更新或地标点不能植入.为了能最多的提取正确反馈同时又能将尽可能多的错误反馈数据排除, 我们在第四节通过实验分析最优的 M in P 值.4.3 地标数据库的更新由于在离线阶段选定的若干地标点在整个定位过程中都是需要提供稳定的位置矫正服务, 所以地标指
31、纹的数据是和用户参与的植入地标数据库是分开管理的.初始地标位置的指纹更新并不会采纳用户自由反馈的方法, 为了进一步约束用户的反馈行为, 我们在地标位置都粘贴了带有位置标签的二维码, 在实验中, 当用户扫描二维码时就会启动 Wi-Fi 信息采集程序, 所以在这种状态下采集的Wi-Fi 是能够反映当前地标点的指纹信息.采集到的地标指纹信息最终在服务器端用 DBSCAN 聚类算法提取相似度高的指纹信息减少那些异常波动的指纹信息.4.4 植入地标数据库自构建及更新算法我们实验的初始阶段只有若干地标点, 所以当用户反馈数据到服务器端的时候我们是不知道用户的反馈是用于植入地标还是更新地标的.本文的方法是使
32、用一个临时的存放文件用于临时存放所有的用户反馈, 其存放的具体格式是LOC:*, USED:0, WIFI:*.首先有一个 LOC 字段用于指代反馈数据的位置点;UESD 字段用于判断该位置是否已经在植入地标指纹数据库中, 如果没有加入到植入地标指纹数据时状态码是 0.其中 WIFI 字段中存放的是用户每次反馈的指纹数据.算法 3 是具体的算法过程, 其输入有用户的反馈 feedback, 植入地标指纹数据库 Seed LM DB, Cluster_K 是用于触发聚类过程的值, 在我们实验中我们将其设置为 100, 即当用户的反馈数目达到 100 条时会触发指纹更新程序或自构建程序.下面的算法
33、针对用户的反馈行为分为五个处理细节.首先在位置点没有加入数据库情况下, 如果用户反馈量没有达到 Cluster_K 值时就继续将该反馈数据加到该位置的临时文件中, 否则将该位置的指纹信息进行聚类并且加到植入地标指纹数据库中.在位置点已经加入到了数据库的情况下, 如果反馈数还没达到要求则继续将反馈数据加到临时文件, 反之启动指纹更新程序.最后如果临时文件中没有反馈的位置点则增加一条额外的条目.算法 3.植入地标指纹数据库自构建及更新算法5 实验分析本文的数据采集是基于 Android5.0 系统, 其中主要使用到的传感器类型见表 1.表 1 传感器类型表 Table 1 Table of sen
34、sor type 下载原表 为了验证本文方法的有效性, 我们在江南大学物联网工程学院 C 区三楼的整个区域进行了数据的采集与分析, 其室内布局如图 6 所示.整个实验区域大小是南北 65 米东西 70 米, 实验区域有学院统一部署的 AP 但我们不知道每个 AP 的具体位置, 本文所采集的所有指纹均来自这些 AP.在离线训练阶段, 如图所示共选取了 8 个位置点作为地标参考点.随后在每个地标位置采集指纹, 每个位置采集三分钟的 RSS 向量作为指纹样本, 共采集得到 1702 个样本, 根据这些信息生成了地标指纹数据库.图 6 实验环境图 Fig.6 Figure of test enviro
35、nment 下载原图5.1 地标识别边界收敛算法分析为了寻找最佳的样本训练量, 我们对不同的 Percent 值进行了测试实验.在实验环境中, 我们在地标位置的外围每隔 0.5m 采集 1 分钟的指纹数据, 一共采集了11 组数据, 然后用这些数据通过本文改进的定位算法观察其定位的结果.图 7中 (a) 展示的是随着 Percent 值的增加, 定位结果的平均误差. (b) 展示的是在不同的 Percent 值下有定位结果输出的量占输入指纹总量的比例.从图中可以很直观的看出, 随着 Percent 值得增大相应的平均误差值也会相应增大, 并且会有更多的定位结果输出, 当 Percent 值小于 30%时虽然平均误差很小, 但是能反馈的结果是非常少的, 在真实环境中不能对用户位置做及时的矫正.当用户反馈大于 50%虽然会有更对的反馈结果, 但是定位会很大.综合考虑, 本文中Percent 值确定为 40%.图 7 训练样本量 Percent 值得影响 Fig.7 Influence of Percent 下载原图5.2 DBSCAN 参数选择由于 DBSCAN 聚类算法对最少包含点数 (Min P) 敏感, 为了找到最优 Min P 值, 我们对一系列不同的 Min P 值进行了实验分析.首先在实验区域随机选取了目标