본문 바로가기

정보기술의 샘터........о♡/DB & 데이타마이닝

데이타마이닝

데이타마이닝이란 많은 데이터 가운데 숨겨져 있는 유용한 상관관계를 발견하여, 미래에 실행 가능한 정보를 추출해 내고 의사 결정에 이용하는 과정을 말한다.


데이터베이스로부터 과거에는 알지 못했지만 데이터 속에서 유도된 새로운 데이터 모델을 발견하여 미래에 실행 가능한 정보를 추출해 내고 의사 결정에 이용하는 과정을 말한다. 즉 데이터에 숨겨진 패턴과 관계를 찾아내어 광맥을 찾아내듯이 정보를 발견해 내는 것이다. 여기에서 정보 발견이란 데이터에 고급 통계 분석과 모델링 기법을 적용하여 유용한 패턴과 관계를 찾아내는 과정이다. 데이터베이스 마케팅의 핵심 기술이라고 할 수 있다.

 

예를 들어, 한 백화점에서 판매 데이터베이스의 데이터를 분석하여 금요일 오전에는 어떤 상품들이 잘 팔리는가, 그리고 팔리는 상품들간에는 어떤 상관관계가 있는가 등을 발견하고 이를 마케팅에 반영하는 것이다. 따라서 데이터마이닝의 필수 요소는 신뢰도가 높은 충분한 자료이다. 이것은 신뢰도 높은 충분한 자료가 정확한 예견을 가능하게 하기 때문이다. 그러나 너무 많은 자료는 오히려 데이터마이닝의 예견 능력을 떨어뜨릴 수 있으므로 최적의 결과를 산출할 수 있는 의미있는 자료의 확보가 필요하다.

 

한국에서 데이터마이닝은 아직은 초기 단계에 머물러 있다. 그러나 곧 일반화될 것으로 생각된다. 그 이유는 데이터마이닝을 하기 위한 최적의 시스템이 되는 데이터웨어하우스가 국내에 이미 많이 구축되어 있기 때문이다. 또 기업의 요구 사항이 주로 고객관리에 중점을 두는 데이터베이스 마케팅 쪽으로 가고 있기 때문에 데이터마이닝의 발달은 급속히 이루어질 수밖에 없다. 한편 기술적인 면에서 데이터마이닝을 잘 구현할 수 있는 소프트웨어가 나오면 데이터웨어하우스는 축소될 것이라는 의견도 있다

 

 

데이터 마이닝 알고리즘

Microsoft SQL Server "Yukon" Analysis Services를 포함한 모든 데이터 마이닝 도구는 다수의 알고리즘을 사용합니다. 물론 Analysis Services는 확장성이 있으므로 타사 ISV 또한 Analysis Services 데이터 마이닝 프레임워크에 원활하게 스냅인하는 알고리즘을 개발할 수 있습니다. 데이터와 그 목표에 따라 선호하게 되는 알고리즘이 다르며 한 알고리즘을 여러 가지 문제에 사용할 수 있습니다.

데이터 마이닝 도구는 여러 유형의 문제를 해결하는 데 적합합니다. 비즈니스 문제를 크게 분류해 보면 다음과 같습니다.

분석 문제 Microsoft 알고리즘
분류: "양호" 및 "불량"과 같이 미리 정의된 클래스에 사례를 할당
  • 신용 위험 분석
  • 움직임 분석
  • 고객 유지
  • Decision Trees
  • Na?e Bayes
  • Neural Nets
세분화(Segmentation): 유사한 사례를 분류하는 분류법 개발
  • 고객 프로필 분석
  • 메일링 캠페인
  • Clustering
  • Sequence Clustering
연관: 상호 관계에 대한 고급 카운팅
  • 장바구니 분석
  • 고급 데이터 조사
  • Decision Trees
  • Association Rules
시계열 예측: 미래 예측
  • 판매 예측
  • 주가 예측
  • Time Series
예측: 유사 사례(예: 기존 고객)의 가치를 기초로 새로운 사례(예: 새 고객)의 가치 예측
  • 보험률 예측
  • 고객 수입 예측
  • 온도 예측
  • 전체
편차 분석: 사례 또는 세그먼트가 서로 어떻게 다른지 확인
  • 신용 카드 사기 검색
  • 네트워크 주입 분석
  • 전체

