상세 컨텐츠

본문 제목

[신광섭의 물류빅데이터] 왜곡은 필연처럼, 데이터의 함정에 빠지지 않으려면

ARTICLES

by 김편 2016. 8. 16. 11:12

본문

데이터 분석 과정에 필연처럼 따라오는 ´왜곡´
데이터 왜곡의 함정에 빠지지 않으려면


글. 신광섭 인천대학교 동북아물류대학원 교수


Idea in Brief


데이터를 분석하는 목적은 과거 데이터를 통해 새로운 사실을 알아내거나 미래의 어떤 결과를 예측하고, 그 결과를 바탕으로 자신에게 가장 유리한 의사결정을 내리고자 함이다. 그런데 만약에 그 의사결정의 근거가 객관성을 담보할 수 없다면 데이터를 분석하는 의미가 있을까? 데이터의 양이 늘어나고 종류가 다양해지면서 이론적으로는 보다 객관적인 의사결정이 가능할 것처럼 보인다. 하지만 실제로는 데이터를 분석하는 과정에서 왜곡이 발생해 더 큰 문제를 일으킬 수 있다. 데이터 분석의 함정에 빠지지 않기 위한 방법론을 살펴보자.



데이터 분석의 목적은 과거 데이터를 통해 새로운 사실을 알아내거나 미래의 어떤 결과를 예측하고, 그 결과를 바탕으로 자신, 혹은 기업에게 가장 유리한 의사결정을 내리는 것이다.

그런데 만약 그 의사결정의 근거가 객관성을 담보할 수 없다면 데이터를 분석하는 의미가 있을까? 데이터의 양이 늘어나고 종류가 다양해지면서 이론적으로는 보다 객관적인 의사결정이 가능할 것처럼 보인다. 하지만 실제로는 데이터를 분석하는 과정에서 왜곡이 발생해 더 큰 문제를 일으킬 수 있다. 데이터 분석의 함정에 빠지지 않기 위해서는 어떻게 해야할까.

다음 주 개봉 영화와 한달 후 개봉 영화 흥행 예측의 차이

빅데이터는 생활 패턴과 비즈니스 측면에서 긍정적 변화를 이끌어 냈다. 그렇다면 빅데이터 시대라고 불리는 현재가 그 이전보다 더 좋아진 점은 무엇일까? 손으로 꼽을 수 없을 정도로 많겠지만, 가장 중요한 변화는 아마 중요한 의사 결정을 위한 ´조금 더 객관적인 근거´를 확보할 수 있다는 점이다.

예를 들어, 이번 주말에 새로 개봉하는 영화 중 어떤 작품이 가장 인기가 있을지 알고 싶은 사람이 있다고 하자. 이 사람은 예매 현황이라는 가장 신빙성 있는 데이터를 확인함으로 인기 영화를 예측할 수 있다.

개봉 예정영화 예매율 순위(자료= 네이버 영화, 2016.08.15. 기준)

그런데, 만약 한달 뒤에 개봉하는 영화라면 이야기는 달라진다. 예매가 불가능한 상황이기 때문이다. 이런 경우 빅데이터 등장 이전에는 거리로 나가 각계각층의 잠재적 영화 관람객을 대상으로 설문조사를 실시해야만 했었다. 어느 영화를 보러 갈 것인지 예상 관람객에게 물어보는 방법이다.

그런데 이렇게 확보한 데이터가 과연 객관적 의사결정을 위한 근거라고 볼 수 있을까? 아마 비슷한 질문에 지금 대답해야 한다면, 많은 사람들은 트위터나 페이스북과 같은 SNS 데이터를 분석하거나 검색 혹은 포털 사이트를 통해 입력되는 검색어 순위의 변화와 같은 정보를 분석해야 된다고 답할 것이다.

그렇다면, 설문조사와 SNS 혹은 포털 검색어 순위의 차이는 무엇일까? 전자는 내가 질문을 만들어서 던진 것이고, 후자는 묻지 않았는데 사용자 즉 잠재적 영화 관람객이 자신의 관심을 드러낸 것이다. 인기 영화를 예측하고자 한다면 후자의 데이터를 사용하는 것이 더욱 합리적이라는 점에는 모두들 동의할 것이다.

첫번째의 경우는 설문조사의 답변자가 영화 관람 여부에 대한 확신이 없다. 심지어 질문의 대상이 되는 영화에 대해 관심이 있는 사람인지, 혹은 없는 사람인지조차 알 수 없다. 데이터의 ‘객관성’이라는 측면에서 봤을 때, 질문자가 개입하지 않은 데이터가 후자의 경우이기 때문에 빅데이터를 활용한 분석 기법을 활용하는 것이 더욱 합리적이라 판단하게 되는 것이다.

