데이터이야기

DB 노하우, 데이터직무, 다양한 인터뷰를 만나보세요.

[기술 5기] 증권사 빅데이터를 활용한 고객 패턴분석(상)

데이터 이야기
작성자
dataonair
작성일
2014-08-28 00:00
조회
7862


[기술 전문가 5기 최우수 프로젝트]

We think big!

증권사 빅데이터를 활용한 고객 패턴분석(상)



기술5기 인터뷰 <빅데이터 콘셉트 확보 방법은 직접 확인해 보는 것> 바로가기 >>

We’re ‘ThinkBig’, We think big!

빅데이터 아카데미 기술 5기 최우수 팀으로 선정된 ‘ThinkBig’입니다. Big Data 의미와 함께, 사고의 한계를 벗어 던지고 더 넓은 곳으로 나아갈 수 있는 팀이 되고자 하는 기원을 이름에 담았습니다. 박종욱 팀장을 중심으로 김영민/안병현/양승영 팀원이 한 조가 되어 진행했으며, 이상훈 멘토의 지원을 받았습니다. 정식 멤버는 아니었지만 김석수(가천대), 양윤기(The ECG) 씨가 참관 팀원으로 참여해 값진 결과가 나올 수 있도록 도움을 주었습니다.



Challenge

데이터는 흔할지언정 빅데이터 확보는 어려웠다

시작이 반이라고들 한다. 하지만 이번 프로젝트는 시작 자체가 쉽지가 않았다. 기술 프로젝트를 진행할 때 가장 큰 어려움은 주제를 선정하는 부분이다. 주제 선정을 위한 브레인 스토밍을 할 때, IT/문화/통신/제조/유통/소비자/금융/인프라/정부 등에 대한 수많은 아이디어가 쏟아져 나왔다. 하지만 ‘고양이 목에 방울 달기’라고 ‘그 데이터를 어디서 구해야 하느냐’는 벽에 부딪혔다. 여러 주제들 가운데 프로젝트 기간 내에 데이터를 구할 수 있었던 것은 하나도 없어 보였다.

많은 데이터를 구하는 것은 언제나 어려운 일이다. 일례로 한국의 검색 포탈 서비스로 유명한 ‘네이버’도 초기 단계에는 뛰어난 검색엔진을 갖고 있었음에도 바로 한계에 부딪혔다고 한다. 한국은 IT 강국이라고 불렸지만, 웹 페이지 수가 많지 않았기 때문이다. 최고 성능의 엔진을 탑재해 놓고도 연료가 없는 자동차나 마찬가지였다. 결국 네이버는 ‘어떻게 하면 많은 데이터를 긁어 모을 수 있을까’ 하는 생각에서 탈피해 사람들이 마음껏 데이터를 생성할 수 있는 인프라를 구축하기에 이르렀다. 지식iN, 블로그, 카페 등을 만들어 가입 회원들에게 콘텐트를 만들게 하고, 결국 지금의 위치에 오르게 되었다고 한다.

이처럼 새로운 주제의 아이디어라고 하더라도 이를 뒷받침할 수 있는 데이터가 없다면, 결국 한계에 부딪히기 마련이다. 어찌 보면, ThinkBig팀은 처음부터 이러한 데이터의 가용성에 대한 문제 제기를 계속하였기에 중간에 주제 변경 없이 끝까지 한곳을 바라보고 진행할 수 있었다.



보안이 생명인 증권사 데이터를 다루면서...

운 좋게도 팀원 중 한 분이 근무하는 증권사의 협조로 빅데이터라 부를 수 있을 만한 방대한 데이터를 구할 수 있게 되었다. 하지만 개인정보보호에 대한 중요성이 강조되는 상황이고, 특히나 일련의 금융 보안사고들 때문에 모두들 보안에 매우 민감하게 반응할 수밖에 없었다. 개인을 식별할 수 있을 만한 모든 데이터는 제거하여 분석에 적용했으며, 분석 인프라는 증권사 안의 서버를 사용해 데이터가 밖으로 유출되지 않도록 하였다. 이는 많은 부분에서 제약으로 작용했다. 우리 팀에서 당초 기대를 걸었던 가입자의 인구통계학적 정보 분석에 한계가 따랐고, 빠른 진행이 사실상 불가능에 가까워졌다.

