我正在寻找一种算法,它可以按大因子缩放大异常值,并且仅缩放小数字一点(或事件使它们与以前相同)。我们不必保持确切的比例,而只是认为大数仍然大于小数。
例如,我有一套 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,只是为了使最小的形状易于处理。