정보공간_1

[6기 강남 김현호] 대학생의 시점에서 바라본 데이터 마이닝 본문

IT 놀이터/Elite Member Tech & Talk

[6기 강남 김현호] 대학생의 시점에서 바라본 데이터 마이닝

알 수 없는 사용자 2014. 12. 4. 18:05


Data mining for Student...?



안녕하세요. 삼성 소프트웨어 멤버십 엘리트 6기 김현호 입니다.


학교와 삼성 소프트웨어 멤버십을 다니는 동안 데이터 마이닝에 대한 관심이 매우 많아서 공부와 여러가지 프로젝트를 진행해 보았습니다. 직장인이 아닌 대학생의 입장에서 진행해본 프로젝트를 경험 삼아 이쪽 분야의 공부나 프로젝트를 진행 하시는데 도움이 되고자 이 글을 적어 봅니다. 


우선 데이터 마이닝의 소개와 배경 지식을 알아보고 저의 주관적인 견해에서 접근해보는 프로젝트들을 알아보도록 하겠습니다.







 
 위키피디아에서는 데이터 마이닝을 데이터속에서 체계적이고 자동적인 규칙이나 패턴을 찾아내는것 이라고 정의하고 있습니다. 데이터 마이닝은 통계학에서 다양한 계량 기법들을 사용합니다. 또한 패턴 인식에서 인공지능에 이르기 까지 다양한 기술적인 방법론이 쓰이고 있습니다.






Data?



 먼저 데이터는 데이터 마이닝의 원료가 되는 정제되지 않은 상태의 수치를 말합니다. 인터넷이나 여러곳에서 얻어올 수 있는 가장 순수한 모든것들을 데이터라 칭할 수 있습니다.


 이 데이터를 어느정도 유의미하게 가공시키면 정보(Information)라고 불리는 2차 데이터로 만들 수 있습니다.


 정보를 분야별로 접목시키도록 또 한번 가공을 하게되면 지식(Knowledge)으로 실제로 이용할 수 있는 가치를 지니게 됩니다. 같은 정보라도 분야별로 다른 의미를 지닐 수 있습니다.


 지식들을 패턴화 시켜 원인과 결과 해결 방안을 제시 할 수 있는 지혜(Wisdom)의 단계가 있습니다.
간단히 예를 들어 "열이 나고 기침이 난다" 라는 원인이 있으면 이는 감기라는 결과를 알 수 있고, 이것의 해결책으로 병원에 가거나 약을 먹는다 라는 방안을 제시할 수 있듯이 이런 패턴화된 지식을 지혜라고 합니다.


 그림엔 명시하지 않았지만, 굳이 더 상위단계를 말하자면 '진리'의 단계가 있습니다. 이것은 개인적인 견해 이지만 불변하지 않는 지혜라고 얘기할 수 있겟네요. "사람은 언젠가 죽는다", "태양은 동쪽에서 뜬다" 등이 있습니다.


 데이터 마이닝은 이 데이터속에서 지식 혹은 지혜 단계의 패턴 찾아내는것이 목표라고 봐도 되겠습니다.






Data mining Ecosystem

그림 출처 : http://blogs.sas.com/content/subconsciousmusings/2014/08/22/looking-backwards-looking-forwards-sas-data-mining-and-machine-learning/


 
 데이터 마이닝은 통계학, 패턴 인식, 기계 학습, 인공 지능 등 
정말 다양하고 많은 분야에 걸쳐있습니다. 

 이 모든 분야가 쓰이는것은 아니지만, 데이터 마이닝을 하다보면 직접적으로 다룰 때가 많이 있습니다. 특히 통계학 분야는 거의 밑 바탕이 된다고 생각하셔도 될 만큼 많은 부분을 차지하고 있습니다. 

 배경부터 미리 배우고 시작하기엔 너무 재미가 없을테니 데이터 마이닝을 배워가면서 필요할 때마다 같이 배워가는것도 좋은 방법이라고 생각합니다.






