我正在研究R中的'异常'检测任务。我的数据集有大约30,000条记录,其中大约200条是异常的。它有大约30列&都是定量的。一些变量高度相关(~0.9)。异常我的意思是某些记录中某些记录具有异常(高/低)值,而某些记录具有不符合预期的相关变量。下面的例子将给出一些想法。
假设车速&心率高度正相关。通常车速在40到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随着速度的增加而增加,我们预计第五记录的心率会降低,而我们的值会更高。
我可以使用箱形图等识别柱级异常,但发现很难识别第二种类型。在某处,我读到了基于PCA的异常检测,但我无法在R中找到它的实现。
在这种情况下,请你帮我解决R中基于PCA的异常检测问题。我的谷歌搜索主要是扔时间序列相关的东西,这不是我要找的东西。
注意:在Microsoft Azure机器学习中有一个类似的实现 - “基于PCA的信用风险异常检测”可以完成这项工作,但我不知道它背后的逻辑和在R中复制相同的内容。