본문 바로가기
데이터분석자격증 ADsP/Part 3 데이터 분석 R

[ADsP] 데이터마이닝 - 분류분석 (로지스틱회귀, 의사결정나무) + R코드 실습

by doodlie 2024. 2. 18.

분류기법의 종류 

  • 로지스틱 회귀분석 (Logistic Regression) - 선형을 이용해 분류, 로지스틱 함수 적용
  • 의사결정나무 (Decision Tree) - 트리구조로 분류 또는 회귀, 해석이 쉬움
  • 앙상블(Ensemble) - 여러 모델을 결합하여 강력한 모델 생성 
  • K-NN (K-Nearest Neighbors) - 데이터 포인트의 가장 가까운 k개 이웃 데이터 포인트들 기반
  • SVM (Support Vector Machine) - 데이터를 고차원 공간으로 매핑하여 선형/빈선형 분류 수행
  • 인공신경망 모형 (ANN) - 여러 계층의 뉴런으로 구성되며, 숨겨진 계층을 통해 비선형 함수를 모델링, 딥러닝에서 적용
  • 베이지안분류 (Naive Bayesian) - 베이즈 이론 기반으로, 예측변수와 클래스간의 관계를 모델링

로지스틱 회귀분석 (Logistic Regression) 

  • 종속변수가 범주형인 경우 사용
  • 이항변수(0,1)로 되어 있는 이항분류 (e.g. 사망/생존, 실패/성공) 
  • 확률 (0~1) → odds (0~∞) → log odds (-∞~+∞) → sigmoid (연속형 0~1)
  • 일반 선형회귀 -> x값의 변화에 따른 y 값의 변화
  • 로지스틱 회귀 -> y가 성공일 확률에 대한 것을 선형 모델로 알아내는 것 
구분 일반 선형회귀 (Linear Regression) 로지스틱 회귀
종속변수 (DV) 연속형 0,1 (범주형) 
모형탐색방법 최소제곱법 (LSM) 최대우도법(MLE), 가중최소제곱법
모형검정 F-test, T-test 카이제곱 검정 (chi-squared test) 
공식

일반 선형 vs. 로지스틱 회귀

 

  • 승산 (odds):  성공률이 실패율의 몇배인지 나타내는 확률 (=성공률/실패율)
  • 승산비 (odds ratio) = odds A / odds B 
    • 승산비가 1인 경우 효과 x, 음수인 경우 확률 감소, 양수인 경우 확률 증가 

R코드로 알아보는 로지스틱 회귀

*사용함수: glm(종속변수 ~ 독리변수1+...+독립변수k, family=binomial, data=데이터셋명) 

data(iris)
a<-iris[iris$Species=="setosa"|iris$Species=="versicolor",] 
b<-glm(Species ~ Sepal.Length, data=a, family=binomial) #종속변수 species, 독립변수 sepal.length
summary(b)
coef(b)
exp(coef(b))['Sepal.Length']

 

프로그램 결과 분석_

Sepal.Length가 1 증가하면, Species(Y)가 1에서 2로 바뀔 때 Odds가 exp(5.14)=170배 증가한다.


의사결정나무 (Decision Tree) 

  • 의사결정 규칙을 트리 구조로 나타내 전체 자료를 몇개의 소집단으로 분류하거나 예측을 수행하는 방법
  • 종류:
    • 분류나무  (classification tree) - 종속변수가 (범주형)이산형 
    • 회귀나무 (regression tree) - 종속변수가 (수치형)연속형

  • 현재 분할은 이전 분할에 영향을 받음 (노드분리를 위한 질문 생성은 이전 노드 분리 질문의 영향을 받음)
  • 자식마디의 순수도가 증가하도록 분류나무를 형성해 나감 (불순도 감소) 

장점:

  • 분석과정이 직관적이고 이해하기 쉬움 (수학적 가정 불필요)
  • 가지치기 (Pruning)를 사용하여 비정상적인 잠음 데이터에 대해서도 민감하지 않게 할 수 있음 
  • 범주형 & 수치형 변수 모두 사용 가능 

