9

我的特征向量具有连续(或范围广泛)和二进制分量。如果我简单地使用欧几里得距离,连续分量会产生更大的影响:

将对称与非对称表示为 0 和 1 以及从 0 到 100 的一些不太重要的比率,与将比率更改 25 相比,从对称更改为非对称对距离的影响很小。

我可以为对称性增加更多权重(例如,通过将其设为 0 或 100),但有没有更好的方法来做到这一点?

4

3 回答 3

10

您可以尝试使用归一化的欧几里得距离,例如,在此处第一部分的结尾处进行了描述。

它只是通过标准偏差来缩放每个特征(连续的或离散的)。max-min这比另一张海报所建议的按范围 ( ) 缩放更稳健。

于 2010-11-30T16:22:25.433 回答
1

如果我正确理解您的问题,则对数据集中的每个维度或列进行归一化(又名“重新缩放”)是处理超重维度的常规技术,例如,

ev_scaled = (ev_raw - ev_min) / (ev_max - ev_min)

例如,在 R 中,您可以编写以下函数:

ev_scaled = function(x) {
    (x - min(x)) / (max(x) - min(x))
}  

像这样工作:

# generate some data: 
# v1, v2 are two expectation variables in the same dataset 
# but have very different 'scale':
> v1 = seq(100, 550, 50)
> v1
  [1] 100 150 200 250 300 350 400 450 500 550
> v2 = sort(sample(seq(.1, 20, .1), 10))
> v2
  [1]  0.2  3.5  5.1  5.6  8.0  8.3  9.9 11.3 15.5 19.4
> mean(v1)
  [1] 325
> mean(v2)
  [1] 8.68

# now normalize v1 & v2 using the function above:
> v1_scaled = ev_scaled(v1)
> v1_scaled
  [1] 0.000 0.111 0.222 0.333 0.444 0.556 0.667 0.778 0.889 1.000
> v2_scaled = ev_scaled(v2)
> v2_scaled
  [1] 0.000 0.172 0.255 0.281 0.406 0.422 0.505 0.578 0.797 1.000
> mean(v1_scaled)
  [1] 0.5
> mean(v2_scaled)
  [1] 0.442
> range(v1_scaled)
  [1] 0 1
> range(v2_scaled)
  [1] 0 1
于 2010-11-30T19:14:13.017 回答
1

您也可以尝试马氏距离而不是欧几里得距离。

于 2010-12-02T21:29:00.430 回答