Data mining Process


  
 데이터 마이닝의 처리 과정으로 크게 5가지로 나눌 수 있습니다. 

 우선 데이터를 수집하는 단계에서, 수집한 데이터를 저장-가공 하는 과정을 거쳐 다양한 알고리즘이나 기술들을 통해 분석하고 이를 표출하는 과정이 있습니다.

 컴퓨터공학적
 측면으로 분석 쪽이 직접적으로 코드를 작성해 데이터를 다루는 데이터 마이닝이라고 생각하실수 있지만 수집부터 시각화까지의 과정을 통틀어 데이터 마이닝이라고 저는 얘기하고 싶습니다.

 물론 각 분야를 전문적으로 공부해도 나쁘지 않겠죠?

 각 프로세스에 관한 기술적인 설명은 생략하도록 하겠습니다.






Data mining for Business


  
 데이터 마이닝을 비지니스적인 측면에서 바라보면 몇가지 요소가 있습니다.

 데이터 마이닝을 사용하려는 목적(Business), 사용할 데이터(Data), 방법(Model), 평가(Evaluation) 크게 4가지를 꼽을 수 있습니다.

 회사의 입장에서는 이 모든 과정에 시간, 자본, 노동력등이 필요하기 때문에 각 요소 마다 신중히 상의하고 결정해야 합니다. 하지만 저희 학생의 입장에서 이를 고려할 필요는 없겟죠? 그래서 주관적인 생각으로 필요한 요소를 꼽아보았습니다.






Data mining for Student?


  
 제가 생각하는 4가지 요소는 어떤(What) 데이터를 어떻게(How), 왜(Why) 분석할지 정하고, 분석이후에 무엇을 할지(Next?)를 꼽아보았습니다.


 개인적으로 프로젝트를 하면서 저는 더 배우고 싶었고 이 배운것을 단지 실제로 만들어 보고 싶었습니다. 이것만으로도 충분한 이유가 되지 않을까요? 이후에 자신이 만든 프로그램이나 프로젝트를 공모전에 내건 실제 솔루션을 만들던지 모든것은 개인의 자유입니다.


그래서 학생의 입장에서 가장 중요한 2가지는 당연하지만 무엇(What)을 어떻게(How) 처리 라고 생각합니다. 물론 목표가 확실하면 더 좋겟죠?







Project?

  
 실제적으로 프로젝트를 해보는데 여러가지 어려움이 있다고 생각합니다.

 1. 어떤 데이터를 분석할 수 있을까요?

 2. 데이터는 어디에서 얻나요?

 3. 어떻게 데이터를 분석하나요?


 이에 대해 조금이나라 프로젝트를 통해 얻은 경험을 통해 말씀드리도록 하겠습니다.






What?

  
 위에서 말씀드린것처럼 세상에 존재하는 모든것들이 데이터가 될 수 있습니다. 간단한 예를 들어서 인터넷에 떠도는 뉴스라던가, 자신이 가지고 있는 사진이나 문서들, 수많은 데이터들이 있습니다. 


 데이터 마이닝 관련 실제 프로젝트를 살펴 보면 

  • 수치 분석 - 수치 분석을 통해 수치간의 관계를 알아냄(거의 통계학 분야)

  • 오피니언 마이닝 / 텍스트 마이닝 - SNS등의 자연어(한글, 영어등)을 분석해 사람들의 의견을 분석하는 방법

  • 연관 분석 - 여러 개체들 사이간에 요소들을 분석하여 유사도나 연관도를 알아내는 방법

  • 추천 - 아마존 등에서 비슷한 유저에게 비슷한 항목의 제품을 추천

등등 다양한 프로젝트가 존재 합니다.






Where?

  
 어떤 데이터를 이용할것이냐에 따라 어디서 데이터를 얻을지도 고민하셔야 합니다.

 그래서 몇가지 데이터 수집을 통해 접근하는 방법을 소개해 드립니다.


 첫째로, Open API를 이용하는 방법이 있습니다.
