基于参数和约束匹配数据
Matching data based on parameters and constraints
我一直在研究 k 最近邻算法,因为我可能会在不久的将来开发一个匹配战士(拳击手)的应用程序。
我提出这个问题的原因是,根据规则集,根据多个参数和约束条件来确定approach/algorithm匹配战士时使用哪个最好。
每个战士的相关属性如下:
- 年龄(战士将被分配到一个年龄组(15、17、19、精英)
- 体重
- 战斗次数
现在有一些关于匹配战士时允许的规则集:
- 战士之间最多间隔2年(除非是精英)
- 重量最多相差 3 公斤
现在显然是完美匹配,所有与会者都与符合规则集的另一名拳击手匹配。
并且最主要的优先事项是尽可能多地匹配彼此的战士。
K-nn 是可行的方法还是有更好的方法?
如果是哪个?
评论太长了。
为了使用 K-nn 获得最佳结果,我建议使用主成分。这些允许您使用更多的维度并通过 space 很好地传播数据以获得良好的邻域。
关于合并现有规则,您有两种选择。也许,最好的方法是将它构建到你的距离函数中。或者,您可以采用较大的邻域并将其构建到组合函数中。
我会选择 k 最近邻搜索。由于您的数据集是低维 space(即 3),我会使用 CGAL 来执行任务。
现在,您唯一需要做的就是像这样创建一个距离函数:
float boxers_dist(Boxer a, Boxer b) {
if(abs(a.year - b.year) > 2 || abs(a.weight - b.weight) > e)
return inf;
// think how you should use the 3 dimensions you have, to compute distance
}
你已经完成了......现在去战斗吧!
我一直在研究 k 最近邻算法,因为我可能会在不久的将来开发一个匹配战士(拳击手)的应用程序。
我提出这个问题的原因是,根据规则集,根据多个参数和约束条件来确定approach/algorithm匹配战士时使用哪个最好。
每个战士的相关属性如下:
- 年龄(战士将被分配到一个年龄组(15、17、19、精英)
- 体重
- 战斗次数
现在有一些关于匹配战士时允许的规则集:
- 战士之间最多间隔2年(除非是精英)
- 重量最多相差 3 公斤
现在显然是完美匹配,所有与会者都与符合规则集的另一名拳击手匹配。 并且最主要的优先事项是尽可能多地匹配彼此的战士。
K-nn 是可行的方法还是有更好的方法? 如果是哪个?
评论太长了。
为了使用 K-nn 获得最佳结果,我建议使用主成分。这些允许您使用更多的维度并通过 space 很好地传播数据以获得良好的邻域。
关于合并现有规则,您有两种选择。也许,最好的方法是将它构建到你的距离函数中。或者,您可以采用较大的邻域并将其构建到组合函数中。
我会选择 k 最近邻搜索。由于您的数据集是低维 space(即 3),我会使用 CGAL 来执行任务。
现在,您唯一需要做的就是像这样创建一个距离函数:
float boxers_dist(Boxer a, Boxer b) {
if(abs(a.year - b.year) > 2 || abs(a.weight - b.weight) > e)
return inf;
// think how you should use the 3 dimensions you have, to compute distance
}
你已经完成了......现在去战斗吧!