我在使用PCA后在2D中可视化数据集。 1维是时间,Y维是第一PCA组件。如图所示,点(A,B)之间存在相对较好的分离。但不幸的是,聚类方法(DBSCAN,SMO,KMEANS,Hierarchical)无法将这些点聚类在2个聚类中。正如你在A节中看到的那样,有一个相对连续性,这个连续的过程已经完成,B节开始了,与A和B之间的过去数据相比,存在相当大的差距。
如果您可以向我介绍任何方法和算法(或根据数据考虑其分布来设计任何度量标准),我将非常感激,以便能够在没有可视化的情况下在A和B之间进行分离。非常感谢你。
这是上图(第一个)的2个PCA组件图。另一个也是其他数据集的组件图,我也得到了不好的结果。
答案 0 :(得分:2)
这是时间序列,显然您正在寻找更改点或想要细分此时间序列。
不将此数据集视为二维x-y数据集,并且不要在此处使用群集;而是选择一个实际为时间序列设计的算法。
作为首发,编制series[x] - series[x-1]
,即一阶导数。您可能需要删除季节性以改善结果。没有聚类算法会做到这一点,他们没有季节性或时间的概念。
答案 1 :(得分:1)
如果PCA为您提供良好的分离,您可以在通过PCA特征向量投影数据后尝试进行聚类。如果您不想使用PCA,那么无论如何您都需要另一种数据投影方法,因为失败的聚类方法意味着您的数据在原始维度中是不可分离的。您可以查看非线性聚类方法,例如基于内核的聚类方法或spectral clustering。或者定义您自己的非欧几里德度量标准,这实际上只是另一种数据投影方法。
但使用PCA显然最适合您的情况(Occam razor:使用最适合您数据的模型)。
答案 2 :(得分:0)
我不知道你会有一个简单的时间设计一个算法来处理这种情况,这是危险的(通过现有的能力)接近“读我的思想”聚类。你有一个重要的小巷,你已经标记了分裂。你有一个差不多(1700,+ 1/3)和一个孤立的近(1850,0.45)。这些将使得很难说服一般用法算法在你想要的位置做出一个除法,尽管那个(我认为)仍然是计算上最明显的。
光谱聚类很有助于找到差距;我先尝试一下。你可能不得不要求它为3或4个簇分开你想要的一般。您也可以尝试使用SVM(善于在数据中找到小巷),但在无监督的环境中这样做是非常棘手的部分。
不,KMeans不会工作;它对密度或连接性不敏感。