2012년 12월 20일 목요일

비정형 데이터의 다양한 활용 방법

참으로 오랜만에 글을 올리네요.

그동안 많은 일들(?)이 있는 바람에 그리 되었으니 넓은 아량으로 이해해 주셨으면 좋겠습니다^^

오늘 말하고자 하는 주제는 비정형 텍스트 데이터에서 어떠한 트렌드를 예측하기 위한 방법에 대한 것을 말해볼까 합니다.

오늘날 가장 핫한 것이 소셜 미디어인데요.
물론 소셜 미디어도 비정형 텍스트 데이터의 하나라고 볼 수 있겠죠.
하지만, 소셜 미디어 말고도 우리 주변에는 많은 텍스트 데이터가 존재합니다.
여러분들이 직접 작성한 보고서나 고객이 불만을 접수한 내역, , 컨퍼런스 자료 등등등..
참 많죠?

...이제 몇가지 예를 들면서 재미있는 가설을 한번 세워볼까 합니다.




첫째로, 소셜미디어를 포함, 고객의 불만을 분석하여, 이것을 조기경보시스템과 연동시켜보고자 하는데요. 어떨까요?

조기경보시스템이라 함은, 기업 내에서 유통시키는 제품이나, 새로 내놓은 신제품이 있다고 가정했을 때,
제품의 특정 부분에 문제가 생김으로 발생될 수 있는 문제를 조기에 발견, 대응하고자 하는 시스템 입니다.

예를 들자면(오늘 참 예를 많이 드는군요^^), 휴대폰이 있었을 때, 특정 부품에 문제가 있어, 이 부분의 A/S가 마구 늘어나게 됩니다. 근데 이상하게, OO날짜에 만들어 진 제품만 그렇다면, 이 때 생산되어 유통시킨 제품에 대하여 어떠한 작업이 들어가야겠죠?

, 그럼 이런 조기경보시스템이 있다고 가정하고, 비정형 텍스트 데이터를 연동시켜 볼까요?

고객이 불만을 접수합니다. 아주 많은 종류의 불만들이 있을 수 있겠죠. 전화로 문의할 수도 있고, 홈페이지나 고객게시판 등 많은 채널들이 있을 것 입니다. 보통 사람들은 A/S를 받기 전에 정말 문제인 건지, 원래 그런건지 등을 확인하고자 하거든요.

이 중에서 유독 많은 불만을 차지하는 부분이 있을 텐데,
우리는 여기에서 A/S가 늘어가기 전에 이미 무언가 이상하다는 낌새를 챌 수 있는 것이죠.
이를 해결해기 위해 한발 앞서 부품의 교체나, 부품 조달 등 조치를 취할 수 있게 되는 것이죠.
역으로, 불만만 제시될 뿐, A/S가 없다면, 이건 다음 제품에서 개선되어야겠죠?


두번째로는, 기술 트렌드에 대한 예측입니다.
우리는 뉴스 매체 등에서 앞으로 뜨는 기술이다. 미래에 유망한 기술이다. 등 많은 트렌드 들을 접하고 있습니다.

그런데, 이것을 어떻게 증명할 수 있을까요?

어디까지나 제 의견이지만, 어느 정도 근거를 가지고 주장할 수는 있을 것 같다는 생각이 드네요.
~ 한번 소설을 한번 써 보도록 할까요?^^

출판되는 책들의 제목, 논문, 등록되는 특허, 정책 등 이러한 텍스트 데이터를 분석을 해 봅니다.
그러면, 공통적으로 많이 나오는 키워드가 있을 텐데, 이 키워드가 어쩌면 트렌드가 되지 않을까 싶네요.
(
이미 소설이라고 말씀을 드렸기 때문에, 데이터 분석에 있어서 검증은 필수라는 것 아시죠?^^;;, 살짝 발을 빼놔야 문제가 없기에...ㅎㅎㅎ)


분야별로 관련 된 매체를 활용하면, 기술 뿐만 아니라 다양한 분야의 트렌드 예측도 가능하지 않을까 싶습니다.


