우리 생활에서 흔히 있는 데이터 중 하나가 수치형 데이터이다. 점수, 학점, 등수, 요금, 가격, 환율, 주가와 같은 데이터들이 쏟아지고 있다. 이렇게 하나의 카테고리로 묶을 수 있는, 특정한 제한된 표본의 데이터를 생각해보자. 예를 들어, ‘현재 서울시 집값’이라던가, ‘전국 버스요금’ 과 같은 것이 그것이다. 이러한 데이터들은 너무나도 많아서 단순히 나열하는 것만으로도 우리의 이해를 넘어설 수 있다.
그래서 이전부터 이러한 데이터들을 대표할 수 있는 값을 찾기 시작했다. 이를 대푯값이라고 한다. 그리고 우리 주변에서 가장 손쉽게 볼 수 있는 대푯값이 바로 평균이다.
1. 평균
1) 산술평균
산술평균은 가장 계산하기 손쉽고, 기본적인 위치 추정방법이다. 일반적으로 평균은 모든 데이터들의 총합을 데이터 포인트 갯수로 나눈 것이다. 아래의 공식을 보자. 데이터의 갯수가 n이라고 할 때, 이 데이터의 평균은 다음과 같다.
여기서 n 은 전통적인 통계학에서는 대문자라면 모집단의 데이터 갯수, 소문자면 모집단에서 추출한 표본의 갯수로 구분한다. 그러나 전통적 통계학이 아닌 현대의 데이터 사이언스에서는 이러한 구분을 중요시하지 않기에 같은 의미로 사용한다.
그렇다면 단순히 이렇게 평균을 구하면 모든 문제가 해결될까? 아쉽지만 그렇지 않다. 많은 연구가들이 평균이라는 데이터가 가지고 있는 ‘함정’에 대해 연구하기 시작했고, 그런 위험성을 줄일 수 있도록 수많은 방법으로 다양한 평균값을 구하기 위해 노력했다. 먼저 ‘평균의 함정’에 대해서 살펴보자.
2) 평균의 함정, 이상치
슬픈 이야기지만, 사람은 누구나 죽는다. 그렇다면 사람의 수명은 어느정도 될까? 사람의 자연사 수명을 예측할 수 있을까? 많은 신화와 민담에서 흥미롭게 나온 주제이긴 하지만, 과학적 방법론과 의학이 발달된 지금까지도 사람의 정확한 사망시점은 예측하기 어렵다. 대신에 우리에게는 데이터가 있고 통계가 있다. 특정 기간의 사망자의 사망 시점 나이의 총합에, 사망자 수를 나누면 되지 않을까? 그렇게 해서 ‘평균 수명’을 구하면 끝일까? 아쉽게도 아니다.
‘평균 수명’은 모든 사망요인을 산정한 것이기 때문에, 유아기부터 청장년의 사고사나 질병사도 포함된다. 또한 위험에 노출된 특정 직업군에 종사해서 사고사 비율이 높은 경우, 모집단의 표본 자체가 평균수명이 현저히 낮을 수 있다. 따라서 대다수 노화로 죽는다는 ‘사망사유’와 함께 ‘최빈사망언령’을 함께 분석해야 조금 더 우리가 원하는 값을 얻을 수 있다.
다른 예시를 들어보자. 2010년과 2020년 사이의 우리나라 국회의원의 평균 재산은 20-50억 사이이다. 그러나 이 평균값이 한 번에 치고 올라온 적이 있었다. 현대가의 정몽준은 2014년 자진 사퇴하기까지 국회의원을 7선을 한 적이 있다. 그런데 그는 대단한 기업인이고, 당시 재산만 2조원 이상을 소유했었다. 이를 함께 포함시켜 평균을 연산하니 갑자기 국회의원 평균 재산은 100억을 상회했다.
우리가 평균을 연산할 때에는 항상 데이터에 ‘특이한 값’이 있는지 확인해야한다. 우리가 일반적으로 생각하는 값을 훨씬 상회하거나 밑도는 데이터가 있을 수 있고, 이는 데이터를 분석할 때 언제든지 우리 뒤통수를 칠 수 있기 때문이다. 이러한 값을 이상치라고 하며, 데이터셋을 처음 볼 때 주목해야할 요소 중 하나이다.
이상치 분석은 정규분포에 근거한 z-score, 혹은 isolation tree, DBscan 과 같은 방법으로 탐지하고 발견한다.
3) 절사평균
그렇다면 이상치의 영향은 어떻게 제거할 수 있을까? 가장 손쉬운 방법은 데이터를 일렬로 정렬한 다음, 일정한 비율의 데이터를 ‘잘라내고’ 남은 데이터를 사용하는 방법이 있을 것이다. 이상치는 곧 너무 크거나 너무 작은 값이기 때문에, 정렬하게 되면 데이터 양끝에 분포할 것이라고 우리는 추론할 수 있다. 이를 일정한 비율로 잘라내면 남은 값들을 평균했을 때에는 이상치의 영향이 상당부분 배제할 수 있을 것이다. 이를 절사평균이라고 한다.
정렬된 데이터 x가 그 길이가 n일 때, 양 끝의 데이터 중 p개 만큼 잘라내어 절사평균을 구하는 공식은 아래와 같다.
절사평균을 활용하는 경우에는 어떤 경우가 있을까. 앞서 이야기한 것처럼 이상치에 대한 영향이 산술평균에서 지대하게 미칠 때 활용한다. 여기에서 더 나아가 절사평균을 활용한다는 것은 이상치의 영향을 배제하기 위해서는 표본의 손실에 대해서 어느정도 감수를 할 수 있다는 의미이기도 하다. 이는 무엇을 의미할까? 절사평균을 계산할 시 표본의 손실에 대한 감수는 곧 남아있는 표본이 더 전체 표본의 중심을 더 잘 대표할 것이라는, 즉, 남아있는 표본이 중심경향성을 더 잘 나타내 줄 것이라는 신뢰에 근거한다는 의미이다.
완벽하게 절사평균에 해당하는 내용은 아니지만 대표성이라는 개념에 대해서 조금 더 설명하자면 다음과 같다. 올림픽에서 다이빙 경기의 점수는 다음과 같이 책정된다. 우선 경기 이후 선수가 시전한 기술의 난이도 스코어(DD)가 판정되고, 7명의 심판이 점수를 책정한다. 책정된 점수를 정렬하여 양쪽으로 2개씩 절사하고, 그 합을 구한 뒤 DD와 곱하게 된다. 이렇게 7명의 심판 중 총 4명의 점수를 절사하여도, 나머지 3명이 대표성을 잘 보여줄 것이라는 기대가 있기 때문에 가능한 일이다.
만약 절사평균에서 절사하는 비율이 과도하게 높아서 남겨진 표본이 대표성을 잘 반영하지 못한다면, 절사평균을 사용하는 데에서 다시 생각해봐야 한다.
4) 가중평균
그렇다면 데이터의 손실을 피하고 싶은데, 각 데이터마다 이상치의 영향을 줄이고 싶을 때는 어떻게 해야할까? 데이터를 절사할 수 없는 경우라면, 각 데이터마다 특정하게 매겨진 가중치를 전부 곱해서, 이를 가중치의 총합으로 평균을 낼 수 있다. 이를 가중평균이라고 한다.
만약 데이터 이 있고, 각 데이터 포인트마다 가중치가 정의된 가중치 이 있을 때에 가중평균은 아래와 같다.
선형대수가 익숙한 사람은 가중치 벡터와 데이터 벡터의 내적에 가중치 벡터의 총합을 나눈 것이라고 보면 되시겠다.
산술평균을 보고 온 상황이라면 평균에서 데이터 포인트 갯수인 을 나누는 것이 아니라 가중치들의 총합을 나누는 것에 의아할 것이다. 이를 나눠주는 이유는 각 데이터의 가중치가 서로 다르기 때문에 이를 반영하기 위한 것이다. 역으로 생각하면 산술평균에서 을 나누어 주는 이유는 각 데이터 포인트가 전부 같은 중요도를 띄고 있다고 생각하고 이를 1로 가정했기에 그러하며, 따라서 을 나누어 준다고 이해할 수 있다.
가중평균은 어떠한 상황에서 쓰일까? 대표적으로는 아래의 두 가지 상황에서 쓰인다.
•
우선 특정한 큰 값의 영향을 감소하기 위해 사용한다. 어떤 값이 다른 값보다 큰 변화량을 가지지만 이 값이 전체 데이터의 중심경향성을 대표하기에는 근거가 미미하다고 판단 될 때, 이 데이터에 낮은 가중치를 줄 수 있다. 소비자물가지수에서 가중평균을 사용하는 이유 중 하나가 여기에 있다.
•
또한 대조군 비교에서 특정 대조군을 다른 대조군과 동등비교를 하기위해 가중평균을 이용해서 끌어 올릴 수 있다. 데이터 사이언스에서 데이터는 항상 클린하게 모든 대조군이 동등한 수량과 품질로 들어오지 않는다. 이런 경우 단순비교를 하기보다는 데이터가 부족한 소수그룹에 더 높은 가중치를 적용할 필요도 있을 것이다.