SQL Server "Yukon"에는 가장 널리 사용되는 데이터 마이닝 알고리즘이 함께 제공됩니다.

  • Microsoft Decision Trees 에서부터 데이터 조사를 시작하는 경우가 많습니다. 이 알고리즘은 주로 분류 알고리즘으로, 이산 및 연속 특성의 예측 모델링에 적합합니다. 알고리즘이 이러한 모델을 만들므로 이 알고리즘은 데이터 집합의 개별 입력 특성이 예측된 특성의 결과에 어떻게 영향을 미치는지를 살펴봅니다. 즉, 목표는 예측된 특성의 결과를 예측할 수 있도록 만들어 주는 입력 특성과 그 상태의 연결을 찾아내는 것입니다.
  • Microsoft Nadve Bayes는 분류 및 예측에 사용할 수 있는 마이닝 모델을 신속히 만듭니다. 예측 가능한 특성의 개별 상태를 기초로 입력 특성이 가질 수 있는 개별 상태의 가능성을 계산합니다. 이 알고리즘은 이산(비연속적) 특성만 지원하며 모든 입력 특성은 예측 가능한 특성이며 독립적이라고 간주합니다. Nadve Bayes 알고리즘은 계산 속도가 아주 빠르므로 초기 데이터 조사 단계와 분류 및 예측 문제에 많이 선택되는 알고리즘입니다.
  • Microsoft Clustering 은 반복적 테크닉을 사용하여 데이터 집합의 레코드를 유사한 특성을 가진 클러스터로 그룹화합니다. 이 클러스터를 사용하면 데이터를 조사하여 관계를 찾을 수 있으며, 이 클러스터링 모델을 기초로 예측을 할 수도 있습니다.
  • Microsoft Association 은 priori 알고리즘을 기초로 하며 큰 데이터 집합 내에서 N-웨이 상관 관계를 찾는 효과적인 방법을 제공합니다. 연결 알고리즘은 데이터베이스 내에서 이 트랜잭션을 반복하면서 단일 사용자 트랜잭션에서 함께 나타날 가능성이 가장 큰 항목을 찾습니다. 연결된 항목은 함께 itemset로 그룹화되며 예측에 사용할 수 있는 규칙이 생성됩니다. Microsoft Association은 장바구니 분석에 가장 자주 사용됩니다. 다수의 "고유 카운팅"을 실행하는 관계형 또는 OLAP 분석은 연결 분석을 사용하기 가장 좋은 예입니다. Microsoft Association 알고리즘은 어떤 알고리즘 매개 변수를 선택했는지에 아주 민감하므로 작은 문제의 경우에는 Microsoft Decision Trees가 장바구니 분석에 사용하기 더 좋은 알고리즘일 수 있습니다..
  • Microsoft Sequence Clustering 은 데이터 조사 및 예측을 위해 순차 분석과 클러스터링을 결합한 것입니다. 순차 클러스터링 모델은 이벤트 발생 순서에 민감합니다. 한편, 클러스터링 알고리즘은 해당 레코드 클러스터링에 있는 다른 특성도 고려하므로 순차 및 비 순차 정보를 서로 연관시키는 모델을 개발할 수 있습니다. Sequence Clustering 알고리즘은 클릭스트림 분석을 실행하여 웹 사이트 트래픽 흐름을 분석하고 어떤 페이지가 특정 제품 판매와 가장 밀접하게 관련되어 있는지를 확인하며 다음에 어떤 페이지를 방문할지를 예측하는 데 사용됩니다.
  • Microsoft Time Series 는 주가와 같은 하나 이상의 연속 변수를 예측하는 데 사용할 수 있는 모델을 만듭니다. Time Series 알고리즘은 그 모델을 만드는 동안 성향 습득 데이터에서 파생된 경향만을 기초로 예측합니다. Microsoft Time Series는 AutoRegression Trees 테크닉을 사용하며 사용이 아주 간편하고 정확성 높은 모델을 생성합니다. 시계열에 사용되는 통계 분석에는 완벽한 규칙이 있습니다. 대부분의 다른 데이터 마이닝 제품은 ARMA, ARIMA, Box-Jenkins와 같은 많은 테크닉을 제공하며, 통계학자는 그 중에서 해당 모델에 가장 적합한 테크닉을 결정해야 합니다. Microsoft는 시계열 분석이 폭넓은 대상에게 접근할 수 있으며 정확성 높은 우수한 결과를 제공하도록 만들어 주는 방법을 선택했습니다.
  • Microsoft Neural Net 은 Decision Trees 및 Na?ve Bayes와 마찬가지로 주로 데이터 조사, 분류 및 예측에 사용됩니다. Neural Net은 가능한 데이터 관계를 모두 조사하는 인공 지능 테크닉으로, 일종의 정밀 테크닉이므로 세 가지 분류 알고리즘 중 가장 느립니다. Microsoft Neural Net은 베타 1에서는 사용할 수 없습니다.

마이닝 모델 만들기

모델 만들기, 성향 습득 및 테스트 프로세스는 응용 프로그램 만들기에서 가장 어려운 부분입니다. 사실, 응용 프로그램 개발은 단순 프로그래밍입니다. 데이터 마이닝 모델을 만들기 전에, 우선 데이터 웨어하우스에 데이터를 수집하여 정리해야 합니다. SQL Server "Yukon" 데이터 마이닝은 관계형 데이터베이스 또는 Analysis Services 큐브의 데이터에 액세스할 수 있습니다.

