所以,我正在尝试解决这个sku隔离和路由问题以便交付。 以下是这种情况:
有一个区域中心或交付起点,
输入:
问题:
我尝试过使用kmeans& hdbscan但它不支持最大簇大小。
我能否以某种方式推断this smart solution在我的案例中起作用,我的看起来更加层次化。
答案 0 :(得分:1)
声明:在2D空间中,一组点属于同一个集群,如果(并且仅限于)两个点 他们对OX的预测是聚集的,他们对OY的预测是聚集的。
在OX上,A,B,C,D的投影聚集在一起;在OY上,A,B,C,E的投影聚集在一起; 总的来说,A,B和C是聚集的。
确定在一维空间上聚集哪些点:
让我们在实轴上展开一些点。直觉上,有两点属于 如果他们被一个小距离隔开,那就是同一个集群。如果他们分开了 通过“大距离”,它们属于不同的群集。现在我们必须确定是什么 一个'大距离' 以及什么是'小距离' 。
让我们对所有距离进行排序,并寻找阈值。 对于OX坐标为[0,1,3,4,14,15,16,19,29,30,31]的点集,距离 连续点之间将是[1,2,1,10,1,1,3,10,1,1]。排序时,同一组距离, 看起来像[1,1,1,1,1,1,2,3,10,10]。有一个3到10之间的阈值,所以我们将表示所有 距离< = 3为'小距离'以及所有其他距离'距离很远'。
我们如何选择阈值?通过区分两个相邻元素。在我们的 例如,10-3 = 7是大的差异。
如果有多个相等值的阈值,请选择 最右边的;选择最合适的阈值会导致距离很远,否则, 许多距离将被认为是大的,因此,将有许多群集。 但这取决于您的业务需求。您可以将30个位置分组为10个位置中的3个群集, 或者每组3个地点的10个集群。
如果排序的距离类似于[2,4,6,8,10](没有阈值候选者),那么选择一些百分位数 喜欢75%的人:前四分之一将是“大距离”,其他所有人 - “小距离”'
根据他们对OX的预测将点分组成集群:
现在我们知道如何聚类实数,让我们对点进行OX投影,然后将它们聚类。
让我们有以下几点,以及它们的OX坐标: P1(101),P2(12),P3(201),P4(13),P5(202),P6(11),P7(102);
相同点,按其OX坐标排序: P6(11),P2(12),P4(13),P1(101),P7(102),P3(201),P5(202);
接下来,我们将通过OY预测进行另一次分组。
观察1 :当点的索引被排序时,OX预测不是;当我们对OX投影进行排序时, 现在索引不会被排序。
观察2 :在使用OX投影进行聚类时,我们不应期望获得相同的 当我们使用OY投影聚类时的聚类。实际上,我们将交叉获得的结果。 聚类结果不同,因为点的OY坐标完全独立于其OX坐标。 因此,在OY轴上有一组完全不同的值。
确定实际的群集:
我们之前已经对OX和OY投影进行了一些聚类,获得了 不同分组的相同点。现在我们将交叉这些聚类,寻找共同点。
回到我们的第一张照片,在OX给出(A,B,C,D)聚类后聚类,在OY之后得到(A,B,C,E), 这些集合的交集将是(A,B,C) - 最终的集群。但这是一个简单的例子。
一般策略是在OX上进行聚类的carthesian产品,在OY上获得聚类。 对于carthesian产品的每个这样的元素,我们将与OX集群中的元素相交,并与OY集群上的元素相交。 如果我们在OX上有3个集群,在OY上有4个集群,那么这个carthesian产品将有12个元素。我们选择其中一个。 它是一对两个簇A和B:A是OX上的簇,B是OY上的簇。如果A和B有一些共同点, 那么这些点确实是一个集群。
在上面的例子中,从7点开始,我们只获得了一个集群。不太令人印象但我们 可以进一步加入邻居集群。我们不要忘记橙色片段代表的是小距离', 而黑色片段代表“大距离”#。在上图中,来自'群集' P1到集群 P5或P3 + P7,只有一个“大距离”#。从群集P3 + P7到群集P4,有两个大距离加 一小段距离。
免责声明:此程序将世界地图视为矩形(经线是永不相交的平行线)。 而且,它们看起来相距很远,而不是将1度和179度的经线视为彼此接近。 (它们之间的距离是178度,而不是2度) 但是,这不是一个问题,因为大多数时候,交付行为具有区域性,或者至多是国家级。 只要您的国家没有经过180经络,您就可以了。