https://www.w3schools.com/python/python_ml_standard_deviation.asp
Standard Deviation
표준 편차입니다. 머신러닝에서 표준편차라는 개념이 정말 기본적이면서 중요하다고 생각됩니다. 아주 간단히 설명하면 표준 편차는 각 값들의 밀집도를 확인하는 개념입니다. 단순히 [9,10,11]은 표준편차 값이 작고 [1,10,19]는 표준편차 값이 크다고 보면 됩니다.
1
2
3
4
5
6
7
|
import numpy
speed = [86,87,88,86,87,85,86]
x = numpy.std(speed)
print(x)
|
cs |
위와 같이 numpy.std() 함수로 간단히 구할 수 있습니다.
값은 0.9035079029052513 으로 거의 1에 가깝습니다. 즉 각 값들의 편차가 크지 않다는 말입니다.
그리고 이 값은 리스트 안의 값들의 평균값인 86.4로부터 떨어져 있는 정도의 평균값이 0.9정도라고 이해하면 됩니다.
Variance
수학시간에 늘 표준편차와 함께 배우는 분산입니다.
분산은 얼마나 각 값들이 분산되어 있나, 흩어져 있는 정도를 나타내는 값입니다.
w3schools에서는 실제 분산을 구하는 과정을 알려주고 있습니다.
speed = [32,111,138,28,59,77,97] 을 대상으로,
1. 평균값을 구하기 :
(32+111+138+28+59+77+97) / 7 = 77.4
2. 각값들의 평균값과의 차이를 구하기
32 - 77.4 = -45.4
111 - 77.4 = 33.6
138 - 77.4 = 60.6
28 - 77.4 = -49.4
59 - 77.4 = -18.4
77 - 77.4 = - 0.4
97 - 77.4 = 19.6
3. 각 값들의 제곱을 구하기
(-45.4)2 = 2061.16
(33.6)2 = 1128.96
(60.6)2 = 3672.36
(-49.4)2 = 2440.36
(-18.4)2 = 338.56
(- 0.4)2 = 0.16
(19.6)2 = 384.16
4. 위 값들의 합의 평균
(2061.16+1128.96+3672.36+2440.36+338.56+0.16+384.16) / 7 = 1432.2
이 역시 numpy의 var() 함수를 통해 쉽게 구할 수 있습니다.
1
2
3
4
5
6
7
|
import numpy
speed = [32,111,138,28,59,77,97]
x = numpy.var(speed)
print(x)
|
cs |
Standard Deviation
다시 표준편차로 돌아와서 분산값에 루트를 씌우면 표준편차가 됩니다. 분산값을 구할 때 각 값들의 평균값과의 차이에 제곱을 했기때문에 다시 루트를 씌우는 것이라고 생각하면 될 듯 합니다.
머신러닝에서 평균/분산/표준편차는 중요하여 항상 그 컨셉을 숙지해야 한다고 합니다.
그냥 그런가보다 하고 넘어가는 것으로...😅