백화점을 예를 들자면, 각 매장의 판매 된 상품 코드 등을 분석해 보면 옷의 종류, 색상 등을 알 수 있을 텐데, 이는 앞으로 유행이 될 패션 트렌드가 될 가능성이 있을 수 있는 것 입니다.

그러면, 이런 정보를 입점 한 각 매장에 알려주면, 백화점 매출이 올라가는 효과를 볼 수도 있겠죠?^^
(상생 경영~ 절대 어렵지 않아요~ㅎㅎ)




이처럼, 비정형 빅데이터는 약간의 아이디어만으로도 많은 활용 방법이 있습니다.중요한 것은 분석의 기반이 되는 데이터가 어떠한 것이냐에 대한 것이 겠죠.
예전에도 말씀드렸지만, Garbage in, Garbage out 절대 잊으시면 안됩니다^^
그럼 오늘은 여기서 줄일까 해요.

다음에 또 뵈요~


- Post by Jongwook   @jwwon 팔로우하기

2012년 9월 26일 수요일

자장면 가격이 오르면 커피값도 오른다고!?

이전 포스트에서 커피에 대한 지역별 가격과 커피전문점의 분포 현황을 파악하여 커피 전문점을 오픈하려는 사장님들에게 도움을 줄 수 있는 그래프를 만들어 보았다.

데이터 분석 중 중요한 것 중 하나는 데이터의 관계를 알아보는 것이다. 앞선 포스트에서는 데이터의 패턴에 대해 분석해 보았다면 이번 포스트에서는 각 품목 가격에 대한 상관관계를 알아보았다. 먼저 각 지역별로 주요 품목(커피, 불고기, 김치, 자장면, 숙박) 가격 평균을 구한 후 품목별로 산점도(scatter plot)를 그려보았다.





그래프를 살펴보면 각 품목 별로 다양한 관계성을 살펴 볼 수 있다. 커피와 불고기는 약하지만 음의 상관 관계를 갖고 있고, 김치는 다른 품목 가격이 아무리 비싸져도 김치가격은 거의 변화가 없다는 것을 알 수 있다.
(
커피와 불고기의 음의 상관관계는 데이터의 missing으로 인한 것으로 판단됨)


한가지 관심 있게 본 품목은 커피와 자장면 가격이다. 뚜렷하지는 않지만 자장면 가격이 오를수록 커피 가격도 비싼 경향이 보인다. (노란색 표시)
실제로 두 품목에 대한 상관관계가 0.534로 강하지는 않지만 어느 정도의 양의 상관관계를 갖고 있다는 것을 알 수 있다. 하지만 회귀분석을 통해 예측모형으로서 수용할만한 수준인지 알아본 결과 R-squre(모형 정확도) 30%로 적합하지는 않았다.

모형으로서는 설명력이 부족했으나 커피와 자장면 사이에 분명히 양의 상관관계가 존재하고, 데이터가 각 지역구 별 평균이기 때문에 어느 정도의 인과관계가 존재할 것으로 판단이 되었다. 이를 알아 보기 위해 버블차트를 활용하여 각 지역구 라벨과 해당 품목 점포수를 Merge 하여 살펴보았다.


위의 버블차트를 살펴보면 커피와 자장면의 가격차이는 지역 차이라는 것을 알 수 있다. 부동산 가격이 비싸고 상권이 생긴지 상대적으로 얼마 안된 지역(강남구,서초구, 용산구)이 비싸다는 것을 알 수 있다.

뻔한 결과 일 수도 있지만 유독 커피와 자장면 사이에 좀더 높은 양의 상관관계를 보인 것은 사람들이 제일 많이 찾는 품목이기 때문이라 생각한다.


수요가 많기 때문에 그 지역의 특성(지역 주민 또는 유동인구의 구매력, 임대료, 인구특성 등)을 다른 품목보다 많이 반영하게 되고, 각 Factor를 골고루 반영하여 가격이 형성 되었을 것이다. 이렇게 형성된 가격은 그 지역의 물가를 나타내는 하나의 지표가 될 수 있다.

