이 게시글은 고려대학교 강필성님의 Data Mining Process를 보고 생각과 배운 것을 덧붙여 작성되었습니다.
데이터 마이닝의 단계
- 데이터 마이닝 프로젝트의 목적을 정의하고 이해한다.
- 데이터 마이닝 문제를 만든다.
- 데이터를 얻고 검증하고 수정한다.
- 데이터를 탐색하고 개인화한다.
- 데이터 마이닝 모델을 구축한다.
- 결과를 평가하고 해석한다.
- 모델을 배포하고 모니터링한다.
프로젝트의 목적 정의 및 이해
왜 이 프로젝트를 시행해야 할까?
- 질적인 목표
- 고객 충성도 증대
- 마케팅 효율 증대
이 프로젝트가 성공하면 무엇을 이룰 수 있을까?
- 질적인 목표 달성
- 고객 수명(lifetime) 연장
- 판매 증가/원가 절감
데이터 마이닝 프로젝트를 시행할 산업/분야(Domain)는 무엇인가?
데이터 마이닝 문제 만들기
용도는 무엇인가?
- 특정한 고객이 우리의 제품에 얼마나 지출할까?
- 가까운 미래에 암 진단을 받을 사람은 누구일까?
무슨 데이터 마이닝 작업(방법론?)이 적절할까?
- 분류(Classification)
- 예측
- 관계법칙, …
데이터를 얻고 검증하고 수정하자.
- 데이터 출처 : 데이터 마트, 데이터 웨어하우스, RAW 데이터 크롤링 등.
- 필요하다면 입력 변수와 목표 변수를 정의하자.
: 인터넷 서비스 고객 분석
- 입력 : 나이, 성별, 거주지역, 검색 기록, 앱 사용 내역
- 목표 : 고객의 나이, 성별, 거주지역 예측.
데이터 수집/검증/수정하기
이상치
- 변수들이 가져서는 안 될 값, 엄청나게 희귀한 값 (ex: 몸무게 -50kg, 출생년도 2100년 …)
- 많은 이유로 데이터베이스에는 어느 정도의 이상치가 존재하기 마련이다.
어떻게 이상치를 다룰 것인가?
- 전체 레코드가 충분하다면 이상치가 존재하는 레코드를 무시한다.
- 전체 레코드가 불충분하다면 이상치를 평균, 중앙값, 어떤 확률밀도함수를 통한 측정치 등으로 대체한다.
결측 값
- 데이터베이스에서 특정한 값을 가져야 함에도 null 값을 가진 변수
- 운영상의 오류나 사람의 실수로 만들어진다.
어떻게 결측 값을 다룰 것인가?
- 전체 레코드가 충분하다면 결측 치가 존재하는 레코드를 무시한다.
- 전체 레코드가 불충분하다면 이상치를 평균, 중앙값, 어떤 확률밀도함수를 통한 측정치 등으로 대체한다.
변수의 종류 : 질적 변수
- 어떠한 특징을 가진 변수(성별 : M/F, 혈액형 A/B/O/AB)
- 산술적 접근을 적용할 수 없다.
명목적 변수
각 아이템이 어느 카테고리에 속해있는가로만 측정된다. 순서가 없으며, 성별, 종교, 거주지 등이 포함될 수 있다.
순서(Ordinal) 변수
각 상태들은 의미 있는 차례에 따라 정렬된다. 각 점과의 간격이 딱 떨어지지 않는다. 가족의 사회경제학적 상태, 성적, 올림픽 메달 등이 포함될 수 있다.
변수 다루기
변수의 종류 : 질적 변수
- 숫자로 대표시킨다.
- 산술적 운용을 가능케 한다.
어떻게?
- 셈, 이산 : 셀 수 있는 정수. 형제의 수, 보험의 수 등.
- 연속 : 셀 수 없는 실수. 키, 몸무게, 길이 등.
- 간격 : 차이만이 의미를 갖는다. 20도가 10도보다 2배 덥다는 것을 의미하지는 않는다.
- 비율 : 차이와 비율이 모두 의미를 갖는다. 20kg은 10kg보다 두 배 무겁다.
데이터 변환
- 양자화 : 연속 -> 순서
etc …
데이터 탐색 및 개인화
데이터 탐색 : 데이터 시각화
하나의 변수
히스토그램(카운트와 값(의 범위)으로 그리는 그래프) : 한 가지 변수의 분포를 알 수 있으며 이상치가 없는지 확인할 수 있다.
박스 플롯
여러 개의 변수
상관관계 표 : 어떤 변수가 (긍정적 - 부정적) 연관성이 높은지 표시한다. 무관한 변수를 삭제하거나 대푯값을 고를 수 있게 해준다.
산점도 행렬
차원 축소
차원의 저주
- 차원이 증가할 때 변수가 똑같은 의미를 갖기 위해서는 지수적으로 증가해야 한다.
- k-NN의 경우 차원이 증가하면 이웃들이 근접하지 않게되어 모델을 사용하기가 힘들어진다.
변수 선택
- 연관성있는 변수들의 묶음을 선택한다.
- 상관관계 분석, Kolmogorov-Smirnov test, …
변수 추출
- 원래 변수보다 좀 더 집중적인 정보를 포함하는 새 변수를 만든다.
- 주성분 분석 (Principal Component Analysis),…
EX :
- 원 변수 : 나이, 성별, 몸무게, 키 / 소득, 재산, 납부한 세금
- 구조화된 변수 :
Var 1: 나이+3xG(성별)+0.2x키-0.3x몸무게
Var 2: 소득 + 0.1x재산 + 2x납부한 세금
무작위 샘플링
- 균등 분포된 sampling rate(샘플링 주파수, 단위시간 당 샘플링 횟수) 중 집합을 선택한다.
- 분류(classification)에서 class ratio(급비?)는 보호된다.
계층적 샘플링
- 희귀한 사건이 선택될 확률이 더 높은 기록 집합을 선택
- 분류에서 class ratio는 수정된다.
Under-sampling : preserve minority, reduce majority
Over-sampling : preserve majority, reduce minority
데이터 분리
오버피팅
데이터 마이닝 알고리즘이 주어진 데이터 중 필요 없는 값(노이즈, 이상치 등..)까지 학습했을 때 일어난다.
데이터 분할
학습 데이터
모델을 형성하고 데이터 마이닝 알고리즘을 학습하기 위해 사용된다.
검증 데이터
모델에 가장 적절한 파라미터를 선택하기 위해 사용된다.
평가 데이터
가장 좋은 모델을 고를 때 사용된다.
데이터 정규화(Normalization)
다른 척도나 단위에 의해 생길 수 있는 문제를 제거한다.
z-score : (값의 평균)/(표준편차)
ex :
Orignal Data
A : 소득 1,000,000
B : 소득 2,000,000
C : 소득 3,000,000
Normalized Data
A : -1
B : 0
C : 1
모델 구축
분류(Classification)
- 로지스틱 회귀(Logistic regression)
- k-nearest neighbor
- Naive bayes
- 의사결정 나무
- 인공신경망
- 선형판별분석(Linear discriminant analysis)
회귀(Regression)
- 선형 회귀(Linear regression)
- k-nearest neighbor
- 의사결정 나무
- 인공신경망
관계 규칙
- A priori algorithm(It proceeds by identifying the frequent individual items in the database and extending them to larger and larger item sets as long as those item sets appear sufficiently often in the database. - Wikipedia)
군집화
- 계층적 군집화, K-Means 군집화
결과 평가 및 해석
분류 성능
혼동행렬
Naive Bayes 참고
단순 정확도 : (진양성+가양성)/(진양성+진음성+가양성+가음성)
Balanced correction rate(보정 비율?) : $\sqrt{\frac {A}{A+B}\times \frac{D}{C+D}}$
Lift charts, reciever operating characteristic (ROC) 곡선,…,
예측 성능
- y: 실제 목표 값, y’ 예측된 목표 값
-
Mean squared error, Root mean squared error
\(MSE = \frac{1}{n}\Sigma^n _{i=1} (y_i - y_i')^2\)
\(RMSE = \sqrt {\frac{1}{n}\Sigma^n _{i=1} (y_i - y_i')^2}\) -
Mean absolute error
\(MSE = \frac{1}{n}\Sigma^n _{i=1} |y\_i - y_i'|\) - Mean absolute percentage error
\(MAPE = \frac{1}{n}\Sigma^n _{i=1} |y_i - y_i'|/|y_i|\)
군집화
- 내부 분산(Within Variance) : 하나의 군집 안의 레코드에 따른 변수
- 사이 분산(Between variance) : 각 군집 사이의 분산
- 좋은 군집화 : 높은 사이분산과 낮은 내부 분산
관계 규칙
- Support
- Confidence
- Lift
모델 배포하고 모니터링하기
배포
- 데이터 마이닝 모델을 OS에 통합시킨다.
- 결정이나 행동을 위해 모델을 실제 데이터를 대상으로 실행시킨다. (Ex : “Park이 다음 달에 회사를 떠날 likelihood가 80%이니 Park에게 쿠폰을 주자.”)
모니터링
- 배포 이후 모델의 성능을 평가한다.
- 업데이트하고 필요하다면 재개발한다.