Google, Facebook, Twitter등 다양한 사이트에서 API를 제공하고 있습니다.
국내서비스로 Naver, Daum등 다양한 포탈에서도 데이터를 제공하고 서울 열린 데이터 광장, 공공데이터포털에서는 실생활에서 얻을수 있는 정말 다양한 데이터 를 얻을 수 있습니다.


 둘째로, 크롤링을 통한 데이터 수집방법이 있습니다.
크롤링이란 자동화된 방법으로 웹을 탐색하여 API를 통하지 않고 데이터를 분석하여 휙득하는 방식으로 흔히 HTML등을 분석하여 웹상의 내용을 추출해 저장하는 방법입니다.

실제로 API를 제공하진 않지만 다양한 정보를 가진 사이트(KBO, 스포츠, 여행사이트 등)에서 유용한 정보를 가져올 수 있습니다. 또한 위키피디아 처럼 데이터 전부를 덤프 형식으로 제공하는 사이트 또한 있으니 찾아보시면 유용하게 사용할 수 있습니다. 하지만 크롤러를 잘못 만들 경우 사이트에 대해 공격으로 판단되어 차단 당할 수 있으므로 조심하셔야 합니다.


 마지막으로, 직접적인 서비스가 있습니다.
실제적으로 포털사이트나 기업들은 다양한 데이터를 가지고 있습니다. 이러한 데이터로의 접근은 어려우므로 직접적으로 서비스를 통해 데이터를 휙득하거나, 자신이 몸담고 있는 회사등을 통해 데이터를 얻을 수 있겟습니다.






How?

  
 컴퓨터관련 종사자로서 가장 핵심적인 부분일 수 있는 분석입니다.

 대표적인 데이터 마이닝의 분석 방법으로

  • 분류 분석(Classification)
  • 군집 분석(Clustering)
  • 연관 규칙(Association)
  • 빈도 분석(Frequency)
 등등 정말 다양한 분석 방법이 있습니다.

 직접 공부하고 만드셔서 적용시켜도 되지만, 이미 다양한 오픈소스와 툴에서 이를 제공하고 있습니다.
 대표적인 오픈소스로서 웨카(Weka)가 있습니다.

 툴 자체에서 파일 입력을 통해 분석할 수도 있고, Java등에서 api를 통해 직접적으로 사용하실수도 있습니다.


 다른 대표적인 데이터마이닝 툴로 R이 있습니다.

 R은 통계 게산과 그래픽을 위한 프로그래밍 언어이자 소프트웨어 환경을 지칭하는것으로, 이를 활용해 데이터마이닝을 할 수 있게 환경을 제공해 줍니다.

 수학관련 가장 유명한 툴인 Matlab또한 다양한 환경을 제공하니 이를 사용하셔도 좋습니다.

 그리고 각 언어마다 데이터 마이닝 관련 다양한 라이브러리를 지원하므로 자신에게 맞는 환경을 구성하시면 되겠습니다.






제가 개인적으로 해보았던 프로젝트들을 위의 정보로 표시하면 다음과 같습니다.

- UN 투표 데이터를 통한 국가 관계 분석 ( 크롤링 - 텍스트 마이닝 - 분류 분석 )

- SNS를 통해 얻은 데이터를 바탕으로한 평판 분석 ( Open API - 텍스트 마이닝 - 오피니언 마이닝)

- 위키피디아 덤프파일(사전데이터)를 이용한 객관적인 연관 관계 분석( 덤프 데이터 - 텍스트 마이닝 - 연관 관계 )

- 위치나 시간정보들을 군집화를 통해 지역의 특징을 추출하는 마이닝 ( 직접 서비스 - 수치 분석 - 군집화 )


개인적으로 오랫동안 이 분야에 몸담은것도 아니고, 전문가도 아니지만 다양한 프로젝트를 해보면서 얻은 경험을 통해 이 분야로 진출해보고 싶어하는 학생분들에게 도움이 되면 좋겠습니다. 감사합니다.