按大因子缩放大数和按小因子缩放小数的算法



我正在寻找一种算法,它可以按大因子缩放大异常值,并且仅缩放小数字一点(或事件使它们与以前相同)。我们不必保持确切的比例,而只是认为大数仍然大于小数。

例如,我有一套 10、15、200。 让我们将 min 和 max 分别定义为 0 和 100,缩放值应该在该集合内(min 和 max 不是预定义的,可以调整)。 使用算法,我们可以将它们扩展到 5、6、20。

关于如何缩放这些数字的公式的任何想法?

我的用例是 3 个重叠集的维恩图数据。我想保留一个事实,即大集合比小集合大,但大圆不应该比小圆大 20 倍。

你没有给出足够的细节来给出具体的建议,但总体的想法是你想要一些显着的幅度降低。 通常,我们使用如下所示的方式处理此问题:

  • 平方根(或其他小数根)
  • 日志(基数并不重要;根据需要扩展)
  • arcTan (将结果限制在 0-1 范围内)

玩一些不寻常的案例,看看你喜欢哪个。 您发布的示例最接近 sqrt 的想法。

评论后更新

如果这用于选择维恩图中圆的半径,那么sqrt确实是保留对大小(从面积)的认知解释的自然选择。 这适用于任何 2D 缩放 - 尽管请注意,对带有阴影的图片(隐含3D)执行此操作表明立方根将是适当的缩放比例。 (参考:如何用统计数据撒谎)。

在输入幅度非常不同的情况下,这有时是不可能的。 例如,给定 (1, 1000, 1000000),您可能希望使用更高的根,或更改为 log,只是为了使最小的形状易于处理。

最新更新