有时缺少数据的机器学习

数据挖掘 机器学习 神经网络 聚类 k-均值 无监督学习
2022-02-20 07:08:08

我正在尝试根据路由器上的 RSSI 信号进行室内定位系统,我正在嗅探我的网络,所以我知道与路由器天线相关的手机的 RSSI 是什么(我的房子里有 5 根天线)。

iPhone 并不总是广播探测请求,所以我只能实时了解与设备连接的路由器相关的 RSSI 信号,而不是其他路由器。为了便于理解:有时我的设备的 RSSI 与 5 个路由器相关,有时只有 3 个,在最坏的情况下只有 1 个,所以我的数据有时看起来像这样:

room: 1, device_id: 1, rssi1: -80, rssi2: unknown, rssi3: -55, rssi4: unknown, rssi5: unknown

或者:

room: 1, device_id: 1, rssi1: -80, rssi2: -95, rssi3: -55, rssi4: -102, rssi5: -96

或者:

room: 1, device_id: 1, rssi1: -80, rssi2: unknown, rssi3: unknown, rssi4: unknown, rssi5: unknown

它是基于房间的,所以我不是三角测量。我试图通过观察信号的行为来预测我在房子里的哪个房间。

机器学习将是完美的,但如果数据始终存在并且有时不会丢失某些值。当有时我拥有所有数据而有时只有少数数据时,我应该在这种情况下使用哪种数据算法。

3个回答

有几种方法可以处理丢失的数据。

  • 用平均值/中位数替换缺失值。如果缺失值非常少,那么这种方法会很合适。还取决于您的数据的倾斜程度。
  • 插补。建立线性回归模型,根据其他参数预测缺失值。KNN 也可用于预测缺失值

还有其他处理缺失数据的方法,例如模仿参数、删除缺失数据等。

如果只有一小部分功能缺失,您可以使用imputation对于更严重的情况,您可以使用概率模型,例如高斯过程,它可以让您边缘化缺失的特征。或者,使用dropout 正则化训练神经网络。当您丢失数据时,只需真正“删除”丢失的连接即可。由于您的网络已经针对缺少的功能进行了训练,因此没有它们应该可以正常工作。

matlab 中的缺失值将被值指示符替换。例如,以下值将很容易清除:

  • 一段时间 (。)
  • 不适用
  • -99
  • 空单元格