데이터 마이닝 모델을 개발하기에 가장 적합한 사람은 비즈니스와 기술, 이렇게 두 가지 모두에 숙련된 기량을 갖추고 있는 사람입니다. 이 모델의 개발자는 통계의 배경 정보로부터 이익을 얻고, 그 기업이 직면한 주요 비즈니스 문제점을 파악할 수 있고, 데이터 및 관계에 대한 깊은 호기심을 가지며, SQL Server "Yukon" 도구를 사용하여 데이터를 조작 및 저장할 수 있게 됩니다. 따라서 기존 데이터 웨어하우스 팀원이 이러한 기준을 가장 잘 충족시키는 사람들이라고 할 수 있겠습니다.

데이터 마이닝의 초보자라면 프로토타입 모델을 만드는 동시에 몇 주 간 데이터, 도구 및 대체 알고리즘에 대해 알아 보는 시간을 갖는 것이 좋습니다. 데이터베이스 관리 권한을 가지고 있는 개발 서버를 이용하십시오. 모델 만들기의 초기 단계는 예비 단계로, 이 단계에서는 데이터 구조를 변경하고 다양한 방법을 시도해 보고 싶을 것입니다. 그리고 먼저 작은 하위 데이터 집합부터 시작한 다음 그 모델의 디자인에 대한 보다 분명한 비전을 개발해 나가면서 데이터 집합을 확장하는 편이 좋습니다. 프로토타입 단계에서는 "제작 준비 완료"된 응용 프로그램 만들기에 대해 걱정하지 마십시오. DTS 또는 필요한 데이터 조작을 가장 편안하게 실행할 수 있는 도구를 사용하십시오. 그리고 필요한 변환에 대해 꼼꼼히 기록하되 지금 하는 모든 작업이 영구 응용 프로그램의 일부가 될 것이라고는 기대하지 마십시오.

비즈니스 문제점에 가장 적합한 모델을 선택하려면 모델 개발을 위한 데이터와 그 모델의 정확성을 테스트하는 데이터를 준비해야 합니다. 데이터 하위 집합을 만드는 방법에 대해 생각할 때는 선입견을 갖지 않도록 주의해야 합니다. 예를 들어 매 10번째 고객을 선택한다거나, 아니면 성의 첫 번째 문자나 다른 임의의 특성을 기초로 구별한다거나 하는 방법을 사용하십시오.

데이터 마이닝 모델 개발은 다음 사항을 선택하는 과정으로 구성됩니다.

  • 입력 데이터 집합
  • 입력 필드
  • 데이터 마이닝 알고리즘
  • 해당 알고리즘 계산 중 사용되는 매개 변수

비즈니스 문제점에 어떤 유형의 알고리즘을 사용해야 할지 모르는 경우에는 Decision Trees 또는 Na?ve Bayes를 사용해 데이터를 조사하는 작업부터 시작해야 합니다. 어떤 특성을 포함시켜야 할지 모르겠다면 모두 선택하십시오. 또한 복잡한 모델을 단순화하는 데 도움이 되는 보기를 제공해 주는 의존성 네트워크 보기를 사용하십시오.

프로토타입 개발 단계에서 관계형 모델을 만들어 최상의 알고리즘과 모델을 평가하고 싶을 것입니다. 마이닝 정확성 차트를 사용하면 어떤 모델의 예측이 가장 우수한지 평가할 수 있습니다. 그리고 관계형 모델을 만들어 동일한 데이터에 대해 별도의 분석을 실행하고 싶을 수도 있습니다. 이러한 모델은 개별적으로 정의된 모델보다는 관계형 모델로 보다 신속히 처리됩니다.

프로토타입을 만들어 테스트를 완료한 후에는 실제 데이터 마이닝 모델을 만들고 테스트할 수 있습니다. 데이터 마이닝 엔진에 데이터를 입력하기 전에 변환해야 한다면 그렇게 하는 프로덕션 준비 작업 프로세스를 개발해야 합니다. 어떤 경우에는 DTS 파이프라인에서 직접 마이닝 모델을 채우는 방법을 선택할 수도 있습니다. 작은 데이터 하위 집합에서 프로토타입을 개발한 경우에는 전체 성향 습득 데이터 집합에서 대체 모델을 재평가해야 합니다.

데이터 마이닝 응용 프로그램 만들기

