首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对“N近邻”进行多维搜索?

如何对“N近邻”进行多维搜索?
EN

Stack Overflow用户
提问于 2011-08-09 18:39:18
回答 1查看 397关注 0票数 1

我正在为外汇市场设计一个自动化交易软件。在MYSQL数据库中,我每隔5分钟就有几年的市场数据。除了价格和时间,我还有5个不同的指标来衡量这个数据。

代码语言:javascript
复制
[Time|Price|M1|M2|M3|M4|M5] 
x ~400,0000

Time是主键,M1M5是不同的度量标准(例如移动平均值的标准差或斜率)。

给定输入M1M2M3M4和M5,如何有效地定位最近的5,000个邻居?请注意,每个指标都是浮点数,并且具有不同的分布/范围。

EN

回答 1

Stack Overflow用户

发布于 2011-08-09 22:08:22

我不知道你怎么确定最近的邻居。似乎你可以在每个指标之间做一个绝对值的差值,然后把它们加起来。(如果没有绝对值,您可能会有两个指标相距甚远,但却相互抵消。)

因此,最近的邻居将被定义为具有此任务中的最低值:

代码语言:javascript
复制
ABS(M1 - @M1) + ABS(M2 - @M2) + ABS(M3 - @M3) + ABS(M4 - @M4) + ABS(M5 - @M5)

如果这行得通,那么查询将是:

代码语言:javascript
复制
SELECT TOP 5000 *
FROM YourTable
ORDER BY ABS(M1 - @M1) + ABS(M2 - @M2) + ABS(M3 - @M3) + ABS(M4 - @M4) + ABS(M5 - @M5)

如果您愿意,您还可以对每个指标进行不同的加权:

代码语言:javascript
复制
SELECT TOP 5000 *
FROM YourTable
ORDER BY 2 * ABS(M1 - @M1) + 5 * ABS(M2 - @M2) + ABS(M3 - @M3) + 3 * ABS(M4 - @M4) + ABS(M5 - @M5)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6994876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档