0

我正在研究 R 中的“异常”检测任务。我的数据集有大约 30,000 条记录,其中大约 200 条是异常的。它有大约 30 列,都是定量的。一些变量高度相关(~0.9)。异常是指某些记录的某些列具有异常(高/低)值,而有些记录的相关变量未按预期运行。下面的例子会给出一些想法。

假设车速和心率高度正相关。通常车速在 40 和 60 之间变化,而心率在 55-70 之间。

time_s  steering    vehicle.speed running.distance heart_rate
0       -0.011734953    40         0.251867414      58
0.01    -0.011734953    50         0.251936555      61
0.02    -0.011734953    60         0.252005577      62
0.03    -0.011734953    60         0.252074778      90
0.04    -0.011734953    40         0.252074778      65

在这里,我们有两种类型的异常。第 4 条记录的 heart_rate 值非常高,而第 5 条记录看起来还不错,如果我们查看各个列。但是我们可以看到 heart_rate 随着速度的增加而增加,我们预计第 5 条记录的心率较低,而我们的值较高。

我可以使用箱线图等识别列级异常,但发现很难识别第二种类型。我在某处读到了基于 PCA 的异常检测,但我在 R 中找不到它的实现。

在这种情况下,您能否帮助我在 R 中进行基于 PCA 的异常检测。我的谷歌搜索主要是抛出与时间序列相关的东西,这不是我想要的。

注意:Microsoft Azure 机器学习中有一个类似的实现——“基于 PCA 的信用风险异常检测”可以完成这项工作,但我不知道它背后的逻辑并在 R 中复制相同的逻辑。

4

0 回答 0