在使用PCA之后,我已经在2D中可视化了一个数据集。1维是时间,Y维是第一个PCA分量。如图所示,点(A,B)之间有相对较好的分离。但不幸的是,聚类方法(DBSCAN,SMO,KMEANS,Hierarchical)不能将这些点聚类到两个聚类中。正如你在A部分看到的,有一个相对的连续性,这个连续的过程结束了,B部分开始了,与A和B之间的过去数据相比,有相当大的差距。
如果您能向我介绍任何方法和算法(或从数据中设计考虑其分布的任何度量),以便能够在不可视化的情况下在A和B之间进行分离,我将不胜感激。非常感谢。

这是上图的两个PCA分量的图(第一个)。另一个是其他数据集的组件图,我也得到了不好的结果。


发布于 2016-07-30 16:55:59
这是一个时间序列,显然你正在寻找change points,或者想要对这个时间序列进行分段。
不要将此数据集视为二维x-y数据集,也不要在这里使用聚类;而是选择一种实际上是为时间序列设计的算法。
首先,绘制series[x] - series[x-1],即一阶导数。您可能需要删除季节性以改善结果。没有聚类算法可以做到这一点,它们没有季节性或时间的概念。
发布于 2016-07-30 07:01:07
如果PCA给了你一个很好的分离,你可以在通过PCA特征向量投影数据后尝试聚类。如果你不想使用PCA,那么无论如何你都需要一种替代的数据投影方法,因为失败的聚类方法意味着你的数据在原始维度中是不可分的。您可以看看非线性聚类方法,例如基于内核的方法或spectral clustering。或者定义您自己的非欧几里得度量,这实际上只是另一种数据投影方法。
但显然,使用PCA似乎是最适合您的情况(Occam razor :使用适合您的数据的最简单模型)。
发布于 2016-07-30 07:04:29
我不知道你会不会很容易设计出一种算法来处理这种情况,这是危险的(根据目前的能力)接近于“读懂我的想法”的聚类。你有一条重要的小巷,在那里你已经标记了分区。你在(1700,+1/3)附近有一个几乎一样好的,在(1850,0.45)附近有一个隔离。这将使它很难说服一个通用的算法在你想要的点上只做一个划分,尽管那个(我认为)在计算上仍然是最明显的。
频谱聚类在查找差距方面效果很好;我会先试一试。你可能需要请求3个或4个集群来分离你想要的集群。您也可以尝试使用SVM (擅长在数据中查找小巷),但在无监督的上下文中执行此操作是棘手的部分。
不,KMeans不会工作;它对密度或连接性不敏感。
https://stackoverflow.com/questions/38668548
复制相似问题