1. 데이터 마이닝이란 무엇인가?

 1990년대 중반부터 데이터 마이닝이라는 분야가 생기기 시작했습니다. 아직까지도 데이터마이닝이란 분야는 많이 생소한 분야인데요. 데이터 마이닝이란 무엇일까요? 데이터 마이닝에 대한 몇 가지 정의를 모아봤습니다.

Extracting useful information from larget datasets ( Hand et al., 2001 )

Data mining is the process of exploration and analysis, by automatic or semi-automatic means, of large quantities of data in order to discover meaningful patterns and rules. ( Berry and Linoff, 1997, 2000 )

Data mining is the process of discovering meaningful new correlations, patterns and trends by sifting through large amounts of data stored in repositories, using pattern recognition technologies as well as statistical and mathematical techniques. ( Gartner Group, January 2004 )

 이외에도 데이터 마이닝에 대한 여러가지 정의들이 있습니다. 하지만 공통적인 점은 많은 데이터들의 집합에서 의미있는 정보를 추출해 낸다는 것입니다. 예를 들면, 대형마트의 데이터 집합에서 "기저귀 옆에 맥주를 진열 했더니 매출이 늘어났다."라는 지식을 뽑아 낼 수 있는 것입니다. 남편들이 기저귀를 사러 나와서 맥주도 같이 사는 패턴이 있었던 것입니다. 이렇듯 데이터 마이닝을 이용하면 재미있는 결과와 함께 비즈니스 업계에서느 매출의 증대도 노려 볼 수 있습니다.

Listening Post
Listening Post by Fenchurch! 저작자 표시비영리변경 금지

2. 데이터마이닝은 어디에 쓰이는가?

 데이터 마이닝은 많은 데이터에서 의미있는 정보를 추축해 내는 작업입니다. 의미있는 정보가 어디에 쓰이느냐에 따라서 데이터 마이닝이 어디에 쓰이는지도 결정되게 됩니다.

 대표적인 예가 비즈니스에서 매출 증대를 위한 패턴 분석이 있겠구요. 군사적으로도 여러가지 요소들이 폭탄의 폭파 정확도에 미치는 영향도 분석할 수가 있습니다. 보안에서는 어떤 패킷이 위험 요소를 담고 있는지 기존의 패킷 정보들로부터 예측 할 수 있는 시스템도 있습니다.

 하지만 아무래도 가장 집중을 받고 있는 사용분야는 비즈니스 일 것입니다. 예를 들면 고객들의 키와 매출과의 관계, 나이, 성별과 같은 요소와 매출과의 관계, 매장에 머무는 시간과 매출과의 관계 등등 여러 요인 간의 상호 관계를 처리하여 마케팅의 효율을 높여 줄 수 있습니다.

Attic studio: Enough Computing Power?
Attic studio: Enough Computing Power? by moriza 저작자 표시비영리

3. 데이터 마이닝의 유래.

 데이터 마이닝은 통계학에서부터 시작합니다. 주어진 데이터 집합을 분석해서 목표로 하는 정보를 얻어내는 통계학과 많이 닮은 모습입니다.
 
 하지만 통계학과 많이 다른 모습도 갖고 있습니다. 예를 들면, 일단 통계학을 이용하던 시기에는 얻을 수 있는 데이터 집합의 크기가 매우 작았습니다. 그래서 통계학적 원리와 이론을 적용 시킬 수 있는데에 한계가 많이 존재 했죠. 하지만 데이터 마이닝은 인공지능과 데이터 베이스라는 기계적인 요소를 이용해서 처리를 하기 때문에 기존의 방법보다 더 많은, 더 새로운 지식을 얻을 수 있습니다.

 또 한 기저가 되는 데이터 집합의 수도 웹 2.0 시대, 그리고 저렴한 컴퓨팅 비용으로 인해서 폭발적으로 늘어나고 있습니다. 이런 수 많은 데이터 집합을 이용해서 정보를 이끌어 낸다는 것이 기존의 통계학과 데이터 마이닝 분야가 다른 점입니다.

Information Superhighway
Information Superhighway by nickwheeleroz 저작자 표시비영리동일조건 변경허락