채직현상, 데이터가 왜곡되는 이유

공급사슬관리에서 가장 대표적인 문제로 활용되는 것 중 하나가 바로 ‘채찍현상(Bullwhip effect)’이다. 채찍현상은 공급사슬의 하류(최종 소비자와 가까운 영역)에서 제공되는 정보의 작은 변화가 상류(원자재 수급에 가까운 영역)로 거슬러 올라갈수록 더 큰 변화를 만들어내는 현상을 의미한다.

채찍현상의 근본 원인은 공급사슬 하류에서부터 상류로 정보가 전달되는 단계마다 정보의 왜곡이 발생하기 때문이다. 그렇다면 왜 정보 왜곡이 발생할까. 하류의 관계자가 자신에게 전달하는 정보가 정확하다고 생각하지 않기 때문이다.

예를 들어, 수박을 파는 나에게 오늘 처음 만난 고객이 다음 달에 수박 100개를 주문할 것이라고 이야기 했다고 하자. 나는 그 고객이 진짜 100개를 주문할 지, 110개를 주문할 지, 아니면 전혀 주문하지 않을 지 확신하지 못한다. 그렇다면 나는 정확하게 100개보다 많은 110개, 혹은 더 적은 90개를 준비할 수도 있다.

주문량과 준비량의 차이는 과거 해당 고객이 얼마나 자주 그리고 크게 주문량을 변경했는지에 따라 달라지게 된다. 매일 약속 시간에 늦는 친구와 만나기 전, 일부러 약속시간을 늦게 잡는 것과 유사하다. 신뢰할 수 있는 고객이라면 주문량과 준비량의 차이는 줄어들고, 그 반대의 경우에는 ´안전재고´를 두거나, 준비량 자체를 적게 두게 된다.

이런 현상은 공급사슬의 각 단계를 거치면서 그 변화폭이 계속해서 증가하게 된다. 많은 사람들이 이 현상을 극복하기 위한 방법으로 ‘정보의 동기화 (synchronization)’를 제시한다.그렇다면 실시간으로 데이터를 주고받고 동기화하면 모든 문제가 해결될까? 만약 첫번째 고객으로부터 확보된 데이터, 일반적으로 ´수요 정보´가 잘못되었다면 그 문제는 해결되지 못한다. 왜냐하면 데이터를 분석하는 과정에서 의도적으로 왜곡되는 경우를 제외하더라도 분석 과정에서 혹은 현실의 문제를 모형화하는 과정에서 우리는 비슷한 실수를 저지르게 되기 때문이다.

다시 한 번 의문을 제기해본다. 과연 빅데이터 분석이 객관적인 결과를 담보할 수 있을까? 좀 더 정확하게 말하자면 어떻게 하면 데이터가 왜곡될 수 있을까? 그리고 왜 데이터에는 분석하는 사람의 주관적 의견이 반영될 수 있을까? 데이터 분석 과정에서 우리가 주의해야 할 사항은 무엇일까?

데이터 확보와 전처리 과정의 함정

앞서 언급했듯 데이터 분석 절차 중 가장 첫번째로 수행해야 할 것은 분석의 목적을 명확하게 하는 것이다. 두번째는 그 목적을 달성하는 데 적합한 데이터를 확보하는 것이다. 세번째는 확보한 데이터를 탐색하고, 필요시 가공하는 전처리 단계다. 데이터 분석의 왜곡은 주로 이 중 마지막 두 과정인 ´데이터 확보´와 ´전처리 과정´에서 발생한다. 그 이유는 무엇일까.

데이터 분석의 목적이 예측(Prediction)이든 분류(Classification)이든 상관없이 필요한 데이터를 충분히 확보하는 것은 데이터 분석의 성공 여부를 결정하는 가장 기본적인 사항이다.

여기서 "충분한 데이터는 대체 얼마냐"고 묻는다면 ‘확보할 수 있는 한 최대한 많이’라는 말밖에 할 수 없다. 그렇다고 세상 모든 데이터를 가져다 쓸 수는 없다. 때문에 분석에 필요한 데이터를 취사선택해야만 한다.

