안녕하세요. 오늘은 데이터마이닝-분류 분석에 대해 알아보고자 합니다.
시작하지용~
1. 분류 분석
1) 분류 분석(Classfication) vs 예측 분석(Prediction)
-공통점 : 레코드의 특정 속성의 값을 미리 알아 맞히는 점
-차이점 :
(1) 분류 : 레코드(튜플)의 범주형 속성의 값을 알아 맞히는 것이다.
(2) 예측 : 레코드(튜플)의 연속형 속성의 값을 알아 맞히는 것이다.
-분류의 예
(1) 학생들의 국어, 영어, 수학 점수를 통해 내신 등급을 알아 맞히는 것.
(2) 카드회사에서 회원들의 가입 정보를 통해 1년 후 신용등급을 알아 맞히는 것
-예측의 예
(1) 학생들의 여러가지 정보를 입력하여 수능 점수를 알아 맞히는 것
(2) 카드회사의 회원들의 가입정보를 통해 연 매출액을 알아 맞히는 것
- 분류 분석(classification)
*데이터의 실체가 어떤 그룹에 속하는지 예측하는 데 사용되는 기법
*클러스터링과 유사하지만, 분류분석은 각 그룹이 정의되어 있다.
*교사학습(supervised learning)에 해당하는 예측기법이다.
-분류 모델링
*신용평가모형(우량, 불량), 사기방지모형(사기, 정상), 이탈모형(이탈, 유지), 고객세분화(VVIP, VIP, GOLD, SILVER, BRONZE)
-분류 기법
*회귀 분석, 로지스틱 회귀분석
*의사결정나무, CART(Classfication and Regression Tree), C5.0
*베이지안 분류
*인공신경망
*지지도벡터기계
*k 최근접 이웃
*규칙기반의 분류와 사례기반추론(case based reasoning)
2. 의사결정나무
1) 의사결정나무 (Decision Tree)
-의사결정나무는 분류함수를 의사결정 규칙으로 이뤄진 나무 모양으로 그리는 방법이다.
-나무구조는 연속적으로 발생하는 의사결정 문제를 시각화해 의사결정이 이워지는 시점과 성과를 한눈에 볼 수 있게 한다.
-계산결과가 의사결정나무에 직접 나타나 분석이 간편하다.
*뿌리마디(root node) : 시작되는 마디로 전체 자료를 포함
*자식마디(child node) : 하나의 마디로부터 분리되어 나간 2개 이상의 마디들
*부모마디(parent node) : 주어진 마디의 상위 마디
*끝마디(terminal node) : 자식마디가 없는 마디
*중간마디(internal node) : 부모마디와 자식마디가 모두 있는 마디
*가지(branch) : 뿌리마디로부터 끝마디까지 연결된 마디들
*깊이(depth) : 뿌리마디부터 끝마디까지의 중간마디들의 수
-의사결정나무는 주어진 입력값에 대하여 출력값을 예측하는 모형
*분류나무와 회귀나무모형이 있다.
*의사결정나무라는 이름은 그 결과를 나무형태의 그래프로 표현할 수 있다는 사실에 기인한다.
-최종모형의 예측력과 해석력 중요
*기대집단의 사람들이 가장 많은 반응을 보일 고객을 유치방안을 통해 예측하고자 하는 경우에는 예측력에 치중한다
*신용평가에서는 심사 결과 부적격 판정이 나온 경우 고객에게 부적격 이유를 설명해야 하므로 해석력에 치중한다.
2) 의사결정나무의 활용
-세분화 : 데이터를 비슷한 특성을 갖는 몇 개의 그룹으로 분할해 그룹별 특성을 발견
-분류 : 관측개체를 여러 예측변수들에 근거해 목표변수의 범주를 몇 개의 등급으로 분류하고자 하는 경우
-예측 : 자료에서 규칙을 찾아내고, 이를 이용해 미래의 사건을 예측하고자 하는 경우
-차원축소 및 변수선택 : 매우 많은 수의 예측변수 중에서 목표변수에 큰 영향을 미치는 변수들을 골라내고자 하는 경우
-교호작용효과의 파악 : 여러 개의 예측변수들을 결합해 목표변수에 작용하는 규칙을 파악하고자 하는 경우
-범주의 병합 또는 연속형 변수의 이산화 : 범주형 목표변수의 범주를 소수의 몇 개로 병합하거나 연속형 목표변수를 몇 개의 등급으로 이산화 하고자 하는 경우
3) 의사결정나무의 특징
-결과를 누구에게나 설명하기 용이하다.
-모형을 만드는 방법이 계산적으로 복잡하지 않다.
-대용량 데이터에서도 빠르게 만들 수 있다.
-비정상 잡음 데이터에 대해서도 민감함이 없이 분류할 수 있다.
-한 변수와 상관성이 높은 다른 불필요한 변수가 있어도 크게 영향을 받지 않는다.
*불필요한 변수가 많아지면 의사결정나무가 커지므로 가능한 불필요한 변수를 제거하고 작업하는 것이 좋다.
install.packages("party")
library(party)
install.packages("tree")
library(tree)
data(iris)
iris.tr<-tree(Species~., iris)
plot(iris.tr)
text(iris.tr)
#이렇게 보기쉽게 tree모형이 됩니다.
4) 의사결정나무의 분석 과정
-의사결정나무의 형성과정은 크게 성장(growing), 가지치기(pruning), 타당성 평가, 해석 및 예측으로 이루어진다.
*성장 단계 : 각 마디에서 적절한 최적의 분리규칙(splitting rule)을 찾아서 나무를 성장시키는 과정으로 적절한
정지규칙(stopping rule)을 만족하면 중단.
*가지치기 단계 : 오차를 크게 할 위험이 높거나 부적절한 추론규칙을 가지고 있는 가지 또는 불필요한 가지를 제거하는 단계
*타당성 평가 단계 : 이익도표(gain chart), 위험도표(risk chart), 혹은 시험자료를 이용하여 의사결정나무를 평가
*해석 및 예측 단계 : 구축된 나무모형을 해석하고, 예측모형을 설정한 후 예측에 적용
5) 나무의 성장
-훈련자료를 (xi, yi), i=1,2,3,...,n 으로 나타내자. 여기서 xi = (xi1, ... , xip)이다. 나무모형의 성장과정은 x들로 이루어진 입력 공간을 재귀적으로 분할하는 과정.
-분리 변수(split variable)가 연속형인 경우 :
-분리 변수가 범주형인 경우 : 전체범주가 {1,2,3,4}일 때, A=1,2,4와 = 3 으로 나눔.
- 최적 분할의 결정은 불순도 감소량을 가장 크게 하는 분할이다.
-각 단계에서 최적 분리기준에 의한 분할을 찾은 다음 각 분할에 대하여도 동일한 과정을 반복한다.
6) 나무의 가지치기
-너무 큰 나무모형은 자료를 과대적합하고 너무 작은 나무모형은 과소적합할 위험이 있다.
-나무의 크기를 모형의 복잡도로 볼 수 있으며, 최적의 나무 크기는 자료로부터 추정하게 된다. 일반적으로 사용되는 방법은 마디에 속하는 자료가 일정 수 (가령 5)
이하 일 때 분할을 정지하고 비용-복잡도 가지치기(cost complexity pruning)를 이용하여 성장시킨 나무를 가지치기하게 된다.
3. 불순도의 여러 가지 측도
1) 카이제곱 통계량, 지니지수, 엔트로피 지수
- 실제도수 (O)와 괄호안의 값인 기대도수 (E)
| Good | Bad | Total |
Left | 32 (56) | 48 (24) | 80 |
Right | 178 | 42 (66) | 220 |
Total | 210 | 90 | 300 |
기대도수(E) : 80*210/300 = 56
-카이제곱 통계량은 각 셀에 대한 ((기대도수-실제도수)의 제곱/기대도수)의 합
-지니지수는 2(P(Left에서 Good)P(Let에서 Bad)P(Left)+P(Right에서 Good)P(Right에서 Bad)P(Right)) ==이걸 쉽게 보면..
이렇게 보시면 더 쉽게 느껴집니당!
-엔트로피지수 = 엔트로피(Left)P(Left) + 엔트로피(Right)P(Right)에서
엔트로피(Left) = -P(Left에서 Good)log2 P(Left에서 Good)
-P(Left에서 Bad)/log2 P(Left에서 Bad)
#복잡해서 보기가 싫군요..ㅠㅠ..
4. 여러 가지 의사결정나무 알고리즘
1) CART(Classfication and Regression Tree)
- 앞에서 설명한 방식의 가장 많이 활용되는 의사결정나무 알고리즘으로 불순도의 측도로 출력(목적) 변수가 범주형일 경우 지니지수를 이용, 연속형인 경우 분산을
이용한 이진분리(Binary split)를 이용한다.
2) C4.5와 C5.0
- CART와는 다르게 각 마디에서 다지분리(multiple split)가 가능하며 범주형 입력변수에 대해서는 범주의 수만큼 분리가 일어난다.
- 불순도의 측도로는 엔트로피 지수를 사용한다.
3) CHAID(CHi-Squared Automatic Interaction Detection)
- 가지치기를 하지 않고 적당한 크기에서 나무모형의 성장을 중지하며 입력변수가 반드시 범주형 변수여야 한다.
- 불순도의 측도로는 카이제곱 통계량을 사용한다.
5. 성과분석과 스코어링
1) party패키지를 이용한 의사결정나무
-party패키지는 의사결정나무를 사용하기 편한 다양한 분류 패키지 중 하나이다.
-분실값을 잘 처리하지 못하는 문제를 갖고 있는 것이 단점이다.
-tree에 투입된 데이터가 표시 되지 않거나, predict가 실패하는 경우 문제가 발생할 수 있다.
-party패키지를 이용하여 iris data의 의사결정나무를 만들어 평가하는 과정
(1) iris data를 train/test로 분할
iris data의 30%로 train data를 70%로 생성.
idx<- sample(2, nrow(iris), replace=TRUE, prob=c(0.7,0.3))
train.data<-iris[idx==2,]
test.data<-iris[idx==1,]
#idx라는 변수에 1,2로 복원추출
(2) train.data를 이용하여 모형생성
iris.tree<-ctree(Species ~., data=train.data)
plot(iris.tree)
plot(iris.tree, type="simple")
(3) 예측된 데이터와 실제 데이터의 비교
table(predict(iris.tree), train.data$Species)
setosa versicolor virginica
setosa 16 0 0
versicolor 0 18 1
virginica 0 1 12
# versicolor인데 virginica로 오분류 1
# verginica인데 versicolor로 오분류 2
(4) test data를 적용하여 정확성 확인
test.pre<-predict(iris.tree, newdata=test.data)
table(test.pre, test.data$Species)
test.pre setosa versicolor virginica
setosa 34 0 0
versicolor 0 27 2
virginica 0 4 35
#여기까지 알아보겠습니당~
'## 오래된 게시글 (미관리) ## > R' 카테고리의 다른 글
44. 데이터마이닝-분류분석 3 (0) | 2018.11.22 |
---|---|
43. 데이터마이닝 - 분류분석 2 (0) | 2018.11.22 |
41. 데이터마이닝 개요 (0) | 2018.11.22 |
40. 다차원척도법 , 주성분분석 (4) | 2018.11.22 |
39. 시계열 분석 (0) | 2018.11.22 |