4. 데이터의 폭발적인 증가

 앞에서도 말했듯이 사용할 수 있는 데이터의 증가는 데이터 마이닝의 중요성을 증가시켰습니다. 그럼 이런 폭발적인 데이터의 증가는 어디에서 오는 것일까요?

 첫 번째로 웹의 발달입니다. 누구나 웹에 접속하여 데이터를 생산 할 수 있고, 볼 수 있게 되었습니다. 지금도 매 순간마다 전세계에서 의미가 있던 없던 엄청난 양의 데이터가 생산되고 있습니다. 여러분이 이 글을 보는 순간에도 여러분이 얼마나 접속해 있는지, 어떤 경로를 통해서 들어왔는지 여러분의 IP는 무엇인지 등등이 기록이 되고 있습니다.

 두 번째로 저장 비용의 저렴함입니다. 저장 용량당 비용은 점점 줄어들고 있습니다. 이제 하드디스크가 1TB를 넘는 제품까지 등장하고 있습니다. 불과 10년 전만해도 GB 급의 하드디스크도 정말 유용하고 잘 사용했었죠. 하지만 개인 사용자도 이렇게 데이터들을 하드디스크에 저장을 하고 있는 것을 보면 웹 서버에 저장되는 정보의 양은 정말 엄청 날 것이란 걸 알 수가 있습니다.

 세 번째로 저장되는 정보의 다양화입니다. 초창기에는 저장되는 정보가 별로 없었습니다. 예를 들면, 기상청에서 초창기에는 풍량과 풍향, 온도만 기록했다고 합시다. 하지만 시간이 지나면서 습도도 기록하기 시작했고, 강수량, 강우량도 추가로 기록하기 시작했다고 합시다. 그렇게 되면 생산되는 정보의 양도 늘어나게 됩니다. 이런 현상은 기상청 이외의 많은 부분에서도 볼 수가 있습니다. ( 슈퍼마켓의 고객 분석 시스템의 경우도 마찬가지이죠. )

 이런 데이터의 폭발적인 증가는 데이터 마이닝의 수요를 늘리게 되었고, 데이터 마이닝이라는 분야가 발전하게끔 해주는 원동력이 되었습니다.

Business Graph
Business Graph by nDevilTV 저작자 표시

5. 데이터 마이닝의 방법은??

 데이터 마이닝이란 분야는 정확한 정답이라기 보다는 통계학적 접근이기 때문에 많은 방법론적인 접근이 있습니다. 같은 데이터 집합을 두고 분석하는 방법이 여러가지이기 때문에 분석 결과도 여러가지이죠.

 각 방법들에는 장, 단점이 존재하기 때문에 여러가지 방법이 존재 할 수 있는 것입니다. 데이터 마이닝을 배우는 것도 이런 여러가지 방법들을 잘 이해하고 어떤 프로젝트에 어떤 방법을 사용하는 것이 더 적절한지를 아는 것이 데이터 마이닝을 배우는 목적이라고 할 수 있겠습니다.

Reading Is Fundamental
Reading Is Fundamental by Troy Holden 저작자 표시비영리동일조건 변경허락
 
 앞으로 한학기 동안 데이터마이닝이라는 수업을 듣게 되었는데, 예습이나 수업, 복습을 하면서 기록 해 두었던 것을 포스팅 하겠습니다. 데이터 마이닝을 배우고 싶은 분이나 참고 하실 분들에게 도움이 되었으면 좋겠습니다.






 데이터 베이스를 운영하다보면 테이블의 구조를 변형해야 할 때가 있습니다. 가령, 손님의 정보 요구사항에 나이가 추가 되었다면 customer 테이블의 어트리뷰트( 열 )에 나이를 표시하는 항목이 추가되어야 할 것입니다. 이럴 경우 지금까지 배운 지식으로는 전체 테이블을 지우고 다시 만드는 수 밖에 없습니다. 하지만 테이블 안에 많은 양의 정보가 들어있을 경우 백업하기도 힘들고, 속도도 느리기 때문에 비효율적입니다.