이번 포스트까지 오픈 API를 활용하여 데이터 수집부터 데이터 가공, 분석, 시각화까지 골고루 다루어봤다. 이번포스트를 쓰면서 빅데이터라는 주제에 대해 잠깐 정리하자면, 여러 매체에서 빅데이터에 대해 떠들고 있지만 개인적으로 BI, 데이터마이닝, OLAP 등 기존의 시장에서 빅데이터라는 이름만 추가된 모습이라고 생각한다. 빅데이터라는 이름을 빌미로 벤더사에서는 빅데이터 분석 시장에 자신들의 기술이 최고라고 떠드는 모습이다.
사실 정말 큰 규모의 회사가 아닌 이상 벤더사에 외치는 빅데이터를 보유하고 있는 회사는 별로 없다. (아직 국내 몇몇 대기업을 제외하고는 아직 빅데이터를 분석할 의지도 의미도 갖고 있지 않다고 생각한다.) 
앞으로 데이터 양이 늘어날 것은 분명하다. 중요한 것은 벤더사에서 떠드는 기술, 제품이 아니다. 빅데이터 안에서 가치 있는 정보를 볼 수 있는 능력이다.
이 능력은 교육을 수강한다고, 자격증을 취득한다고 느는 것이 아니라고 생각한다. 여러 분야의 데이터를 분석해보고 그 분야의 해박한 지식이 있어야 데이터를 활용 할 줄 알게 된다.



-Post by Namyoun 

2012년 8월 7일 화요일

역시 커피는 강남커피!?

최근 3~4년간 확고한 하나의 트렌드로 자리 잡힌 커피문화.. 많은 사람들이 출근 하면서 한잔, 점심 먹고 한잔, 미팅 하면서 한잔, 이미 사람들 생활 속에 깊이 자리잡은 커피문화이다. 그렇기 때문에 서울시 커피가격에 대해 조사해보면 지역별 물가 차이를 가늠할 수 있을 뿐만 아니라 커피 전문점을 오픈하려는 사람들에게 의미 있는 정보를 전달 할 수 있을 거라 생각했다.
먼저 아래의 그래프는 지역별로 커피가격에 대한 평균, 최대, 최소값을 라인그래프로 나타낸 것이다.


서울시 동별 커피 가격(평균, 최대, 최소)

그래프를 통해 알 수 있는 사실은 최고가가 무려 13,000원으로 역삼동에서 나왔으며, 최저가는 면목동, 오금동, 상계동 등에서 1,000원이라는 점이다. (신촌동의 0원은 missing값으로 판단된다.)
이는 커피가격의 마지노선이 1,000원이라는 점이며, 평균적으로 2,000 ~ 4,000 원 사이에서 가격이 형성 되어 있다는 것을 알 수 있다.
또한 주요 커피전문점(스타벅스, 카페베네, 커피빈 등)에서 커피 가격이 4,000~5,000원대에 형성되어 있는 것으로 보아 주요 커피 전문점의 커피 가격이 평균 이상으로 상당히 비싸다고 볼 수 있다. 만약 커피 전문점 별 고객 만족도 및 맛 데이터가 있었다면 상당히 괜찮은 커피시장 분석 보고서를 만들 수 있다고 생각이 든다.


공간 시각화

이번에는 저번 포스트에서 만든 데이터를 활용하여 구별 평균 커피가격을 지도에다가 공간시각화 시켜보았다. 공간화를 시키기 위해 각 점포의 지역이 동으로 구분된 데이터를 주소데이터와 merge시켜 구단위로 통합하고, 구글맵의 위도, 경도 정보를 맵핑 시켰다.
원이 클수록 해당 지역의 커피가격이 높다는 것을 의미한다.


위 두 그래프를 통해 상업, 사무지역이 밀집되어 있고 임대료가 비싼 강남지역의 커피가격이 높다는 것을 알 수 있다. 이렇게 공간 시각화를 통해 특정 지역에 커피 전문점을 오픈 하려는 사장님에게 해당 지역에 가장 경쟁력 있는 가격대가 어느 정도인지 한눈에 가늠 할 수 있는 것이 장점이다.