BI "Workbench" 내에서 데이터 마이닝 모델을 개발하고 연구 조사하면 상당한 대가를 얻을 수 있습니다. 이 모델을 살펴 보면 데이터와 비즈니스 사이의 관계를 파악할 수 있으며 그 정보를 사용해 전략적 결정을 내릴 수 있기 때문입니다. 하지만 가장 큰 장점은 일상 업무에 영향을 미치는 데이터 마이닝 응용 프로그램에서 얻을 수 있습니다. 예를 들면, 고객에게 제품을 권장하거나 고객의 신용 위험 점수를 매기거나 재고 부족분 예측량을 기초로 주문을 하는 데이터 마이닝 응용 프로그램이 여기에 해당됩니다. 운영 데이터 마이닝 응용 프로그램을 개발하려면 SQL Server "Workbenches" 밖에서 Microsoft Visual Studio 또는 원하는 개발 환경을 사용하여 일부 코드를 작성해야 합니다.

대부분의 엔터프라이즈 고객은 고객이 사용하는 데이터 마이닝 응용 프로그램을 ASP 페이지와 같은 웹 기반 또는 Win32 응용 프로그램으로 실행합니다. 데이터 마이닝 모델이 만들어지면, 응용 프로그램이 웹 상거래 응용 프로그램에 입력하였거나 선택한 것을 기초로 고객에 대한 예측을 실행합니다. 아주 간단한 응용 프로그램도 가능하며, 예외적인 부분이라면 예측 쿼리를 발행한다는 것 뿐입니다.

데이터 마이닝 응용 프로그램 개발자가 그 마이닝 모델을 개발한 사람과 동일한 사람일 필요는 없습니다. 응용 프로그램 개발자는 주요 개발 기술은 갖추고 있어야 하지만 비즈니스 또는 통계 지식은 상대적으로 거의 필요하지 않습니다.

Microsoft의 데이터 마이닝 기술을 사용하면 다음 두 단계 실행으로 자동화된 데이터 마이닝 응용 프로그램을 아주 쉽게 만들 수 있습니다.

  • 데이터 마이닝 예측 쿼리를 개발합니다. 이 쿼리의 DMX 구문은 데이터 마이닝 사양에 대한 OLE DB에 정의됩니다. DMX를 직접 작성하지 말고 BI "Workbench" 편집기의 왼쪽 막대에 있는 마이닝 모델 예측 아이콘을 누릅니다. 그래픽으로 된 예측 쿼리 작성기 도구를 사용하면 예측 쿼리 개발에 도움이 됩니다.
  • 데이터 마이닝 응용 프로그램에 예측 쿼리를 사용합니다. 응용 프로그램이 단순히 DMX를 사용하여 예측을 실행한다면 프로젝트에 ADO, ADO.Net 또는 ADOMD.Net 클래스 참조(베타 1 이후 개발에는 ADOMD.Net이 권장됨)가 포함되어야 합니다. 보다 복잡한 응용 프로그램(예: 사용자에게 Decision Tree Viewer와 같은 마이닝 모델 뷰어 제시)을 만들려면 Microsoft.AnalysisServices와 Microsoft.AnalysisServices.Viewers 클래스를 포함시켜야 합니다.

독립 소프트웨어 공급업체 고객들은 데이터 마이닝 모델을 생성하는 응용 프로그램을 만들고 싶을 것입니다. 이런 응용 프로그램이 아마도 웹 분석과 같은 특정 도메인에 대한 BI "Workbench"의 마이닝 모델 개발을 대체할 것입니다. 그럴 경우 AMO(Analysis Management Objects)에 액세스할 수 있도록 개발 프로젝트에 Microsoft.DataWarehouse.Interfaces를 포함시켜야 합니다.

DMX 예제

DMX라고 하는 SQL과 유사한 단순한 프로그래밍 언어에서는 세 단계의 데이터 마이닝(데이터 마이닝 모델 만들기, 모델 성향 습득, 그 모델에서 동작 예측)을 이용할 수 있습니다. 다음은 구문 예제입니다. DMX 처리에 대한 전체 내용은 Books online을 참조하십시오.

데이터 마이닝 모델 만들기

CREATE MINING MODEL CreditRisk
(CustID      LONG KEY,
Gender      TEXT DISCRETE,
Income      LONG CONTINUOUS,
Profession   TEXT DISCRETE,
Risk      TEXT DISCRETE PREDICT)
USING Microsoft_Decision_Trees

데이터 마이닝 모델 성향 습득

INSERT INTO CreditRisk 
(CustId, Gender, Income, Profession, Risk)
SELECT CustomerID, Gender, Income, Profession, Risk
From Customers 

데이터 마이닝 모델에서 동작 예측

SELECT NewCustomers.CustomerID, CreditRisk.Risk, PredictProbability(CreditRisk)
FROM CreditRisk PREDICTION JOIN NewCustomers
on CreditRisk.Gender=NewCustomer.Gender 
AND CreditRisk.Income=NewCustomer.Income
AND CreditRisk.Profession=NewCustomer.Profession

 http://cafe.daum.net/dmmaster/9ypr/6