南京市雨花台区凤集大道15号

K-means聚类算法如何应对数据的噪音和离散特征处理的问题?


不请自来:) 先回答你的问题,再顺道谈谈以K-means为原型的几种针对不同数据类型的聚类算法。

问题一:该算法要求训练数据中都是正向数据,如果训练数据中包含了异常数据,会导致阈值的值过大,从而异常测试数据进来时可能会漏报。

现实中我们很难保证训练数据中没有异常数据,那在训练过程中有没有什么方法可以减少异常数据对训练结果的干扰?(例如可视化后肉眼识别一些离群的数据点,并把它们从样本中去除?或者按比例缩小阈值?)我的看法:聚类本身就是最常用的异常值检测方法,大部分非监督的异常值检测都依靠聚类。

离群值(异常值)对非监督聚类的影响很明显,因为需要一边学习簇的特征,一边防止异常值的干扰。

并不是每一种聚类都擅长异常值检测:K-means和层次聚类(hierarchical clustering)对离群值非常敏感,因为其要求将每个点都划分到一个簇中(此处我们默认的K-means是hard assignment)。

而且其相似度度量(Similarity Measure)默认是sum of euclidean squares,优化目标是将簇内差异最小化(minimize with-in clustering variation),因此即使单个噪音点也可以对整个簇造成很大的扰动。

常见的解决方法有: