일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Machine Learning
- Deep learning
- 빅데이타
- 김양재 목사
- probability
- 몽고디비
- 데이터 과학
- Statistics
- 주일설교
- 김양재
- 확률
- 김양재 목사님
- WebGL
- Artificial Intelligence
- 빅 데이타
- 우리들교회
- data science
- openCV
- node.js
- 인공지능
- R
- 통계
- nodeJS
- MongoDB
- 딥러닝
- Big Data
- 빅데이터
- c++
- 빅 데이터
- No SQL
- Today
- Total
Scientific Computing & Data Science
[Data Mining with R Programming] 개요 본문
[Data Mining with R Programming] 개요
cinema4dr12 2014. 5. 11. 16:14'데이터 마이닝'이란 금을 채광(Gold Mining)하는 것처럼, 획득된 데이터로부터 의미있거나 가치있는 정보를 발견하는 일을 의미한다. 이러한 활동을 통해 기업들은 소비자들이 원하는 것이 무엇인지 발견하여 마켓팅으로 활용하거나 새로운 비즈니스의 기회를 모색할 수도 있다. 또한 각종 정부기관들은 재난사고를 미리 예측하여 사고를 예방하거나 여론을 파악하는데 활용할 수도 있다.
데이터 마이닝은 데이터로부터 가치를 발견한다는 점에서 단순 데이터 분석과는 차별된다. 단, 데이터 마이닝을 위해서는 획득할 수 있는 데이터의 범주가 다양할 수록 좋다. 왜냐하면 데이터의 범주가 다양할 수록 다양한 의미를 발견할 가능성이 높아지기 때문이다.
데이터에 대해 많은 의존을 하는 스포츠 중의 하나인 야구를 예로 들어보자. 우리나라 대표 포털사이트의 야구 문자 중계에는 투수의 피칭에 대해 볼/스트라이크/타격 등에 대한 정보 밖에 없다. 즉, 투수한 어떠한 공을 어떠한 속도로 어느 방향으로 던졌는지 알 수 없다. 그러나, MLB(Major League Baseball, 미국프로야구) 공식사이트(mlb.com)의 문자중계를 보면 투수가 던진 공의 구질(포심패스트볼/투심패스트볼/컷패스트볼/싱킹패스트볼/스플리터/슬라이더/커브/너클커브/슬러브/체인지업/서클체인지업/싱커/너클볼/스크루볼 등)/구속/투구방향이 모두 전달된다. 물론 국내야구도 일반인에게 전달되지 않는 세부 전문기록은 따로 저장할 것이다. 만약 누군가가 국내야구에 대해 투수 봉중근이 타자 이승엽에게 삼진아웃을 잡은 구질/구속/투구방향을 분석한다고 가정해 보자. 포털 사이트의 데이터로는 이러한 분석이 불가능하다. 만약 MLB였으면 이런 분석이 가능하다. 예를 하나 더 들어보자. 흔히 야구중계를 보다보면 득점권 타율(RISP, Run In Scoring Position - 주자가 2루 이상 있을 때 타자의 타율)에 대해 자주 언급한다. 그런데 만약 다음 상황에서 현재 타자의 타율을 알고 싶다면?
주자 1,3루 (주자 상황)
2 볼 2 스트라이크 상황 (볼 카운트)
투수의 투구수 60개 이상 (투구수)
전날 비가 왔음 (현장 날씨)
구장은 천연잔디 구장 (구장종류: 천연잔디/인조잔디/흙)
야간경기 (경기 시작시간)
타자의 원정경기 (홈/원정경기)
이러한 상황에 대한 데이터를 분석을 하려면 원론적이지만 풍부한 데이터가 획득되어 있어야 할 것이다. 왜냐하면, 데이터 1,2개로는 의미있는 분석이 불가능하기 때문이다. 이것은 마치 타자가 한 타석 들어서고 안타를 쳤다고 해서 그 타자의 타율이 10할이니 이 타자의 타격능력은 최고라고 말할 수 없는 것과 마찬가지이다. 그러나, 풍부한 데이터 획득 이전에 과연 이러한 분석을 위한 데이터 획득 범주가 마련되어 있느냐가 더욱 중요하다. 예를 들어 위에 열거한 조건 중 하나라도 기록에서 빠져있으면 위의 상황에서 데이터를 분석을 하는 것은 불가능하기 때문이다. 특히 주목할 점은, 현장 날씨인데 이것은 어느 야구 전문 데이터를 제공하는 사이트 조차도 야구 데이터 서비스 시 제공되지 않는 것이다. 왜냐하면 야구 경기 자체의 기록이 아닌 야구 외적인 데이터이기 때문이다. 이러한 것을 데이터 매쉬업(mesh-up)이라고 하며 유형이 다른 데이터를 결합하여 새로운 가치를 발견하는 것을 의미한다. 이렇듯 데이터 기록 시 범주를 많이 분리하여 기록한다면 보다 흥미로운 정보를 발견할 수 있을 것이다.
데이터 획득에 있어 어떤 종류의 데이터를 얻어야 할 지 결정하는 일도 쉬운 일은 아니다. 이것은 프로그램 등에 의해서가 아닌 데이터 과학자와 같은 사람들이 인사이트(insight)를 가지고 획득할 데이터의 유형을 분류하고 조직화해야 하는 일이기 때문이다. 즉, 기계가 감히 넘볼 수 없는 영역이기도 하다. 그러나 데이터 획득에 있어서는 분명 기계의 도움은 필요하다. 왜냐하면 사람이 일일이 체크하고 기록할 수는 없기 때문이다. 계속해서 야구의 예를 들어 보자. 최근 야구 중계를 보면 중계 기술이 정말 많이 발전해 있다는 것을 실감한다. Sports Vision이라는 회사가 Pitch F/X를 개발하였는데 MLB의 모든 구장이 이를 도입하고 있다. Pitch F/X가 하는 일은 투구를 추적하여 궤적이나 스트라이크 존을 통과했는지 등을 알아내는 것이다. FOX Sports의 야구 중계를 보신 분들은 아시겠지만 투수가 투구한 공이 중계화면의 가상의 스트라이크 존에 표시되는 것을 본 적이 있을 것이다 (ESPN도 마찬가지로 K-zone 서비스를 제공한다).
[그림 1.] FOX Sports의 FOX TRAX 및 ESPN의 K-ZONE.
이러한 기계를 도입하면 사람이 일일이 기록해야 하는 것들을 어느 정도 해소시켜 줄 것이다. 물론 이러한 기계들의 판단을 실제 경기의 판정에 적용한다면 심판들은 직업을 잃게 될 지도 모르며 경기자체도 재미없어질 수도 있다. 그러나, 분명 경기 내용을 분석하기 위한 것이라면 기록원의 수고를 덜어줄 수는 있을 것이다. 완전 자동 아웃 판정 시스템을 위해 모든 선수들의 글러브, 베이스, 공에 센서를 부착할 수는 없는 노릇이다.
결론적으로 이야기하자면 데이터 마이닝을 위해서는 시간이나 기타 자원 등이 허락하는 한 가급적 다양한 범주의 데이터를 확보하는 것이 유리하다. 이를 가장 잘 활용한 인물 중 한명이 이른바 "머니볼(money ball)" 이론의 창시자인 오클랜드 애슬레틱스의 빌리 빈 단장이 아닌가 싶다. 그이 머니볼 이론이 있기 전에는 대부분 선수 영입에 있어 감에 의존하거나 단순히 타율, 홈런수 등이 고려되었지만, 빌리 빈(Billy Beane) 단장은 출루율(OBP), 장타율(SLG), OPS(OBP+SLG) 등 야구에 있어 득점에 실질적 기여를 하는 득점 생산성 지표를 기준으로 선수를 평가하기 시작했다. 이로써 그는 저평가 되어 있던 선수들의 진정한 가치를 발견하였고 역으로 네임밸류로 인해 실질적 기여도 비해 과대평가 되어 있는 선수들은 과감히 트레이드 시켰다. 이를 통해 오크랜드는 "저비용 고효율" 팀이 될 수 있었다. 실제로 빌리 빈 단장 취임 후 오클랜드의 성적은 가파른 상승세를 이어나갔다. 이러한 면에서 빌리 빈 단장은 데이터 분석을 통해 남들이 보지 못한 의미있는 정보를 발견한 진정한 데이터 과학자 중의 한 명이 아닌가 생각해 본다. 이처럼 데이터 마이닝이라는 것은 쉽게 지나쳤던 데이터에서 조차 가치있는 정보를 발견해 내는 것이며, 결코 기계가 따라올 수 없는 인간의 인사이트 역량에 의존할 수 밖에 없다.
데이터 마이닝에 있어 또다른 중요한 점은, 가치를 해석하기 위한 지표를 만들어 내는 일이다. 예를 들어, 출루율(OBP)은 단순히 타자가 안타든 볼넷이든 몸에 맞는 볼이든 (에러에 의한 것은 제외) 1루 이상나가는 비율이다. 장타율은 전체 안타 중 2루타 이상의 비율이다. 이러한 기반 데이터를 이용하여 OPS(출루율과 장타율을 합친 것)라는 지표를 만들어 선수의 가치를 표현할 수 있다. 득점권 타율도 마찬가지이다. 안타를 아무리 많이 친다고 해도 득점권에서 타율이 안 좋으면 훌륭한 타자라고 할 수 없다. 득점권 타율은 일반적인 타율과 주자의 상황(주자 2루 이상)에 대한 데이터를 기반을 산출한다. 이를 기반으로 선수들의 가치를 평가하고 타순 조정에 반영하게 된다. 1번 타순에 출루율이 높은 타자, 2번 타순에 클러치 능력이 좋은 타자, 3번 타순에 장타력이 좋은 타자를 배치하는 것이 그 좋은 예이다. 세비어메트릭(Sabermetric)이라는 지표가 있다. 이는 역사가이자 통계학자인 빌 제임스(Bill James)가 고안한 것으로 선수를 평가하는 지표로 많이 활용되고 있다. 결국 이 지표들은 선수의 경제적 가치를 평가하고 연봉 협상의 자료로 활용되고 있을 것이다. 이러한 가치를 매치는 지표를 만들어 내는 일 또한 통계학자 및 데이터 과학자의 일이다. 다시 한 번 강조하지만 다양한 지표를 만들어 내려면 다양한 범주의 기반 데이터가 획득되어야 한다.
그러면 데이터 마이닝 프로세스에 대해 정리해 보자. 우선 다음 상황을 가정한다.
밖의 온도는 영하 2도이다.
밖의 날씨는 춥다.
외출 시 옷을 따뜻하게 입고 나가야 한다.
1번은 온도계를 통해 얻은 단순 팩트이다. 이것이 데이터이다. 2번은 1번의 데이터를 분석하여 얻은 결과이다. 3번은 2번의 데이터 분석을 통해 얻은 가치있는 정보이다. 즉, 데이터 마이닝의 결과라고 할 수 있다. 이러한 프로세스는 데이터를 이미 확보하고 있는 상태라고 할 수 있다.
그렇다면 데이터 마이닝의 역프로세스도 고려해 볼 만하다. 앞의 예는 데이터가 획득되고 그 데이터로부터 무엇을 발견할 것인가에 대한 문제였다. 역프로세스는 어떤 의미를 찾아내기 위해 어떠한 데이터를 확보할 지를 고민하는 것이다. 예를 들어, 향후 10년 병원의 서비스 품질에 대해 지속적인 데이터 확보를 해야한다고 하자. 가장 먼저 할 일은 병원의 서비스 품질을 평가할 지표들을 정의해야 한다. 그 다음 그 지표들을 산출하기 위해 필요한 데이터와 추후 다른 지표 산출에 도움이 될 가능성이 있는 데이터들을 정의한다. 데이터 획득 방법 및 획득 주기를 정의한다: 센서 등을 통한 기계를 통해 얻는 방법, SNS 및 웹 사이트 등을 통해 얻는 방법, 설문조사를 통한 방법 등 다양한 채널을 연구한다. 그리고 얼마나 자주 데이터를 얻을지도 정의한다.
본 시리즈(Data Mining with R Programming)에서는 R Programming을 통해 데이터 마이닝을 어떻게 할 수 있는지에 대해 연구할 것이다. 데이터 분석툴인 R은 단지 데이터 마이닝을 효율적으로 할 수 있는 도구에 불과하다. 이를 위해서는 Python, MATLAB, SAS, SPSS 등 여타 통계분석 툴을 활용할 수도 있다. 다시 한 번 강조하지만 데이터 마이닝은 기술이 아닌 데이터 과학자의 인사이트에 관한 것이다. 즉, 똑같은 데이터를 가지고 남들이 보지 못하는 가치를 데이터 과학자는 그 안에서 발견해야만 한다. 분명 이것은 프로그래밍 기술 또는 통계분석 툴을 활용하는 기술 그 자체는 아니다.
종종 빅 데이터가 데이터를 수집하고 처리하는 "기술"적인 관점에서만 치중되어 많이 아쉽지만, 그래도 분명한 건 이러한 기술의 뒷받침없이는 데이터 마이닝에 한계가 있다는 것이다. 데이터 마이닝이 반드시 빅 데이터에 대한 것은 아니지만 적어도 빅 데이터 기술이 주목받으면서 동시에 주목받는 것임에는 분명하다.
결론적으로 말하자면 데이터 마이닝은 데이터 획득 및 처리 기술을 바탕으로 데이터를 분석하고 분석된 데이터로부터 가치를 발견하는 이른 바 "기술 + 인문학"이 결합된 어렵지만 도전해 볼만한 분야라는 생각이 든다. 표현은 인문학이라고 했지만 이 안에는 철학, 언어학, 경제학, 경영학, 마켓팅 등 실로 다양한 인간 세상의 학문이 녹아 있다.
지금까지의 "지식"은 과거를 해석하는 능력이었다. 이제부터의 "지식"은 과거를 해석하는 능력 외에 미래를 예측하는 능력까지 포함될 것이다. 이를 위해서는 누군가는 쉽게 지나칠 법한 일상을 우리는 세심한 관찰을 통해 그 의미를 해석하고 가치를 발견하여 미래의 대처 방안까지도 생각할 수 있는 능력을 키워야만 한다.
본 시리즈는 다음과 같은 기본 지식을 가정한다:
통계학의 기초 지식 이해
실험계획법(DOE, Design of Experiments) 기초 지식 이해
R 프로그래밍의 기초 이해
다음 시간부터는 예제를 통해 데이터의 의미를 해석하는 시간을 갖도록 하겠다.
'Data Science > Data Mining with R Programming' 카테고리의 다른 글
[Data Mining with R Programming] 동문회 기부금액 분석 (0) | 2014.05.27 |
---|---|
[Data Mining with R Programming] 2006 Birth Data 분석 (0) | 2014.05.11 |
[Data Mining with R Programming] RStudio 소개 (0) | 2014.04.08 |
[Data Mining with R Programming] 데이터 입력과 데이터 불러오기 기본 (0) | 2014.02.27 |
[Data Mining with R Programming] 패키지와 데이터 기본 (1) | 2014.02.26 |