我正在研究一个涉及使用K均值模型进行异常检测的项目。在K-Means算法(Apache Spark)中查找K的完美值
但是,要获得精确的几乎和精确的结果,我需要找到K.
我的算法依赖于在我的模型的异常值一般由自己放置在群集上的想法的最佳值。通常,“正常”数据将与其他正常数据聚集在一起,但异常数据会形成它们自己的聚类,因此表明存在异常。但是,我需要找到K的最佳值,以便我的算法能够正常工作,并查看它是否合适。
关于如何找到一个好的K值的任何想法?
这是“正常的”虚拟数据的样本文件,我会用训练我的模型:
Name Size Records
File1 1013 105727
File2 990 104230
File3 1520 110542
File4 2198 115369
File5 2026 113430
File6 1844 112105
File7 1216 108159
File8 1520 110408
File9 1013 105359
File10 1317 108428
File11 1925 112553
File12 1449 109456
File13 1803 111436
File14 2036 115937
File15 2043 116383
您是否考虑过使用其他聚类方法,如分层聚类?它可以帮助你选择K,如果你没有一个具有“真实”群集的测试集。 – Peheje
那是怎么回事?我刚刚浏览了Apache的Spark文档,他们确实支持分层聚类(平分K均值),但是有什么区别,它如何帮助我找到K而不是普通的K均值? – SVCS1994
有用于spark的dbscan的实现。这一个似乎非常适合你的任务。如果你想找到最优的k,你可能需要使用非参数贝叶斯方法。例如,中国餐馆过程。会在颈部疼痛。 – CAFEBABE