我遇到的问题是矩形中有矩形。想想一张地图,除了以下特征,关键点是:具有相似密度的矩形通常与其他矩形共享相似的尺寸和在 x 轴上的相似位置,但有时这些矩形之间的距离可能很大但通常很小。如果 x 轴上的位置或尺寸明显偏离,它们就不会相似。
矩形不相交,较小的矩形完全位于较大的矩形内。
矩形通常具有相似的 x 位置和相似的尺寸(相似的高度和宽度),并且内部具有较小的矩形。矩形本身将被视为它自己的集群。
有时这些集群与另一个集群的距离可能相当大(想想岛屿)。通常这些簇共享相同或相似的维度以及相同或相似的子矩形密度。如果是这样,尽管两个集群之间存在距离,但它们应被视为同一集群的一部分。
- 矩形越密集(内部的矩形越小),附近有相似或相同的密集矩形共享相同或相似维度的可能性就越大。
我附上了一张图表来更清楚地描述这种情况:
红色边框表示这些组是异常值,不属于任何集群并被忽略。
蓝色边框有很多簇(黑色边框包含黑色实心矩形)。由于上述标准(相似的宽度、相似的 X 位置、相似的密度),它们形成了一组相似的集群。由于标准(相似的宽度、相似的 X 位置、相似的密度),即使是右下角的集群仍然被认为是该组的一部分。
绿松石边框有很多簇(黑色边框包含黑色实心矩形)。然而,这些集群在维度、x 位置和密度上与蓝色边框中的集群不同。他们被认为是他们自己的一个群体。
到目前为止,我发现 DBSCAN 之类的密度聚类似乎很完美,因为它考虑了噪声(异常值),而且您不需要提前知道会有多少聚类。
但是,您需要定义形成集群所需的最小点数和阈值距离。如果您不知道这两个会发生什么,并且它可能会根据上述问题而有所不同?
另一个看似合理的解决方案是分层(凝聚)聚类(r-tree),但我担心我仍然需要知道树深度级别的截止点以确定它是否是一个集群。