게다가 2주 간의 집체교육 기간에 밀렸던 업무들이 산더미처럼 불어나 ThinkBig팀을 집어 삼킬 듯 기다리고 있었다. 프로젝트를 진행할 시간은 사실상 주말밖에 없었다. 시간이 날 때마다 틈틈이 진행하자는 생각은 접근성의 제한으로 사실상 불가능했다. 미팅에서 한 번의 오판은 일주일의 노력을 허사로 만들 수 있을 만큼 치명적이었다. 그 실수를 만회하기 위해 또 다른 일주일을 써야 했다. 그렇기에 방향성을 잡기 위한 매주 정기 미팅은 밤 12시가 넘어서도 끝날 것 같지 않았다. 매번 가설을 세우고 지난 가설을 검증하며, 검증된 가설을 확대하는 작업의 반복이었다.

하지만 이런 위기의식은 오히려 팀을 하나로 모으고 진행에 신중을 더하는 방향으로 이어졌다. 만약 팀원 서로가 공감했던 위기의식이 없었다면 더욱 많은 시행착오가 필요했을 것이고, 결국 기한 내에 의미 있는 결과를 얻기는 힘들었을 것이다. 어쩌면 우리 팀에게 보안에 따른 접근성의 제한이라는 위기는 오히려 좋은 결과를 얻을 수 있었던 기회가 아니었나 생각해 본다.



Solution

껍데기보다는 뼈대부터...

집체교육이 끝나자 우리 팀에게 주어진 임무는 평범한 과제가 아닌, 하나의 프로젝트였다. 프로젝트 주제를 선정하고 WBS(Work Breakdown Structure)를 제출할 때까지만 하더라도 일반적인 프로젝트 관리 방법론만으로 충분할 것이라 생각했다. 하지만 막상 진행해보니 당초 예상은 빗나갔다. 다른 프로젝트와는 달리 명확한 Output Image가 존재하지 않았기 때문에, 일반적인 방법론을 바로 적용시키기에는 일정관리가 쉽지 않았다. 따라서 기본적인 진행은 Agile/XP를 따라 1주 단위로 미팅을 통해 반복(Iteration)하는 것을 따르되, 세부적인 실행 내역에는 별도의 분석 방법론이 필요했다. 아쉽게도 집체교육 때 배운 방법론은 분석 주제를 선정하는 Business Modeling에 중점을 뒀기에, 현업 인터뷰가 불가능한 상황에서는 큰 의미를 가지지 못했다. 뿐만 아니라, 분석을 실행하고 시스템을 구축하는 실행 단계에 대한 명확한 가이드라인도 없었기에 방법론에 대한 폭넓은 조사가 필요했다.

dbin_297.jpg

IBM의 CRISP-DM 부터 시작하여, KDD , SAS의 SEMMA 중에서 하나를 택하기로 하였다.

각 방법론은 명칭은 다르지만, 내용적인 측면을 본다면 거의 비슷한 내용을 가진다. 요약하여 세분하면, 먼저 FGI(Focused Group Interview) 등을 통해 VoC/Pain Point를 수집하고 비즈니스를 이해하는 단계를 거친다. 다음 단계는 데이터를 확보하여 데이터간의 상관관계(Correlation)를 파악하고 탐색이나 분포분석, 상관성 분석을 통해 데이터를 이해하는 초기 단계를 거친다. 이어서 파악된 비즈니스 니즈와 데이터의 특성에 따라 어떠한 분석 모델을 적용할 것인지 가설을 수립하는 단계를 지나, 모델링의 적합성을 바탕으로 해당 가설을 검증하면서 가설을 추가하거나 확대하는 단계로 이어진다. 마지막으로 정합성이 검증된 모델을 토대로 시스템으로 구현-자동화해 분석된 결과가 지속적인 가치를 창출할 수 있는 인프라를 구축한다는 점에서 대부분의 방법론은 유사한 속성을 가진다. 다만 어떠한 단계를 조금 더 세분화하고 중점을 두었는가 하는 것이 각각의 방법론들이 갖는 특징이라 말할 수 있다.

현업 담당자들과 인터뷰는 사실상 불가능했으므로 비즈니스 니즈에 따른 톱다운 방식의 방법론 보다는 데이터 자체에 중점을 둔 바텀업 방식의 방법론이 필요했다. 따라서 데이터 분석에 특화된 SAS의 SEMMA 분석 방법론을 따르기로 결정하였다. SEMMA 방법론은 다른 것들과 달리, 비즈니스적인 내용에 집중하기 보다는 데이터로부터 어떻게 모델링을 이끌어는 것에 집중되어 있다. 이 부분이 ThinkBig 팀의 부족한 부분과 조금 더 맞는 느낌이었다.