1. 어트리뷰트 추가

 이럴 경우 간단히 테이블의 구조를 바꿀 수 있는 sql 구문이 있습니다. 바로 alter 구문인데요. 테이블에 어트리뷰트를 삽입하는 sql 문은 다음과 같습니다.


 table_name 에는 구조를 바꿀 테이블의 이름을 쓰고 A 에는 어트리뷰트 이름을 씁니다. D 는 추가 할 어트리뷰트의 도메인을 넣습니다. 예를 들어 customer 테이블에 age 라는 어트리뷰트를 추가하는 sql 문은 다음과 같습니다.

alter table customer add age int;

 위 sql 문이 적용되기 이전의 테이블이 다음과 같은 모습이었다고 가정하겠습니다.



sql문을 적용하고 난다음 테이블의 모습은 다음과 같습니다.




보시다 시피 age라는 어트리뷰트가 추가 된 것을 볼 수 있습니다. 하지만 따로 값을 지정해 주지 않았기 때문에 Mysql 의 경우에는 NULL 값을 채워 넣습니다.


2. 어트리뷰트 제거

 이제 테이블에서 어트리뷰트를 제거하는 sql문을 배워 보도록 하겠습니다. 어트리뷰트를 제거하는 sql구문은 다음과 같은 형태를 갖습니다.


 table_name 부분에는 어트리뷰트를 삭제하고자 하는 테이블의 이름을 쓰고 A에는 제거 할 어트리뷰트의 이름을 써 넣습니다. 그럼 예를 들어 보도록 하겠습니다. customer 테이블에 추가한 age 라는 어트리뷰트를 다시 제거해 보도록 하겠습니다.

alter table customer drop age;

위 sql 문이 적용되기 전의 테이블의 상태는 다음과 같습니다.



이제 sql 문을 적용한 모습을 보겠습니다.




 삭제 되는 어트리뷰트가 지워진 모습입니다. 모두 NULL 일 필요는 없고 저장되었던 정보는 모두 삭제가 됩니다. 이제 테이블의 구조도 바꿀 수 있게 되었습니다.



요즘 집에 다들 MS Office 하나씩은 가지고 계실 겁니다. MS Office의 내용물 중에 잘 사용하지 않는 것들 중에 하나가 바로 Access입니다. 데이터의 관리는 대부분 Excel로 하기 때문에 잘 사용되지 않는 서비스 중에 하나죠. 하지만 컴퓨터 공학도의 경우 SQL이라고 하는 데이터베이스 쿼리 언어를 실습하기 위해서 사용해 보신적이 있을 겁니다.

 저도 겨울방학때 데이터베이스를 다시 실습하면서 공부하려고 DBMS를 찾고 있는데, 다른 DBMS들은 윈도우에 설치하기 힘들거나 라이센스를 얻기가 귀찮거나 힘들었습니다. 결국 가장 접근하기 쉬운 Access의 DBMS를 사용하기로 했습니다. ( Access가 사용하고 있는 DBMS 엔진은 Jet라고 하는 엔진이더군요. ) 구하기도 쉽고 간단한 SQL 실습을 하기에 가볍고 좋다고 생각을 합니다.

 참고로 저는 Access 2007 버젼을 사용하고 있습니다. 다른 버전과는 약간 다를 수도 있으므로 유념하시기 바랍니다.



 먼저 Access를 실행하면 위와 같은 화면이 뜰 겁니다. 새 데이터베이스를 선택하고 오른쪽의 만들기(C) 버튼을 누릅니다. ( 참고로 밑의 주요 온라인 서식 파일의 경우는 Access를 이용해서 자주 사용하는 서식을 빨리 만들 수 있게 합니다. )




 그러면 위와 같이 기본적인 DB가 생성이 됩니다. 물론 스프레트 시트처럼 "새 필드 추가"를 이용해서 DB 테이블을 설계해도 좋지만 일단 SQL 실습을 위해서 Access를 사용한 것이므로 SQL 편집을 해보도록 하겠습니다.




 상단의 만들기 탭을 선택한뒤 "쿼리 디자인"을 선택합니다. 그럼 다음과 같은 화면이 뜨게 됩니다.