그렇다면 최대한 많이 확보한 데이터 중에서 어느 것을 버리고 어느 것을 택할 것인지 판단하는 기준은 무엇일까? 가장 바람직한 방법은 내가 알고자 하는 변수와 연관성이 높은 변수를 우선적으로 택하는 것이다. 그런데 이 판단 기준은 상황에 따라, 혹은 데이터가 속한 영역(Domain)에 따라 달라진다. 때문에 보편적으로 적용되는 기준을 만드는 것은 쉽지 않다. 반대로 버려야 하는 변수를 선택하는 기준을 생각해 보면 조금 더 직관적으로 답을 얻을 수 있다.

불필요한 데이터는 앞서 설명한 바와 같이 ‘내가 알고 싶은 변수와 연관성이 높지 않은 변수’일 것이다. 통계적으로 데이터 사이의 연관성은 상관계수(Correlation coefficient)를 통해 평가할 수 있다. 상관계수는 -1에서 1사이의 값을 가지고, 1에 가까울수록 양의 상관관계, -1에 가까울수록 음의 상관관계를 가진다. 0에 가까우면 상관성이 없다고 이야기한다.

일반적으로 내가 알고 싶은 변수를 종속변수 (Y)라고 부르고, 그 변수를 설명하기 위한 변수를 입력변수 혹은 독립변수 (X)라고 하자. 이때 선택되어야 할 변수는 양이든 음이든 변수 사이의 상관관계가 충분한 것이어야 한다. 만약 연관성이 0에 가깝다면, 상관성이 낮아 일정한 패턴이나 함수식을 찾기 어려워진다. 적절하지 않은 변수일 가능성이 높다는 의미다.

