本文介绍统计学中标准化与归一化方法,包括计算公式和应用场景,以及两者的差异。
两者计算公式
标准化(Standardization) 和 归一化(normalization) 是数据缩放的两种方法.
标准化缩放数据集为均值为0,标准化差为1,使用下面的公式:
x n e w _{new} new = (x i _{i} i – μ) / σ
- x i _{i} i 是数据集中第i个值
- μ 为样本均值
- σ 样本标准差
归一化缩放数据集,让每个元素落在0~1之间,使用下面公式:
x n e w _{new} new = (x i _{i} i – x m i n _{min} min) / (x m a x _{max} max – x m i n _{min} min)
- x i _{i} i 是数据集中第i个值
- x m i n _{min} min 为数据集最小值
- x m i n _{min} min 为数据集最大值
R 计算示例
首先定义数据集data, 然后利用内置的scale函数进行标准化,并通过mean 和 sd 函数进行验证。
scale返回矩阵,通过as.vector转为向量。并自定义norm函数进行归一化计算。
data <- c(13, 16, 19, 22, 23, 38, 47, 56, 58, 63, 65, 70, 71)
sd_data <- as.vector(scale(data))
sd_data
mean(sd_data)
# 0
sd(sd_data)
# 1
norm <- function(data){
mi <- min(data)
ma <- max(data)
(data - mi) / (ma - mi)
}
data_norm <- norm(data)
data_norm
两者的应用场景
当我们进行数据分析时,可能会涉及多个变量,它们采用不同的单位进行表示,我们希望每个变量都有相同的范围,此时可以使用归一化方法。这样可以避免某个变量产生过度影响,特别它们使用不同的单位进行衡量(如一个变量使用厘米,另一个变量使用毫米)。
而标准化数据是为了知道每个值偏离均值多少个标准差。举例,有500个学生成绩,如果希望了解每个成绩偏离均值程度,我们使用标准化方法处理原始数据;假设某个标准分数为1.26,表示该学生的考试成绩比平均考试成绩高出1.26个标准差。
两者如何选择,除了应用场景,我们也要了解两者差异:
- 归一化后数据的值在0~1之间
- 标准化数据集后,均值为0,标准差为1,但最大值和最小值没有特定上下限
本文参考链接:https://blog.csdn.net/neweastsun/article/details/124230769