math - 将一堆数字属性转换为一个分数

标签 math optimization multidimensional-array machine-learning curve-fitting

这出现了很多,令人惊讶的是似乎没有标准的解决方案。假设我有一堆数字属性——你可以想象使用它根据学生/教师比例或污染等一系列组成分数对大学或城市进行排名——并希望将它们变成一个单一的分数。

我想举一堆例子并进行插值以获得一致的评分函数。

也许有标准的多维曲线拟合或数据平滑库或使这变得简单的东西?

更多例子:

  • 将两个血压数字转换为一个分数,用于衡量您的血压接近最佳血压的程度
  • 将 body 测量值变成衡量您离理想体格有多远的单一测量值
  • 将一组时间(100 米短跑等)转化为某项运动的体能得分
  • 最佳答案

    tl;dr:查看 HiScore .它将允许您快速编写和维护以合理方式运行的评分函数。

    为了实例化您的简单示例,假设您有一个接收一组距离和时间作为输入的应用程序,并且您希望将它们映射到 1-100 的分数。例如,您得到 (1.2 英里,8:37)并且您想返回,例如 64 .

    典型的方法是选择几个基函数,然后对这些基函数的系数进行测试,以获得“看起来正确”的分数。例如,您可能有每英里分钟数的线性基函数,以及距离的附加基函数(可能是距离线性和距离平方根线性)。您甚至可以使用例如 radial basis functions在您的输入范围内获得更复杂的表现力。 (这与其他答案在 ML 算法(如 SVM 等)方面的建议非常相似。)

    这种方法通常非常快,但有很多缺点。首先,您必须获得正确的基函数,这对于更抽象和更具表现力的函数来说可能很难。其次,你会发现你的分数很快就会僵化:如果你发现一个输入你觉得打错了,想办法改变它,同时确保评分函数的其余部分“看起来正确”将是一个挑战。第三,为分数添加另一个属性(例如,运行者是男性还是女性)可能很困难,因为您可能会发现需要在基础上添加更多术语。最后,在这种方法中没有明确保证您的分数将表现得更智能---取决于您选择的基函数和系数, 7:03 跑一英里的人比 7:01 跑 1.1 英里的人获得更高的分数 .

    一种不同的方法以 HiScore, a python library I wrote 的形式存在当遇到类似的问题时。使用 HiScore,您可以用分数标记一组引用项目,然后它会生成一个评分函数,该函数可以智能地插入这些分数。例如,您可以将最后 100 个输入添加到您的应用程序中,将它们与一些最极端的输入组合在一起(可能在(距离,时间)空间中使用 convex hull 提交的输入),标记它们,并使用 HiScore以产生合理的评分函数。如果它提出了您不同意的分数,只需将其添加到具有正确标签的引用集并重新创建评分函数,因为 HiScore 保证通过引用集进行插值。

    HiScore 的一个特性是你的属性需要是单调的,或者总是增加或减少。这对于“运行时间”设置来说不是问题,因为分数应该随着距离的增加(固定时间)而上升,随着时间的增加(固定距离)而下降。 HiScore 的单调性让您相信您的分数会按预期运行;它保证某人在 7:03 跑一英里的得分不会高于某人在 7:01 跑 1.1 英里的得分。

    您提出的血压设置很有趣,因为它不是单调的。低血压不好,但高血压也不好。不过,您仍然可以在这里使用 HiScore:只需将每个测量值拆分为“高血压”和“低血压”组件,其中至少有一个为零。例如,160 的收缩压读数将被映射为 60 的 systolic+ 属性和 0 的 systolic- 属性。这两个新属性的分数应该都在下降,因此这种方法变成了一个非单调的二维问题(收缩压和舒张压)变成一个单调的四维(收缩压+,收缩压-,舒张压+,舒张压-)。 (这个技巧类似于帮助线性规划进入 canonical form 的技巧。)

    关于math - 将一堆数字属性转换为一个分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27711982/

    相关文章:

    algorithm - 如何在 3D 网格中线性迭代?

    optimization - 为什么这个 Lua 优化 hack 会提高性能?

    perl - 如何复制和/或重新分配多维数组中的数组元素?

    javascript - 在 Javascript 中加入关联数组

    java - 比较一对 3 个变量的数学方法

    algorithm - 找到每个总和为给定值的四元组

    mysql - innodb_buffer_pool_size 与大型 InnoDB 归档表

    javascript - 精简 jQuery

    arrays - 在 3d 矩阵的第二维中排序

    javascript - 二次计算器给出 Nan