Heat Map

다음에는 이전 포스트에서 소개 했던 treemap에서 발전한 형태인 HeatMap으로 데이터를 시각화 시켰다. (아래의 그래프는 타블로라는 제품을 사용 하였다.) 각 서울시 구별로 업종별 평균가격과 업체개수를 보여주고 있다.
사각형의 크기가 평균가격이고, 색깔의 차이가 점포의 개수를 나타낸다.


색깔이 진하다는 것은 해당 업종에 경쟁이 치열하다는 점을 말해주고, 색깔도 진하고 사각형의 크기가 크다는 것은 해당 업종이 그 지역에서 장사가 잘되어서 사람들이 그 업종을 많이 종사하고 있다고 할 수 있다.

그렇다면 특정 업종에서 사각형이 크고 색깔이 연한 지역은 무엇일까?
이는 가격이 높은 소수의 점포만 있는 지역으로 아마도 독과점 형태로 존재하는 지역일 것이다.

다방업에 대해서만 다시 집중적으로 살펴보면,

강북구와 강서구, 서초구가 사각형이 크고 색깔이 연한 형태를 띠고 있으며, 해당 지역에 커피전문점을 기존 업체들 보다 싼가격에 커피를 판다면 충분히 경쟁력이 있을 수도 있다는 인사이트를 얻을 수 있다.
또한 커피 전문점이 서대문구, 송파구, 노원구에 밀집되어 있는데 강남구나 종로구 등 오피스 지역에 커피 전문점이 밀집되어 있을 것이라는 예상을 깨는 결과였다. 특히 노원구는 저가 커피를 바탕으로 한 경쟁이 치열한 곳임을 알 수 있다.

지금까지 데이터를 가공하고 다양한 형태의 그래프로 시각화 시키는 작업을 해보았다. 데이터 시각화를 통해 쉽고 빠르게 데이터를 이해하고 새로운 인사이트를 도출 할 수 있었다.
물론 그래프를 제공받는 사람에게 전달하기 전까지 전달 받을 사람의 목적과 이해정도를 충분히 고려하여 데이터를 가공하고 그래프를 선택해야한다는 점은 잊지말아야 한다.

또한 이런식으로 각 지역의 유동 인구수나 연령대, 결제 정보 등이 합쳐진다면 훌륭한 상권 분석 시스템으로 발전 할 수 있다고 생각한다.

다음 포스트에서는 변수들 간의 관계를 찾아내고 그 관계에 대해 시각화 시켜보도록 하겠다.

 - Post by Namyoun

2012년 8월 2일 목요일

Data 수집부터 Data visualization 까지

데이터 분석가 또는 과학자라면 단순히 데이터를 분석만 하는 것 뿐만 아니라 데이터의 수집부터 가공, 탐색, 분석, 검증, 시각화 까지 모든 단계에 대해 능숙하게 작업을 처리 할 수 있어야 한다.
이번 포스트에서는 데이터 수집부터 시각화까지 단계 별로 실 데이터를 활용하여 실 예제를 들어 설명하겠다.

스토리텔링

데이터 안에 숨겨진 정보를 찾기 위한 방법은 여러 가지이다. 통계적인 분석을 통해 수치적인 결과로 알아낼 수도 있고, 그래프를 통해 시각적으로 표현할 수도 있고, 마이닝과 같은 고급 분석 방법을 통해 새로운 정보를 만들어 낼 수도 있다
하지만 그 결과를 받은 사람의 입장으로서는 지루한 숫자들의 나열이고, 알 수 없는 도형들의 집합체일 뿐이다. 정말 데이터 안에 있는 의미, 진실을 정확히 알기 위해서는 명확한 목표를 가지고 올바른 질문을 할 수 있어야 한다.


네이선 야우저의 비주얼라이즈 디스라는 책을 보면 데이터를 통해 이야기 하는 방법을 제시한다.
먼저 데이터를 수집하고, 무엇을 알고 싶은지 질문을 하고, 답을 얻기 위한 적절한 도구를 고른 후, 도구를 활용하여 데이터를 탐색한다.

