【发布时间】:2021-04-07 03:38:44
【问题描述】:
这个问题涉及找到两个最小-最大标准过滤器来生成数据集中的最高分数总和。
我有一个数据集,有 3 列。 x, y, score,超过 100 万行。
| x | y | score |
|---|---|---|
| 3.6 | 1.2 | -5 |
| 4.2 | 1.2 | -4 |
| 1.2 | 30.2 | 1 |
| 2.9 | 6.8 | 6 |
| 3.1 | 5.8 | 7 |
| 0.1 | 15.8 | 7 |
数据可能有也可能没有相关性。
我想在 x 和 y 上找到一个最小/最大值的标准过滤器,它可以为我提供最高可能的分数总和。
这就是查询在 SQL 中的样子。
SELECT SUM(score)
FROM mytable
WHERE
x > xmin AND x < xmax AND
y > ymin AND y < ymax
我正在寻找的是 xmin、xmax、ymin och ymax 的最佳值
需要什么样的优化方法来解决这个问题?实现的具体情况如何?
(最好使用 Java 或 postgres sql 来实现。)
【问题讨论】:
-
您可能应该查看 GIST 索引。
-
由于这是一个可能通过线性规划实现的优化问题,因此请考虑研究导入 Postgres 表的数据科学解决方案(R、Python、Matlab、SAS 等)。
-
感谢您的回答。我会研究 GIST 索引。
-
@Parfait 你有这种优化问题的经验吗?您建议使用什么优化算法?
-
你有负分吗?否则只需使用
x/ymin=-infinity, x/ymax=+infinity。
标签: java sql postgresql optimization mathematical-optimization