"테이블 표시"라는 창은 가볍게 닫아 주고, Query1 이라는 탭에서 우클릭을 한 뒤 "SQL보기(Q)"를 선택합니다.




 이제 SQL문을 써 넣을 텍스트 에디터 창이 나오게 됩니다. 여기에 여러분이 원하는 SQL문을 써 넣고 실행을 하면 해당 SQL문의 결과가 DB에 반영이 될 것입니다. 예를 들어서 하나만 실행해 보도록 하겠습니다. 다음과 같은 SQL문을 써 넣도록 하겠습니다.


create table customer
( customer_name    char(20),
  customer_street     char(30),
  customer_city        char(30),
  primary key (customer_name)
);




 실행할 SQL문을 텍스트 편집 영역에 써 넣고 툴바의 "실행" 버튼을 누릅니다. 그러면 여러분이 써 넣은 SQL문이 실행되어 결과가 DB에 반영 될 것입니다.




customer라는 테이블을 만드는 SQL문을 써 넣고 실행을 한 결과 customer 테이블이 생성되었습니다.

물론 Access를 이용해서 DB 실습을 하는데에는 분명 한계가 존재합니다. 또 한 상용 DBMS의 사용법과는 다소 차이가 있기 때문에 실무에 바로 적용하는 데에도 무리가 따릅니다. 하지만 SQL을 처음 사용해 보시는 분들과 DB를 처음 배우고 싶으신 분, 간단한 SQL문의 테스트를 원하시는 분들에게는 가볍게 쓰실 수 있는 DBMS가 Access를 이용한 방법이 아닌가 생각 됩니다.


-- 요약 --
Access의 사용법..




 컴퓨터를 접하는 우리는 항상 데이터를 다루고 있습니다. 하지만 데이터란 무엇일까요? 세상에서 가장 어려운 질문이 정의를 물어보는 것이 아닌가합니다. 막연히 데이터라는 말을 사용하고 있지만 정작 데이터의 정확한 정의는 알고 있지 않습니다. ( 물론 컴퓨터 공학 전공이신 분들은 명쾌한 정의를 다 알고 계실 겁니다. )

Information Superhighway
Information Superhighway by nickwheeleroz 저작자 표시비영리동일조건 변경허락

 데이터는
The term data means groups of information that represent the qualitative or quantitative attributes of a variable or set of variables.
라고 위키피디아는 정의합니다. 한글로 쉽게 풀어 쓰면, 데이터는 사실을 나타내는 수치라고 할 수 있습니다. 예를 들면, 오늘의 날씨 정보에서 오늘 아침 기온, 습도, 날씨 등등 각각의 수치들은 데이터가 됩니다.

Actual is not normal (a tribute to Edward Tufte) by kevindooley 저작자 표시

 하지만 데이터 자체로는 큰 의미가 없습니다. 컴퓨터 공학에서는 데이터를 가공( 처리 : Processing )하여 정보를 만듭니다. 예를 들면 날씨를 나타내는 데이터들 ( 기온, 습도, 풍속, 위성사진 등 )은 기상대나 백엽상 등에서 측정 장비로 관측됩니다. 이 데이터는 그저 사실을 나타 낼 뿐이죠. 이제 이 데이터들을 처리하여 정보를 만듭니다. 기상대에서 측정 된 각각의 데이터들을 바탕으로 내일의 날씨를 예보하게 되죠.
 
Extinct Poster
Extinct Poster by Network Osaka 저작자 표시비영리변경 금지

 데이터를 처리하여 나온 결과를 "정보"라고 하는데, 정보란 간략하게 정의하자면 "사용자의 의사결정에 도움이 될 만한 잘 정리 된 데이터들." 이라고 할 수 있습니다. 현실 세계에서 보자면 구름 사진( 데이터 )이 지구과학 교과서에 사용되어 교육용으로 이용( 정보 ) 될 수도 있고, 사진 작품전에 출품( 정보 ) 될 수도 있습니다.

 컴퓨터는 이런 데이터를 입력 받아서 정보로 만들어 주는 역할을 하는 기계라고 할 수 있습니다.


-- 요약 --
 데이터는 그냥 사실을 나타내는 수치일 뿐이고, 정보는 사용자의 의사결정에 도움을 주는 가공 된 데이터들의 집합이다.


+ Recent posts