基本上我有一些每小时和每天的数据,比如
第 1 天
小时,测量 (1,21) (2,22) (3,27) (4,24)
第 2 天,测量 (1,23) (2,26) (3,29) (4,20)
现在我想通过考虑每小时变化以及使用双变量分析的每日变化来找出数据中的异常值......其中包括每小时和测量......
那么考虑到这种情况,哪种聚类算法更适合找出异常值呢?.
基本上我有一些每小时和每天的数据,比如
第 1 天
小时,测量 (1,21) (2,22) (3,27) (4,24)
第 2 天,测量 (1,23) (2,26) (3,29) (4,20)
现在我想通过考虑每小时变化以及使用双变量分析的每日变化来找出数据中的异常值......其中包括每小时和测量......
那么考虑到这种情况,哪种聚类算法更适合找出异常值呢?.
你真的应该对你的数据使用不同的表示。
如果要检测异常值,为什么不使用实际的异常值检测方法?
除此之外,只需阅读一些文献。例如,已知 k-means 存在异常值问题。另一方面,DBSCAN 旨在用于具有“噪声”(DBSCAN 中的 N)的数据,这些数据本质上是异常值。
尽管如此,您表示数据的方式不会使这些都很好地工作。
我可以给你的一个“好”建议(:P)是(根据我的经验)将时间与空间特征相似并不是一个好主意。因此,请注意执行此操作的解决方案。您可能可以从搜索有关时间序列数据的异常值检测的文献开始。
由于数据的性质(它有自己的季节性、趋势、自相关等),您应该使用基于时间序列的异常值检测方法。基于时间序列的异常值有不同的类型(AO、IO 等),它有点复杂,但有一些应用程序可以很容易地实现。
从http://cran.r-project.org/下载最新版本的R。安装包“预测”和“TSA”。
使用 forecast 包的 auto.arima 函数导出最适合您的数据的模型,并将这些变量与您的数据一起传递给 TSA 函数的 detectAO 和 detectIO。这些函数将弹出数据中存在的任何异常值及其时间索引。
R 也很容易与其他应用程序集成,或者只是简单地运行批处理作业......希望对您有所帮助......