为什么归一化向量的点积总是数据大小-1

why dot product of normalized vector is always data size -1

我不明白为什么归一化向量的点积总是数据大小-1。

a <- scale(rnorm(100))
crossprod(a)
# equal = 100 - 1 = 99

b <- scale(runif(50))
crossprod(b)
# equal = 50 - 1 = 49

c <- scale(rchisq(30, 5))
crossprod(c)
# equal = 30 - 1 = 29

我想知道数学理解。

不是在 LaTex 中,但证明可以帮助您理解:

您的值已缩放,因此:[x_i-mean(X)] / sd(X)。

Crossprod 计算 x_i = Sum_i ( [x_i-mean(X)])^2

的平方和

方差(平方标准差):var(X) = sd^2(X) = 1/(n-1) * Sum_i ( [x_i-mean(X)])^2

叉积 = Sum_i ([x_i-mean(X)] / sd(X))^2) = 1/sd(X)^2 * Sum_i ( [x_i-mean(X)]^2) = 1/(1/(n-1)) = n-1