赛题回顾
这是一个室内定位问题。给定交易时的环境信息(包括GPS,wifi信息),确定交易所处的商铺。详情可参见比赛页面。
knn方案概述
针对测试集中的每一条记录,构造候选shop集合,用模型输出每个候选的概率值,然后选取概率值最大的作为该条记录的预测shop,即二分类。训练集和测试集的构造方法图示如下:
训练:
row_id | 候选 | 特征 | label |
---|---|---|---|
1 | shop_1 | ... | 1 |
1 | shop_2 | ... | 0 |
1 | shop_3 | ... | 0 |
2 | shop_1 | ... | 0 |
2 | shop_2 | ... | 1 |
2 | shop_3 | ... | 0 |
测试:
row_id | 候选 | 特征 | 输出概率 | 预测 |
---|---|---|---|---|
3 | shop_1 | ... | 0.6 | |
3 | shop_2 | ... | 0.8 | |
3 | shop_3 | ... | 0.9 | √ |
4 | shop_1 | ... | 0.1 | |
4 | shop_2 | ... | 0.9 | √ |
4 | shop_3 | ... | 0.2 |
直接选取目标mall中所有的shop作为候选。
为了实现室内定位,采取平面定位结合纵向定位方式进行实现。
特征
平面定位特征
- mall
- 与候选shop的GPS距离
纵向定位特征
- wifi强度最大的(或者连接这的)wifi及其强度
- wifi强度第二大的wifi及其强度
- wifi强度第三大的wifi及其强度
k值的选取
较多情况下,目标商铺所在位置如下表。每一行代表一层楼。
商铺1 | 商铺2 | 商铺3 |
商铺4 | 目标商铺 | 商铺5 |
商铺6 | 商铺7 | 商铺8 |
即有可能受到干扰的且最近的wifi信号。因此k值取值不低于9。这里取21。
遇到的问题
- SQL不支持循环,需要对500个mall分别处理
- wifi信号太多,且存在信号强度为null的数据
处理方案:
- 采用分区表实现分mall。避免太多表的存在,容易出错。对每个mall放到多个窗口中同时跑。
- 只选取出现次数大于20次的wifi,对于null的数据,当做干扰,直接删除