【问题标题】:Machine Learning Method to Classify using Demand使用需求分类的机器学习方法
【发布时间】:2018-12-07 21:49:24
【问题描述】:

我有以下场景:

我的输入是一组points。每个点(Long_Lat 坐标)对应一个区域的子部分的质心,并且对学校有需求。就像 50 个需要在附近上学的孩子一样。

在使用集群方法(like k-means or DBscan)按邻近度聚合这些点后,我想将需求点分配给学校,以使集群需求(该​​集群上所有点需求的总和)得到满足.

换句话说,我想在该集群上创建学校并将孩子(积分)分配给这些学校。

学校有固定容量限制

即:我需要 3 所学校(可容纳 40 人),以供应集群 C4 的 100 名儿童需求(P1、P2、P3)。

主要目标当然是了解这些学校的位置。但我可以使用逻辑检索它。

我应该使用什么方法来填充集群的容量? 这是正确的方法吗?

【问题讨论】:

  • “应该”在很大程度上取决于您的健康标准——您未能提供这些标准。看来您已经用 k-means 解决了大部分分配问题。例如,当您设置 k=3(对于您拥有的三所学校)并运行 k-means 时会发生什么?这怎么不能很好地解决你的问题?我们需要您专注于特定问题,以使其适合 Stack Overflow。
  • 对不起,如果不能更具体。 K-means 和 Dbscan 仅使用欧几里得距离。如何将 需求 限制添加到集群化中?
  • “使用欧几里得距离”驱动聚类。我仍然不清楚:这是否也推动了你的学生安置?您是否试图尽量减少所有学生上学的总距离?您需要最佳解决方案,还是一个近似的“好”解决方案就足够了?
  • 我真正需要的是为 3 个学校规模创建所有可能的学校配置。之后,我可以解决最佳使用设施位置(使用 gurobi)。但首先我需要初始点。以为我可以使用 ML 来创建它们。

标签: python machine-learning scikit-learn geojson


【解决方案1】:

对于分布良好的数据,我希望最有效的方法是从 k-means 聚类开始。如果每个生成的集群都符合学校的能力,那么您就有了解决方案。

但是,您“担心”的情况是至少有一所学校的容量过剩。比如你在一条宽阔的河流的北边有20个孩子,南边有90个孩子,而学校有40个容量:你需要从南到北至少分配10个孩子。

处理这个问题的算法方法是实现一个不同的错误函数:添加一个严重惩罚(即+无穷大成本)将第 41 个学生添加到该集群的子句。

另一种方法是让集群正常聚合,但之后进行调整。假设 SE 学校有 46 名学生,SW 有 44 名学生:将离北校最近的 6 和 4 学生送到那所学校。

这些指导对您有用吗?您是否有多个学校的容量过剩和不足的情况?我不想过度设计解决方案。

【讨论】:

  • 经过一番挖掘后,我开始认为这个问题没有开箱即用的解决方案,并开始按照您的建议进行思考。我认为根据您的推理对 DBscan 进行一些修改就足够了,因为我可以使用邻近度生成集群,并一一检查容量。谢谢!
猜你喜欢
  • 2021-06-17
  • 2012-03-14
  • 2020-05-04
  • 2016-08-16
  • 2023-04-04
  • 2021-04-14
  • 2018-03-05
  • 1970-01-01
  • 2018-09-05
相关资源
最近更新 更多