트렌드를 찾고, 패턴을 찾고, 카테고리를 나누는 등 탐색 작업을 마치고 난 후 데이터가 말하는 이야기를 정리하고 이야기를 받아들일 사람을 위해 깊이 생각하고 단순하게 디자인한다(참고 사이트 : http://book.flowingdata.com/)
아래의 내용부터 실데이터를 바탕으로 raw data 안에서 의미를 찾고 데이터를 시각화 해보도록 하겠다.



데이터 수집 및 가공


지난 4월달부터 서울시에서 공공 데이터를 일반 대중들에게 오픈 API를 제공하기 시작했다. 서울 열린 데이터 광장(http://data.seoul.go.kr) 으로 접속하면 버스운행정보, 물가정보, 인구정보, 부동산 정보들을 제공 받을 수 있다.


필자는 오픈API를 활용하여 서울시 개인 서비스 요금정보 데이터를 수집하였다. 데이터는 CSV, XML, JSON 형식으로 제공되는데 이번 데이터 수집은 XML 데이터 형식으로 데이터를 받아와 일차적으로 Java로 파싱 후 분석 가능한 데이터 형태로 변환 시켰다. (CSV 형식을 파일 형태로 바로 다운이 가능해 편하지만 실시간으로 업데이트가 되지 않는다.)








데이터는 53,919 건이 수집 되었으며, 서비스이름, 가격, 지역, 업종, 업체명 등의 필드로 구성되어 있다.


순번

출력명

출력 설명

1

BSSH_NM

업소명

2

BSSH_SEQ_NO

업소일련번호

3

INDUTY_CODE_SE

업종코드

4

INDUTY_DESC

업종

5

TLPHON_NO_CN

전화번호

6

AR

면적()

7

DONG_CODE_SE

동코드

8

LEGALDONG_NM

동명

9

ADRES_CN2

주소

10

PRDLST_CODE_SE

품목코드

11

PRDLST_DESC

품목

12

PC

가격

13

CHCK_MD

점검일자

14

PRGN_BSSH_YN

착한가게여부

물론 파싱하여 가져온 데이터를 바로 사용할 수 있는 것은 아니다. 결측값(missing value)에 대한 처리와 이상치에 대한 처리를 해주어야 하고, 분석 목적에 맞게 테이블을 변경하고 데이터를 가공해야 데이터의 새로운 가치를 부여할 수 있다.




데이터 탐색 및 분석


데이터 탐색, 분석을 위한 도구는 목적과 기능에 맞게 사용자가 알맞게 선택하면 된다. 엑셀, 구글 스프레드시트, R, SAS, SPSS, 파이썬 등 도구는 굉장히 다양하다. 다만 각 데이터의 특성과 분석 목적에 따라 도구별로 특장점이 있으니 이를 잘 파악하여 선택하는 것이 중요하다.
필자는 수집한 데이터 건수가 빅데이터 수준은 아니기 때문에 엑셀과 R을 활용하여 탐색 및 분석을 하였다. 그리고 추가적으로 데이터의 시각화를 위해 전용 소프트웨어를 사용할 것이다.
나는 이 데이터를 활용하여 서울시의 지역별 물가 수준과 업종현황을 알고 싶었다. 이러한 현황은 쉽게 막대그래프를 통해 확인 할 수 있다. 동별 서비스 평균가를 막대그래프로 표현해봤다.

하지만 보다시피 주소가 동으로 표현되어 있어 그래프를 봐도 혼란스럽고, 정확한 특징을 잡기 어렵다.
그리고 지역과 가격정보 뿐만 아니라 업종별 가격현황과 업종 분포도 한눈에 보고 싶다. 그리고 주소가 동이 아닌 서울시 구별로 보고 싶다. 이 두가지의 요건을 만족하기 위해서는 그래프의 시각화와 데이터의 가공이 필요하다.
이를 위해
l  동으로 된 데이터를 구별로 그룹화 시킨다.
l  구조화된 3가지의 변수를 표현할 수 있는 treemap을 사용한다.
l  GPS정보를 Merge 시켜 map 표현하여 좀더 쉽게 정보를 전달한다.
하기로 하고, 데이터를 시각화(Visualize) 시켜보기로 한다.



데이터 시각화

단순히 테이블에 적혀있는 데이터를 통해서는 전혀 인사이트나 정보를 얻을 수 없다. 위와 같이 선그래프나 막대그래프 등으로 데이터를 표현해야지 데이터에 대한 이해도가 높아진다. 하지만 기존의 막대 그래프나 선 그래프에는 한계가 있다. 기본 그래프 외에 다양한 데이터 표현 방법이 있다. 지도에 데이터를 표현 할 수도 있고, 트리맵이나 기하학적인 표현을 통해 좀더 데이터의 다이나믹한 면을 전달 할 수 있다.


TreeMap

그래서 위의 개인 서비스 정보를 R을 활용하여 데이터를 시각화 시켜보았다. 먼저 기존 데이터를 다음 소스 코드를 활용하여 각 동별 업종별 평균과와 점포개수를 계산하여 데이터를 가공하고, R package중 고급 그래프를 지원해주는 라이브러리를 활용하여 treemap으로 표현해봤다.

위의 그래프를 살펴보면 여러 개의 Box와 색깔, 박스 크기로 데이터를 표현해 주고 있는데, 기존 트리 다이어그램에서 한단계 업그레이드된 표현 방법이다. 1990년 벤 슈나이더만이 처음 제시한 그래프인데 데이터가 트리 구조의 데이터를 가지고 있을 때 완벽하게 활용된다.
위의 그래프의 박스 size는 그 지역의 개인 서비스 가격, color는 해당 라벨의 업소 개수를 말해준다. 그리고 박스의 경계를 통해 각 지역별 업종의 비율을 나타내준다. 역삼동, 종암동, 여의도동, 삼성동 순으로 개인 서비스 가격이 비싸며, 상계동, 신월동 등에 업소 개수가 많다는 것을 알 수 있다.
특히 개인 서비스 가격이 높은 지역에서 가장 비싼 가격의 업종은 호텔업이며, 박스의 크기가 작아질수록 호텔업에서 여관업으로 변경되는 모습을 볼 수 있다.

위의 트리맵은 지역 중심이 아닌 개인 서비스 업종 중심으로 재구성한 그래프이다. 한식업이 가장 많이 있었으며, 한식 중 김치찌개 백반이 가장 많은 품목이고 가격이 싸다는 것을 쉽게 알 수 있다. 그리고 비싼 품목의 업종일수록 업종개수가 적다는 것을 한눈에 파악 가능하다. 그리고 골프연습장 이용료와 호텔숙박료가 개인 서비스 품목 중 상당히 비싸다는 것이 파악 가능하다.

공간시각화

이번에는 GPS정보와 우편번호 주소 DB를 수집하여 동으로 되어 있던 것을 구로 그룹핑 하여 각 구청의 GPS정보를 매칭 시켰다. 이 데이터를 통해 위의 treemap보다 좀더 이해가 쉽도록 타블로(Tableau) 프로그램을 사용하여 공간 시각화를 하였다.
각 구별로 개인 서비스업을 하는 업체의 개수를 공간화 시킨 것이다.


 송파구와 노원구에 가장 많이 개인서비스 업체가 많은 것을 한눈에 확인 할 수 있다.
이렇게 데이터를 가공하고 필요한 데이터를 merge시켜 사람들이 한눈에 데이터를 파악할 수 있게끔 만들어 주는 것이 데이터 시각화라고 할 수 있겠다.

지금까지 데이터의 수집과 가공, 탐색, 분석, 시각화를 실 데이터를 활용하여 작업해 보았다. 데이터의 시각화는 디자인적 요소도 중요한데 R 소프트웨어가 충분히 디자인적인 면은 충족시켜주지 못하는 면은 있다. 다음 포스트에는 데이터 가공과 시각화까지 완료된 그래프를 통해 어떠한 정보를 알아낼 수 있는지 스토리텔링 해보도록 하겠다.

 - Post by Namyoun