度量距离时对数据做不做比例归一化(scale)
当我们处理数据时时常会遇到是否要对数据进行比例调整(scale)的问题,那么究竟应不应该做比例调整要取决于数据的实际含义。
前一段时间为了弄明白Gower Distance在网上查找了一个slides1,里面介绍了很多常用距离,并且简单解释了数据比例尺度调整的问题。
- 对于4个人的年龄和身高,有数据
Person | Age [years] | Height [cm] |
---|---|---|
A | 35 | 190 |
B | 40 | 190 |
C | 35 | 160 |
D | 40 | 160 |
画图可以看到A、B比较近,C、D比较近。
有些地区喜欢用feet来作为身高的度量单位,如果换成feet,数据会变成
Person | Age [years] | Height [feet] |
---|---|---|
A | 35 | 6.232 |
B | 40 | 6.232 |
C | 35 | 5.248 |
D | 40 | 5.248 |
画图的话可以看到此时A、C比较近,B、D比较近。
那么究竟哪两个人的数据比较接近呢?
我们来做一下scale,
Person | Age [scaled] | Height [scaled] |
---|---|---|
A | -0.87 | 0.87 |
B | 0.87 | 0.87 |
C | -0.87 | -0.87 |
D | 0.87 | -0.87 |
结果发现这四个人距离差不多,分不出子类。
- 在来看另一种情况
Object | x1 | x2 |
---|---|---|
A | 13.3 | 38.0 |
B | 12.4 | 45.4 |
C | -122.7 | 45.6 |
D | -122.4 | 37.7 |
有四个观测,分别知道它们的变量x1和变量x2数值,在R中scale(dat)
会发现四个观测分散很远,如果直接画图,就发现其实A、B距离近,C、D距离远。
如果x1和x2分别代表经度和纬度,那么这个数据就不应该标准化,A、B两个地点本来就是距离近,标准化后它本身的特点就不存在了。
到底用不用归一化呢?
1.做不做归一化,要知道
- 变量取值范围大,这个变量就在计算距离时权重大
- 距离的远近是由归一化后的数值决定的,不同的归一化,最后求出的距离也不一样
- 归一化对每个变量赋予同样大的权重
- 另一种可行方法是重赋值权重
2.这些情况下必须归一化
- 变量单位不同
- 我们自己期望属于要有相同的权重
3.这些情况下不要归一化
- 变量单位相同
4.一般情况下
- 请归一化
Reference
-
https://stat.ethz.ch/education/semesters/ss2012/ams/slides/v4.2.pdf ↩