대부분 여기까지는 순조롭게 변수 취사선택이 가능하다. 여기서 우리가 알고 싶은 변수를 종속변수라고 부르는 것은 (Y로 표현되는 변수가 X에 따라 달라지기 때문이라는 점은 쉽게 이해할 수 있을 것이다. 그렇다면, 종속변수를 설명하는 데 사용되는 변수를 왜 독립변수라고 부르는 것일까? 만약 Y를 설명하기 위한 독립변수가 p개 있다고 가정한다면, 이 p개의 변수는 서로 서로 독립이어야 한다는 의미이다. 다시 말하자면, 앞서 설명한 상관계수가 0에 가까워야 한다. 만약 상관성이 높은 변수들을 동시에 사용한다면, 특정 변수가 다른 변수에 비해 과도하게 종속변수에 영향을 많이 미치게 된다.

예를 들어, 어느 직장인의 신용도를 평가하는데, 월급여와 국민연금액을 동시에 고려한다고 생각해보자. 우리나라 직장인이 매월 납부하는 국민연금은 월급여를 기준으로 산정되기 때문에 두 변수(월급여, 국민연금)는 상당히 높은 수준의 상관계수를 보일 것이다. 심지어 급여에서 사전 공제되어 계좌로 입금되기 때문에 납부 여부를 결정하거나 금액을 본인이 직접 결정할 수 없다. 이 상황이 합리적일까? 신용도를 평가하는데 급여와 해당 변수에 의해 결정되는 국민연금납부액을 동시에 고려한다면 급여가 두 번 반영되는 결과를 초래한다.

이렇게 확보한 데이터 중에서 필요한 변수를 선택하는 과정에서 분석하는 사람의 주관이나 의도가 개입되기 마련이다. 어떤 변수가 종속변수를 설명하는데 적합한 지, 변수들끼리의 상관관계는 어느정도까지 허용할 것인지를 결정하는 데 필요한 근거로 상관계수를 활용할 수는 있지만 구체적인 값을 결정하는 것은 모두 분석하는 사람의 몫이기 때문이다.

데이터 전처리, 결측치와 이상치의 오류

데이터 전처리(Preprocessing)의 목적은 크게 ´데이터의 품질을 높이기 위한 것´과 ´분석에 활용한 기법에 맞게 변형하는 것´으로 나눌 수 있다. 데이터의 품질을 저하시키는 이유로는 결측치(Missing value), 이상치(Outlier)와 관련된 다양한 오류를 들 수 있다. 마지막 항목인 오류는 해당 변수가 가질 수 없는 형태의 데이터가 기록되는 경우를 의미한다. 예를 들어, 성별 항목에 100이라는 숫자가 입력되어 있는 경우다. 오류 여부가 확인되면 해당 기록을 삭제하거나 문제의 원인을 찾아 조정해야 한다.

첫번째 경우인 결측치는 해당 값이 기록되지 않은 경우를 의미한다. 앞서 데이터 오류로 인해 해당 기록이 삭제된 경우도 결국은 결측치가 된다. 이 두 가지 경우는 비교적 간단하게 문제를 해결할 수 있다. 그러나 그 과정에서 데이터 왜곡이 발생할 수 있다.

먼저 결측치가 발생한 경우 가장 합리적인 대안은 해당 기록을 삭제하는 것이다. 단, 해당 기록을 삭제하고도 이미 충분한 양의 데이터가 확보되었다는 전제가 필요하다. 만약 삭제할 수 있는 상황이 아니라면, 비어있는 값을 대체해야 하는데, 대안으로 ‘평균’, ‘중앙’, ‘최대’, ‘최소값’ 등과 같은 전체 데이터의 대푯값을 사용할 수 있다. 그러나 해당 기록의 특성을 반영하지 못한다는 단점 때문에 가장 유사한 기록을 찾아 해당 변수의 값을 활용하는 방법도 있다. 여기서 중요한 점은 어떤 방법을 사용하더라도 실제 기록과는 다른 값이라는 것이다. 즉, 데이터를 보완하기 위해 어쩔 수 없이 왜곡을 감수하는 것이다.

두번째인 이상치의 경우는 조금 다르다. 한 가지 예를 들어보자. 20대 신입사원의 연봉을 조사했는데, 그 중 하나의 기록이 300억 원이었다면, 이 숫자는 정상적인 기록일까 아니면 잘못된 기록일까? 두 가지 경우를 모두 생각해볼 수 있다. 첫 번째는 실제 신입사원의 연봉은 30,000,000원인데, 1000원단위로 기록하는 것을 알지 못하고 전체를 입력한 경우이다. 이 경우는 세번째인 오류 중 단위 혹은 입력 오류라고 할 수 있다.

그런데 실제로 해당하는 신입사원이 300억 원의 연봉을 받는다면 어떨까? 실제 기록이니 그대로 사용해야 하는 것이 타당하겠지만, 데이터를 분석하는 목적이 일반적인 패턴이나 규칙을 발견하는 데 있다는 점을 다시 한번 생각해보자. 소수의 특이한 사례 때문에 전체적인 모형 자체가 왜곡될 가능성이 높아진다. 이상치라고 판단되면 해당 기록이 오류에 의한 것인지 아닌지를 우선 판단해야 하고, 그 후에 결측치나 오류의 해결방안과 유사하게 조정하게 된다. 이 과정, 즉 이상치를 판단하는 기준을 수립하는 것과 이상치 값을 조정하는 과정에서 분석하는 사람의 의도와 주관이 개입될 수 밖에 없다.

데이터 전처리의 또 다른 목적은 분석 기법에 맞게 데이터를 변형하는 것이다. 지난 연재(‘빅데이터는 노스트라무스가 아니다’)에서 설명한 바와 같이 종속변수와 독립변수의 형태(연속형, 명목형)에 따라 데이터 분석에 활용되는 방법에 제약이 존재한다. 예를 들어, ‘로지스틱 회귀분석(Logistic Regression)’의 경우 독립변수는 연속형과 목록형 모두 사용할 수 있지만, 종속 변수는 목록형인 경우에만 사용가능하다. 만약 현재 가진 종속변수가 연속형이라고 해서 활용이 불가능한 것은 아니다. 연속형 변수를 구간을 나눠서 목록형 변수로 변환하는 것이 가능하기 때문이다.

이와 유사하게 비지도적 학습(Unsupervised learning)의 대표적인 사례로 장바구니 분석(Market Basket Analysis; MBA)을 들 수 있다. MBA는 온라인 서점의 도서 추천과 같은 시스템에 가장 많이 사용되는 방법으로 데이터는 모두 참과 거짓으로만 표현되는 이진 변수만을 허용한다. 따라서 연속형 변수는 구간을 나누는 방식을 통해 이진 변수로 전환해야 하며, 특히 두 개 이상의 값을 가지는 목록형 변수의 경우는 임시변수(Dummy variable)를 활용해서 이진 변수로 전환할 수 있다.

예를 들어, 성별이라는 변수의 경우 ´남자´와 ´여자´ 두 가지 값을 가질 수 있다. 이 경우, 성별=남자, 성별=여자와 같이 두 개의 이진 변수로 전환할 수 있다. 임시 변수의 경우는 데이터가 늘어난다는 단점 외에 정보의 왜곡과는 거리가 있어 보인다. 그렇지만 연속형 변수를 목록형 변수로 전환하는 경우는 이야기가 달라진다. 바로 몇 개의 구간으로 나눌 것인지, 구간의 경계는 어디인지 결정하는 과정에서 왜곡이 발생할 수 있다.

닮은 듯 서로 다른 데이터 분포는 왜

전처리의 마지막 사례로 정규화(Normalization)를 들 수 있다. 정규화의 목적은 전체 데이터 중 일부 변수를 측정하기 위한 단위 때문에 발생할 수 있는 문제를 해결하고자 하는 것이다.


만약 어느 물류기업의 시장 경쟁력을 평가하기 위해 데이터를 수집한다면, 대부분 매출액, 시장점유율, 수익률, 정시도착률, 평균 배송 시간, 화물 손망실율 등을 고려할 것이다. 그런데 이 변수들의 측정 단위를 살펴보자. 매출액의 경우 크게는 천 억원 단위의 숫자가 기록되는 데 반해, 시장 점유율, 정시도착률과 같은 비율형태의 변수는 최대 100(%) 혹은 1.00의 값을 가진다.

이렇게 변수의 측정 단위가 달라 데이터 분석이 정확하게 이루어지지 못하는 문제를 해결하기 위해서 변수들의 크기를 같은 범위에 속하도록 조정하는 과정이 정규화다. 이 과정에서 주의깊게 살펴보아야 할 부분은 바로 데이터가 가지는 분포가 변하는 지에 대한 여부이다. 만약 이와 같이 최대값과 최소값을 이용해서 전체 데이터를 0과 1사이의 범위로 전환하게 되면 문제가 없을까? 아래 그림 중 왼쪽은 원본 데이터를 26개 구간으로 구성된 히스토그램을 보여준다. 이 데이터를 앞의 식으로 정규화한 결과가 바로 오른쪽 그래프이다. 왼쪽과 동일하게 26개 구간으로 나누었을 때, 데이터의 분포가 달라진다는 점을 알 수 있다.

이를 보완하기 위한 방법으로, 해당 변수가 정규 분포를 따른다는 가정하에 다음 식을 활용하기도 한다.


하지만 이 방법 역시 데이터가 정규분포를 따른다는 가정이 필요하다. 또한 정규화를 통해 데이터가 비록 평균이 0이고 분산이 1인 분포로 조정이 이루어지지만 실제로 데이터가 가질 수 있는 값은 음의 무한대에서 양의 무한대까지 유지된다.

약이 되는 데이터, 독이 되는 데이터

처음으로 돌아가서 데이터 분석의 목적은 과거 데이터를 통해 새로운 사실을 알아내거나 미래의 어떤 결과를 예측하고 그 결과를 바탕으로 자신에게 가장 유리한 의사결정을 내리는 것이다. 그런데 그 의사결정의 근거가 만약 객관성을 담보할 수 없다면 데이터를 분석하는 의미 자체가 없어진다.

물론 분석을 위한 데이터 자체를 확보하는 과정에서 개인의 주관이 개입되지 않도록 하여 객관성이 보장되도록 만드는 것은 당연한 일이다. 그렇지만, 그렇게 확보한 데이터를 분석하는 과정에서 발생할 수 있는 정보의 왜곡은 반드시 주의해야 한다. 과거 데이터를 대상으로 데이터를 분석하는 것인만큼 데이터를 원형 그대로 사용하는 것이 가장 좋겠지만, 데이터가 가진 문제나 목적과 분석 방법이 가지는 제약조건 때문에라도 ´전처리´는 피할 수 없는 단계이다.

만약, 데이터 분석의 결과가 예측 혹은 분류 모형을 개발하는 것이고, 그 모델의 성능을 향상시키기 위해 과도한 전처리를 수행한다면 그것이 바로 데이터를 왜곡하는 것이다. 왜곡된 데이터를 바탕으로 수립된 모델은 과거 데이터를 통한 검증에서는 훌륭한 결과를 보일 수 있겠지만, 아직 일어나지 않은 미래에도 동일한 성능을 보일 것이라 기대할 수는 없다. 더욱이 큰 문제는 왜곡된 데이터로 만들어진 모델을 통해 만들어진 결과를 실제 기업의 비즈니스에 활용하는 경우다. 데이터 왜곡으로 인한 피해는 그야말로 어마어마해질 수 있다.

데이터의 양이 늘어나고 종류가 다양해지면서 이론적으로는 보다 객관적인 의사결정이 가능할 것으로 보인다. 하지만 실제 데이터를 분석하는 과정에서 왜곡이 발생한다면 오히려 더 큰 문제를 일으킬 수 있다. 따라서 데이터 분석을 수행하는 각 단계(특히 변수 선택과 전처리 단계)에서 활용되는 방법들이 가지는 장단점을 정확하게 이해하고 목적에 맞게 활용할 수 있어야 한다.


관련글 더보기

댓글 영역