dbin_298.jpg

만약 우리 팀이 이러한 뼈대를 수립하지 않고 프로젝트를 진행하였다면, 매주 나오는 결과물과 여러 가지 예외 상황들에 휩쓸려서 프로젝트를 제대로 진행할 수 없었을 것이다. 무언가를 만들고 보여줄 수 있는 껍데기도 중요하다. 하지만 그 전에 어떻게 진행할 것인지 방향성을 명확히 하여 뼈대를 세우고 살을 붙여나간다면, 예상치 못한 위험 앞에서도 당황하지 않고 목표를 향해 한발한발 나아갈 수 있다.



프로젝트, 그 기나긴 여정

Sampling
증권회사로부터 받은 정보는 고객 마스터 데이터, 고객 포트폴리오(트랜잭션 정보), 기타 외부 정보, 이렇게 3가지로 구분할 수 있다.

dbin_299.jpg

고객 마스터 데이터에는 대표적으로 고객의 가치, 거래특성 정보 등을 담고 있으며, 고객 포트폴리오 정보는 고객별로 보유한 금융상품의 정보, 마지막으로 기타 정보에는 마케팅 캠페인 데이터, 고객별 채널 접촉 정보 및 종합 주가 지수 등의 정보가 담겨 있었다. 이 중에 가장 많은 비중을 차지하는 것은 고객별 월 평균 잔고였다. 증권사 DB는 각 트랜잭션 데이터를 모두 갖고 있는데 반해, 그 정보를 그대로 전부 가져오지 않고 Sqoop을 이용하여 ETL로 가져올 때, 고객/상품별 월 평균 잔고로 축약하였다. 그럼에도 데이터 수가 1억 4천만개가 넘을 정도로 방대했다.

Exploration
데이터를 가져와서 HDFS에 저장을 완료한 뒤에는 데이터의 속성을 파악하기 위하여 각기 모든 변수들에 대해 기초적인 분산분석을 포함해 상관성 분석을 시행하였다. 전체 과정 중에 어쩌면 가장 지루한 과정이 아니었나 싶다. 특히 데이터의 양이 많음에도 시스템이 3노드밖에 되지 않아 기초적인 분포를 보는 것만으로도 MapReduce는 인내심을 시험하는 듯이 느렸다. 이 과정에서 나오는 그래프의 양도 상당했으므로 수많은 자료에서 무언가 인사이트를 잡아내기는 쉽지 않았다. 하지만 이 과정을 통해 각각의 데이터에 대한 기초적인 내용을 파악하고, 상식적으로 이해하기 힘든 이상치를 보정할 수 있었다.

dbin_300.jpg

이후 모든 변수에 대해서 서로간의 영향도를 파악하기 위해 상관성 분석을 했다. 예상했던 것보다 서로간의 상관성이 높은 변수가 너무 많았다.

상관성이 높은 변수가 많다는 것은 분석적인 접근으로 보았을 때, 긍정적인 측면과 부정적인 측면 모두를 가지고 있다. 긍정적인 측면으로는 각각 변수 서로간에 어떠한 영향을 주고 받는지에 대한 개략적인 정보를 얻을 수 있고, 때로는 여기서 새로운 발견을 할 수 있다는 점이다. 하지만 부정적인 측면을 보자면, 변수들끼리 서로 같이 움직인다는 의미다. 즉 분석의 입력변수로서 모두를 같이 쓸 수 없다는 것으로 해석할 수도 있다.

dbin_301.jpg

상관성 분석을 통해 동일하게 움직이는 혹은 반대로 움직이는 변수들의 특성을 알 수 있었고, 고객의 성향을 분명히 갈라주는 요소를 확인할 수 있었다. 예를 들면, 주식과 채권에 투자하는 성향과 선물 옵션, 증권 위탁에 투자하는 성향은 서로 정 반대의 특성을 가진다는 것이었다. 반면 주식과 채권끼리는 매우 유사한 고객의 투자 성향을 갖는 것으로 나타났다. 의외로 선물 옵션과 증권 위탁끼리 또한 유사한 투자 성향을 갖는 것을 알 수 있었다(상관성 90% 이상).

