我正在开发一个涉及使用K-means模型进行异常检测的项目。
然而,为了获得几乎精确和精确的结果,我需要找到K的最佳值。
我的算法依赖于我的模型中的异常值通常会自己放在群集上的想法。通常"正常"数据将与其他正常数据聚集在一起,但异常数据将形成自己的聚类,因此表明存在异常。但是,我需要找到K的最佳值才能使我的算法工作并查看它是否好。
关于如何找到好的K值的任何想法?
这是一个带有" normal"的示例文件。我将使用虚拟数据来训练我的模型:
User
答案 0 :(得分:0)
使用K-means的分层版本。 Apache Spark拥有以这种方式工作的BisectingKMeans。它会根据您拥有的记录数量计算出K的良好值。这样,您在创建模型时就不必定义K(群集)。如果你对它指定的那个感到不舒服,你仍然可以设置K的值,但它通常可以正常工作。
感谢@Peheje的提示。