SE-WKNN(Spearman Enhanced Weighted KNN)融合结构相似性的室内定位算法

在众多指纹定位算法中,KNNWKNN 是最常见的,但今天我们来聊一个“升级版”的算法 —— SE-WKNN(Spearman Enhanced WKNN)

WKNN 是怎么定位的?(之前的博客提到过,想详细看的同学可以去主页找找)

简单来讲,普通的 WKNN(加权 K 最近邻)这么做:

  1. 测量你的 RSSI 向量

  2. 计算你和每个参考点之间的“欧氏距离”,越近说明越像

  3. 选出最近的 K 个参考点

  4. 根据距离加权平均他们的位置坐标,作为你的预测位置

看起来合理,但WKNN 只关心信号强度的“差值”,它没考虑一个问题:
如果两组信号的强弱顺序一样,只是整体偏高或偏低,它们其实也可能来自同一个位置。

 SE-WKNN 是怎么改进的?

它引入了一个概念:RSSI 信号的结构相似性
我们不仅看你和参考点之间 RSSI 差了多少,还要看你们的 强弱顺序是否一致。

这就用到了一个统计学工具:斯皮尔曼相关系数(Spearman Correlation)

什么是斯皮尔曼相关系数?

简单理解:

  • 如果你的信号强弱排序是:

    A > B > C

    而参考点的排序也是:

    A > B > C

    → 说明非常像 → 斯皮尔曼相关 ≈ 1

  • 如果你的是:

    C > B > A

    → 顺序完全反了 → 斯皮尔曼相关 ≈ -1

它就像一个“信号形状相似度”打分器。

SE-WKNN 的工作流程

我们用一句话总结它:

SE-WKNN = 欧氏距离 × 信号结构差异权重

💡 具体流程:

  1. 对每个参考点:

    • 计算它与你的 RSSI 欧氏距离 d

    • 计算你们的斯皮尔曼相关 ρ

  2. 融合得分:

    • 计算加权因子 S=3−ρ,相关越高,S 越小

    • 计算融合距离:dfused=d×S

  3. 选出 K 个融合距离最小的参考点

  4. 根据这些参考点的位置,用加权平均预测当前位置

✅ 举个例子

信标你测的 RSSI参考点 RSSI排名(你)排名(参考)
A-70-6811
B-75-7722
C-80-8233

虽然绝对值有偏差,但信号排序结构一致 → 斯皮尔曼相关高 → 算法认为“你俩模式很像” → 位置可能就很接近。


🆚 与其他算法对比

算法思想特点
ED-WKNN欧氏距离加权简单、直接
MD-WKNN曼哈顿距离加权抗部分异常能力好
SE-WKNN融合距离 × 信号结构模式识别更强,抗偏移能力更好

🧪 什么时候 SE-WKNN 表现好?

  • 指纹库采得比较规范、信号稳定时,SE-WKNN 优势很明显

  • 测试点 RSSI 可能整体偏高或偏低,但信号强弱关系没乱

  • 尤其适合信标布局密集、信号维度多的环境


❗注意:它不一定“万能”

  • 如果信号波动太大、丢失严重,排名结构不稳定,斯皮尔曼就不太靠谱

  • 算法稍复杂,速度上比 ED-WKNN 略慢,但大多数情况仍在秒级

另外,SE-WKNN 对 K非常敏感!

🔍 为什么 SE-WKNN 对 K 更敏感?

🎯 原因 1:融合距离“排序性强”,加入次优点会干扰定位
  • SE-WKNN 的“融合距离” = 欧氏距离 × 排名相关因子(3 - ρ)

  • 一旦 K 设置太大,会包含一些排序不太相关、但“数值接近”的参考点;

  • 它们的 Spearman 相关性不好,就会拉低整体定位结果(因为加权平均了这些偏差点);

✅ 所以:SE-WKNN 更适合选一个“小而精”的 K 值(比如 3~5)
❌ 过大的 K 值可能引入“误导点”,让最终预测位置偏离真实位置。


🎯 原因 2:排序相关性不是线性分布的,容易“极化”
  • Spearman 本身是非线性指标,它对“排序错误一两个”就很敏感;

  • 当你多选一些参考点,Spearman 低的点就会让“融合距离”急剧放大;

  • 最终加权时,这些点几乎等于 权重趋近于 0,等于白算了。

✅ 这让 SE-WKNN 在小 K 值下已经能达到相对较高精度,再加点反而没啥提升甚至可能拖后腿


📌 对比其他算法的敏感度

算法对 K 的敏感度原因
ED-WKNN中等偏弱欧氏距离线性,K 越大越平滑
MD-WKNN中等偏弱曼哈顿距离更稳健,但依赖密集指纹库
SE-WKNN✅敏感融合排序+距离,K 大可能引入低相关参考点
RS-WKNN❌不敏感多次采样平均抵消了个别点误差,对 K 鲁棒性强

K 从 1 到 10 的误差变化图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值