본문 바로가기
## 오래된 게시글 (미관리) ##/R

42. 데이터마이닝-분류 분석

by #Glacier 2018. 11. 22.
반응형

안녕하세요. 오늘은 데이터마이닝-분류 분석에 대해 알아보고자 합니다.

시작하지용~


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
(154)

 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


#여기까지 알아보겠습니당~

반응형