Modification
길고 험난한 데이터 탐색의 과정이 어느 정도 진행되자, 해당 변수만으로는 바로 분석에 활용할 수 없었다. 뿐만 아니라 변수들을 가공해 분석에 용이하도록 파생변수를 생성해야 할 필요가 생겼다.

dbin_302.jpg

여러 종류의 파생변수를 생성하였지만, 대표적으로는 총 거래일, 마케팅 휴면일, 이탈 소요기간, 최고자산 이탈 소요일, 최고자산 소요기간, 포트폴리오 비율 등과 같이 기존에 갖고 있는 데이터의 변수들을 비즈니스적으로 의미가 있으면서 결과 해석이 용이하도록 일정한 수식에 의해 생성해 분석에 적용했다. 이러한 파생변수들 또한 기초적인 분포분석 및 상관성 분석을 진행했다.

Modeling
이번 프로젝트의 결과는 크게 두 가지로 나눌 수 있다. 첫째는 고객 특성별 세그멘테이션에 따른 프로파일링이고, 둘째는 고객별 맞춤 상품 추천이다. 세그먼트를 정하는 데 있어서 가장 많이 사용되는 방법으로는 분포를 보고 비즈니스적으로 의미 있다고 파악되는 특정한 Cut-off 요소를 찾는 방법이 있다. 하지만 우리 팀 입장에서는 분포분석을 통해 도출된 결과를 하나하나 비즈니스와 커뮤니케이션을 할 수 없었으므로 수학적으로 합리적이라 생각되는 세그멘테이션 방법으로서, 클러스터링(K-Means) 알고리즘을 사용했다.

dbin_303.jpg

K-Means 알고리즘을 사용하면, K의 값에 따라 나눠지는 군집의 개수와 특성에 영향을 많이 미치게 된다. 따라서 K 값을 점차 올리면서 Iteration 작업을 반복하여 K에 따른 Sum of squares 값을 확인했다. 간략히 설명하면, Sum of squares가 나타내는 것은 군집끼리의 Centroid(군집의 중간값)가 서로 얼마나 떨어져 있는지를 보여주는 값이라고 볼 수 있다. 군집의 개수를 늘렸을 때, Centroid가 일정 이상 가까워지거나, 혹은 갑자기 가까워지는 변곡점이 있으며 해당 군집의 개수를 활용하는 것이 가장 합리적이라 판단했다.

고객별 맞춤 상품을 추천하기 위해 Recommendation(Collaborative Filtering) 알고리즘을 사용했다.

dbin_304.jpg

상품을 추천할 때 전체 고객의 정보를 그대로 이용하는 방법도 있지만, 이전에 산출된 군집별로 고객의 특성이 서로 다르다고 파악해 동일 군집 내에서의 추천 알고리즘을 사용했다. Collaborative Filtering을 계산하기 위해서는 고객의 상품 가입 매트릭스와 상품들 간의 상관성 매트릭스가 필요하다. 이 중에 문제가 되었던 부분은 상품들 간 상관성 매트릭스를 어떻게 구성할 것인가였다. 이에 대한 많은 논의가 있었지만, 결국 Mahout에서 제공하는 모든 종류의 상관성 매트릭스를 다 구현했다. 따라서 Log Likelihood, Pearson, Tanimoto, Spearman, Euclidean Distance 모두를 다 사용해 5위까지의 결과를 도출했다.

Assessment
클러스터링을 통해 도출된 군집들은, 그 자체로는 크게 의미가 없었다. 단순히 나눠놓은 것에 불과했으므로 이를 비즈니스적으로 재정의하고 각 군집의 특성을 프로파일링하는 것이 중요했다. 결국 ‘핵심 고객군’, ‘관리 사각지대 고객군’, ‘장려 고객군’이라는 3개 축으로 재정의했다. 해당 군집의 대표적 특성이라 보이는 점들을 해당 클러스터와 다른 클러스터 간 귀무가설을 토대로 T-검정을 시행했다. Two Sample T-Test를 통해 P-Value가 0.05 미만으로 나온다면 해당 귀무가설을 채택해 분석결과가 의미가 있음을 검증했다. (다음 회에 계속) dbin_305.jpg






출처 : 한국데이터베이스진흥원

제공 : DB포탈사이트 DBguide.net