1

在使用PCA之后,我在2D中可视化了一个数据集。 1维是时间,Y维是第一个PCA组件。如图所示,点(A,B)之间有相对较好的分离。但不幸的是,聚类方法(DBSCAN,SMO,KMEANS,Hierarchical)无法将这些点集中在两个群集中。正如您在A部分看到的那样,存在相对连续性,并且这个连续过程结束并且B部分开始,并且与A和B之间的过去数据相比存在相当大的缺口。聚类视觉可分簇的算法

如果您能介绍,我将非常感激我可以使用任何方法和算法(或者考虑数据的分布从数据中设计任何度量),以便能够在没有可视化的情况下在A和B之间进行分离。非常感谢。

Mentioned Figure - Plot of points

这是为上述区2个PCA分量(第一个)的曲线图。另一个也是其他数据集的组件的情节,我也得到了不好的结果。 Plot of PCA compnents-bad results

Plot of PCA components for another dataset-bad results

回答

1

如果PCA给你一个很好的分离,你可以尝试通过您的PCA特征向量投影的数据后,群集。如果您不想使用PCA,则无论如何您需要一种替代数据投影方法,因为失败的集群方法意味着您的数据在原始维度中不可分离。您可以查看非线性聚类方法,例如基于内核的聚类方法或spectral clustering。或者定义你自己的非欧几里德度量,这实际上是另一种数据投影方法。

但是,使用PCA显然是最适合您的情况(Occam剃须刀:使用适合您数据的最简单模型)。

+0

谢谢。我想使用PCA。你能解释更多吗?因为我在PCA组件上使用了集群,但没有得到期望的结果。 – Arkan

+1

您是否正在学习第一个数据集上的PCA投影(这会给您带来好的结果),然后在第二个更难的数据集上应用投影(无需学习!)?如果这对你没有帮助,那么你的确应该看看光谱聚类,或者像Anony-Mousse所说的时间序列,因为显然你应该学习时间上的重复图案(A),它有时可能会破裂(B,异常) 。 – gaborous

+0

谢谢。请考虑第二和第三个情节。 x和y轴是PCA组件(PC 1和PC2)。你知道任何测试光谱的好工具吗?我找到了一些Matlab代码,但它们没有很好的结果,并且像这些2个数据集(2和3)上的其他聚类方法一样。 – Arkan

0

我不知道你会很容易地设计一个算法来处理这种情况,这很危险(通过当前功能)接近“读我的思维”集群。你有一个重要的胡同,你已经标记了该部门。你有一个几乎一样好(1700,+1/3)和一个孤立(1850,0.45)附近。这些将使得很难说服一个通用算法在你想要的地方做出一个划分,尽管那是一个(我认为)仍然是计算最明显的。

光谱聚类在找到差距方面效果很好;我会先尝试一下。你可能不得不要求它为3或4个簇来分离你想要的一个。你也可以尝试玩SVM(善于发现数据中的小巷),但是在无监督的环境下做这件事是棘手的部分。

不,KMeans不会工作;它对密度或连接不敏感。

+0

谢谢你的回复。你能解释一些关于光谱聚类的内容吗?直到现在我还没有使用它们。 – Arkan

+0

如果您在完成初步调查后有特殊疑问*,我会很乐意解释。然而,StackOverflow不是一个教程网站:我们期望*你*做最初的研究并带着特定的问题来到这里。 “多解释一点”太开放了。 – Prune

+0

你说得对。我第一次听到光谱。其实我以前遇到过它,但没有名字。我正在寻找这个问题的好工具,我找不到任何好的工具(除了一些无效的Matlab代码)。有没有人? – Arkan

2

这是一个时间序列,显然你正在寻找变化点或想这个时间序列。

不是把这个数据集当作二维x-y数据集,这里不要使用聚类;而是选择一个实际为时间序列设计的算法。

作为起始者,绘制series[x] - series[x-1],即一阶导数。您可能需要删除季节性以改善结果。没有聚类算法会这样做,他们没有季节性或时间的概念。

+0

谢谢Anony-Mousse。像往常一样敏锐!实际上,A部分代表正常点,B部分代表异常值或者说异常值。现在,我应该可以用PC组件以无人监督的方式将它们分开。 PC组件在一些数据集中有很好的分离,但在其他一些数据集中却不太好。你能解释更多的处理这种分布,并能够达到相对分离吗? – Arkan

+0

先删除季节性! –

+0

信息已更新。较早的图是PCA第一部分的时间图。我当然不是想要取得最好的结果。有2045个正常点和200个异常点。例如,在一个群集中大约有100-120个B点对于这两个数据集来说是非常好的和足够的。 – Arkan