단점: 

  • 분류모델은 분류 기준값의 경계선 부든의 자료값은 비연속성을 가지므로 오차가 큼 
  • 새로운 자료에 대해 과대적합(overfitting) 경향이 있음 
  • 각 예측변수의 효과를 파악하기 어려움 (로지스틱 회귀와는 달리) 

의사결정나무의 결정규칙

  • 분리 규칙 (splitting rule)- 데이터 나누기
    • 분리기준 (Splitting Criterion) - 새로운 가지를 만들 때 기준을 어떻게 정할까?
    • 정보 이득 (Information Gain)은 분할 후 불확실성의 감소를 나타냄
    • 지니지수, 엔트로피 지수는 분할 후 클래스의 불순도를 측정
    • 불확실성 down, 불순도 down, 순수도 up 하는 방향으로 분리 
  • 정지 규칙 (Stopping rule) - 트리 생성 중지하기 (분할 끝) 
    • 과대적합을 방지함 
    • e.g. tree의 최대 깊이가 일정 수준 이상되면 stop
    • e.g. 정보이득, 지니지수 임계값 사용으로 분할 후의 평가지표가 일정값 미만이 되면 stop
  •  가지치기 규칙(Pruning Rule)  - 트리를 단순화하기 (일반화 능력 향상) 
    • 불필요한 가지를 더 이상 분할하지 않는 것 
    • 과대적합을 방지 
    • 의사결정나무는 가지치기의 비용함수(Cost function)를 최소로 하는 분기를 찾아내도록 학습함 

불순도 측정 지표

1) 지니지수 (Gini index) - 값이 작을수록 순수도가 높음 (=분류 잘 됨)

  • 지니지수 = 1 - ((각 범주별 데이터 수 / 전체 데이터 수)의 제곱의 합)

  • e.g. 원본데이터 ●■■■인 경우, 지니지수 = 1-((1/4)^2 + (3/4)^2) = 0.375

*그림을 보고 지니 지수 구하는 방법 알아야함 

 

2) 엔트로피지수 (Entropy measure) - 가장 작은 값을 갖는 방법 선택 (= 순수도 높음)

  • 확률이 1/2인 경우, entropy = 1이며 불순도가 가장 높은 상태 
  • 엔트로피지수 = - (각범주별 확률값 x log2(확률값)의 합)

 

3) 카이제곱 통계량 유의 확률 (p-value)  - p-val이 가장 작은 값을 갖는 방법 선택

  • 동질성 검정을 사용하기 때문에 2개의 집단 간 분포가 동일한지 판단하는 것
  • 귀무가설(null hypothesis) - 집단 간 분포가 동일하다
  • p-val이 작을수록 집단 간 분포가 동일하지 않은 것 (= 이질성(diversity)이 높음 = 집단간 분리가 잘 됨) 

의사결정나무의 알고리즘

*하향식 접근 방법을 이용

알고리즘 종속변수 (분류나무) 종속변수 (회귀나무)
CART (Classification and Regression Tree) 지니지수 분산 감소량
C5.0 엔트로피 지수  
CHAID (Chi-squared Automatic Interaction Detection) 카이제곱 통계량 (또는 p-val) ANOVA F-통계량 (또는 p-val)

 

  • 작을수록 순수도 up: 지니지수, 엔트로피지수, 카이제곱통계량의 p-val, ANOVA F-통계량의 p-val
  • 클수록 순수도 up: 분산 감소량, 카이제곱 통계량, ANOVA F-통계량

R코드로 알아보는 의사결정나무 

*시험에서 이 R코드실습은 중요하지 않음

library(party)
idx <- sample(2, nrow(iris), replace = TRUE, prob = c(0.7, 0.3))
train.data <- iris[idx==1,] #70%는 학습용 데이터
test.data <- iris[idx==2,] #30%는 테스트데이터
iris.tree <- ctree(Species~., data=train.data)
plot(iris.tree, type = "simple") #모형생성