기초통계/표준화

[python/파이썬] 변수간 비교를 위한 표준화

gilber 2023. 1. 1. 03:36
728x90

데이터 간의 단위가 다르다면, 같은 수준으로 변경 후 비교해야 합니다. 

 

예를 들면,

키는 센티미터(cm) 단위를 사용하며, 

몸무게는 킬로그램(kg) 단위를 사용하는데, 

키에 속하는 175라는 수치와, 몸무게에 속하는 70이라는 수치를 비교하면서,

175는 70보다 더 큰 수치이므로 더 중요한 수치라고 말할 수 없습니다. 

 

실제적으로 같은 데이터라고 하여도, 분산이 다르다면 같은 수준으로 변경 후 비교해야 합니다. 

 

예를 들면,

두 데이터 모두 키를 다루는 자료라고 하여도,

첫번째 데이터는 센티미터(cm) 단위로 사용하고,

두번째 데이터는 미터(m) 단위를 사용한다고 가정합시다.

 

이 경우 첫번째 데이터는 평균인 175cm 주위에 밀집하며, 

두번째 데이터는 평균인 1.75m 주위에 밀집한 상태입니다.

 

분명히 같은 자료이지만, 수치상으로만 본다면,

단위가 커서 데이터 간 간격이 적은 두번째 데이터가 훨씬 밀집된 형태로 표현될 것입니다.

 

데이터의 흩어진 정도, 밀집된 정도는 보통 분산으로 표현하며,

분산이 다르다면 이를 표준화하여 비교를 해야 합니다.

 

표준화는 단위나 분산이 다른 데이터를 비교하기 위해 사용하며, 

평균을 0으로, 표준편차를 1이 되도록 변경 후 비교하는 방법입니다. 

 

표준화는 각각의 데이터에서 평균을 빼주고, 표준편차로 나누어서 구합니다. 

평균을 빼주는 이유는 평균에서 떨어진 정도를 파악하기 위해서이며,

표준편차로 나눠주는 이유는 데이터에 사용된 단위를 없애기 위해서입니다. 

 

예를 들어, 키 데이터에서 185cm인 데이터에서 평균인 175cm을 빼면 10cm의 편차가 나옵니다. 

이 편차인 10cm을 이 데이터의 표준편차인 20cm으로 나눠주면,

10cm / 20cm 이 되어 1/2만 남게 되어 단위는 사라지게 됩니다.

 

칼럼별 단위가 다른 데이터입니다.

이를 표준화하면 다음과 같습니다. 

np.mean에 axis=0을 넣은 이유는 평균을 구할 때 가로가 아니라 세로로 구하라는 것을 명확히 하기 위해서입니다. 

axis=0을 넣지 않고도 연산은 가능합니다.

표준화된 데이터의 평균과 표준편차를 구하면,

평균은 0이며, 표준편차는 1이 됩니다.

표준화 식을 이해하기 위해 직접적으로 표준화를 진행하였으나,

scipy에서도 표준화를 할 수 있습니다.

scipy의 stats에서 표준화하는 함수는 zscore입니다. 결과는 위와 동일합니다. 

sklearn의 preprocessing(전처리)에서도 표준화를 할 수 있습니다. 결과는 동일합니다.

 

이것이 의미하는 바는 무엇일까요?

0번의 경우 키(height)와 몸무게(weight) 모두 평균인 0보다 작으므로,

키와 몸무게 모두 평균에 비해 작은 경우입니다.

 

1번의 경우 키는 0보다 작고, 몸무게는 0보다 크므로,

키는 작은 편이나, 몸무게는 무거운 편입니다. 

 

2번의 경우는 키와 몸무게 모두 0으로서 평균체형입니다.

 

3번의 경우는 키는 0보다 크고, 몸무게는 0보다 작으므로,

키는 큰 편이나, 몸무게는 적은 편입니다.

 

4번의 경우는 키와 몸무게 모두 0보다 크므로,

키와 몸무게 모두 평균에 비해 큰 경우입니다.

 

표준화를 통해 단위와 분산이 서로 다른 데이터라도 비교가 가능하며,

그 결과 표준화된 신장과 체중을 감안하여 데이터의 특성을 파악할 수 있습니다.

반응형