Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Machine learning 高维聚类方法的选择?_Machine Learning_Cluster Analysis_Data Mining - Fatal编程技术网

Machine learning 高维聚类方法的选择?

Machine learning 高维聚类方法的选择?,machine-learning,cluster-analysis,data-mining,Machine Learning,Cluster Analysis,Data Mining,如果要聚类的数据实际上是点(2D(x,y)或3D(x,y,z)),那么选择聚类方法将非常直观。因为我们可以绘制它们并将它们可视化,所以我们在某种程度上更好地知道哪种聚类方法更合适 e.g.1如果我的2D数据集是右上角显示的格式,我会知道K-means在这里可能不是一个明智的选择,而DBSCAN似乎是一个更好的主意 然而,正如所述: 虽然这些例子给出了一些关于算法的直觉,但是 直觉可能不适用于高维数据 好了,在大多数盗版问题上,我们没有这么简单的数据。最有可能的是,我们有高维元组,不能像数据那样

如果要聚类的数据实际上是点(2D
(x,y)
或3D
(x,y,z)
),那么选择聚类方法将非常直观。因为我们可以绘制它们并将它们可视化,所以我们在某种程度上更好地知道哪种聚类方法更合适

e.g.1如果我的2D数据集是右上角显示的格式,我会知道
K-means
在这里可能不是一个明智的选择,而
DBSCAN
似乎是一个更好的主意

然而,正如所述:

虽然这些例子给出了一些关于算法的直觉,但是 直觉可能不适用于高维数据

好了,在大多数盗版问题上,我们没有这么简单的数据。最有可能的是,我们有高维元组,不能像数据那样可视化

例如2我希望对一个数据集进行聚类,其中每个数据都表示为一个4-D元组
。我无法想象它在坐标系中的形象,也无法像以前那样观察它的分布。因此,在这种情况下,我不能说
DBSCAN
优于
K-means

所以我的问题是:


如何为这种“不可见”的高维情况选择合适的聚类方法?

至少有两种常见的通用方法:

  • 可以使用一些来实际可视化高维数据,有几十种流行的解决方案,包括(但不限于):

    • 主成分分析
    • Sammon映射
    • 自编码神经网络
    • 核主成分分析
    • 等值线图
    之后,该方法返回到原始空间,并使用一些基于缩减空间中的观察结果似乎合理的技术,或在缩减空间本身执行聚类。第一种方法使用所有可用信息,但由于缩减过程引起的差异,可能无效。第二种方法可以确保您的观察和选择是有效的(因为您将问题简化为二维/三维的好问题),但由于使用了转换,它会丢失大量信息

  • 我们尝试了许多不同的算法,并选择具有最佳度量的算法(已经提出了许多聚类评估度量)。这是一种计算成本很高的方法,但偏差较小(因为降低维数会导致所用转换后的信息变化)


  • 的确,在欧几里德高维数据中,高维数据不容易可视化,但并不是说对它们没有任何限制

    除此之外,我还要补充一点,仅需4个功能(您的尺寸),您就可以轻松地尝试。或者简单地尝试一次获取两个特性(总共6次),试图找出两者之间的相互关系(通常是相关性和依赖性)。或者你甚至可以一次使用三个3d空间

    那么,如何从这些可视化中获得一些信息呢?好吧,这不像在欧几里德空间中那么容易,但关键是要直观地发现数据是否聚集在某些组中(例如,平行坐标图的轴上的某些值附近),并思考数据是否以某种方式可分离(例如,如果它在散点图中形成圆形或线可分离的区域)

    有点离题:您发布的图表并没有显示出给定某些特定数据分布的每个算法的能力,它只是强调了某些算法的性质:例如,k-means只能分离凸区域和椭球区域(请记住,即使在第N维中也存在凸性和椭球体)。我的意思是,没有一条规则规定:鉴于此图中所示的分布,因此必须选择正确的聚类算法

    我建议使用一个数据挖掘工具箱,让您能够探索和可视化数据(并轻松转换它们,因为您可以通过转换、投影和缩减来更改它们的拓扑结构,请查看lejlot的另一个答案),例如(另外,您不必自己实现所有算法)

    最后,我将为您指出此资源的不同之处,以便您可以比较不同算法的结果。

    聚类中的“高维”在密集数据中可能从10-20维开始,在稀疏数据(例如文本)中可能从1000多维开始

    4维不是什么大问题,仍然可以可视化;例如,使用多个2d投影(甚至3d,使用旋转);或者使用平行坐标。使用散点图矩阵

    但是,您仍然应该做的第一件事是花费大量时间进行预处理,并找到合适的距离函数

    如果你真的需要高维数据的方法,看看子空间聚类和相关聚类,例如

    • Kriegel、Hans Peter、Peer Kröger和Arthur Zimek。对高维数据进行聚类:关于子空间聚类、基于模式的聚类和相关性聚类的调查。ACM关于从数据中发现知识的交易(TKDD)3.1(2009):1

    该调查的作者还发布了一个软件框架,其中包含许多高级聚类方法(不仅仅是k-means,还有e.h.CASH、FourC、ERiC):

    我还建议使用软子空间聚类,这是目前一种非常常见的方法,通过添加特征权重来查找最相关的特征。例如,您可以使用这些权重来提高性能,并使用欧几里德距离改进BMU计算。

    1。即使将维数降低为一个可视值zable extend(比如3D),在我看来对vi来说仍然毫无意义