머신러닝 13. 지도학습: 분류모델-의사결정나무


    목차
    1. 데이터셋 로딩
      (1) 데이터셋 로딩
      (2) 데이터셋 간단조회: head() / str() / summary()
    2. 데이터탐색
      (1) 사전분류규칙 존재가능성 탐색: boxplot() / plot() / legend() / pairs()
      (2) 투입변수간 관련성 분석: caret::featurePlot() / car::scatterplotMatrix()
      (3) 분류규칙에 가장 영향을 많이 미치는 변수는 무엇인지를 탐색: FSelector::chi.squared() / cutoff.k()
    3. 데이터 전처리
      (1) 범주형 변수의 팩터변수화: factor()
      (2) 분류분석용 데이터 추출(train, test): sample() / addmargins()
    4. 의사결정나무1: party::ctree()
      (1) 훈련 데이터로 분류규칙 생성: ~ / paty::ctree()
      (2) 분류규칙 그래프 확인: plot()
      (3) 분류규칙 이용한 학습 데이터 분류분석: predict()
      (4) 학습 데이터 분류결과 정확성(Accuracy) 평가: sum() / diag() / sum(sum/diag)
      (5) 분류규칙 이용한 검증 데이터 분류분석: predict()
      (6) 검증 데이터 분류결과 정확성(Accuracy) 평가: sum() / diag() / sum(sum/diag)
      (7) 학습 데이터와 검증 데이터의 정확성 비교
      (8) 예측모델 성능평가
    5. 혼동표
      (1) 혼동표: caret::confusionMatrix()
      (2) 도출된 규칙을 활용한 고객 추출: subset()
      (3) 결과 프로파일링: psych::describe()
    6. 의사결정나무2: tree::tree()
      (1) 훈련 데이터로 분류규칙 생성
      (2) 의사결정나무의 프루닝 가능성 분석: cv.tree() / prune.misclass()
      (3) 분류규칙 이용학 학습/검증 데이터 분류분석 및 혼동표
    7. 의사결정나무3: rpart::rpart()
      (1) 분류분석 모델 관계식 정의
      (2) 의사결정나무의 가지치기(Prunning) 가능성 분석: printcp() / plotcp() / prune() / which.min()
      (3) 가지치기 이후 정제된 의사결정나무: plot() / text()
      (4) 분류규칙 이용한 학습 데이터 분류분석 및 정확성 평가
      (5) 분류규칙 이용한 훈련 데이터 분류분석 및 정확성 평가
      (6) 학습 데이터와 검증 데이터의 정확성 비교
      (7) 혼동표




—————코딩——————————————————————————————————


6. 비즈니스 시나리오
  • 카드사 이용고객 중 쿠폰이벤트를 진행했을 때 반응을 보이는 고객과 그렇지 않은 고객으로 나뉘고 있음

  • 어떤 특성을 가진 고객이 쿠폰이벤트에 반응을 보이는지?

  • 어떤 특성을 가진 고객이 쿠폰이벤트에 반응을 보이지 않는지?

  • 반응 유무를 결정하는 조건/요인/속성/변수/기준/피처(feature)와 이들이 가지는 임계치와 상대적인 중요도는?

#####. 분석 모델링 및 조작적 정의

  • usage(월평균 카드사용횟수) –> 수치데이터(횟수)

  • amount(1회평균 카드사용금액) –> 수치데이터(만원)

  • period(1회평균 온라인쇼핑몰 접속시간) –> 수치데이터(분)

  • variety(상품구매다양성) –> 수치데이터(부문)

  • response(쿠폰반응유형) –> 0:nr(반응안함, no-response)

                       --> 1:low(단순/저가구매)
    
                       --> 2:high(복합/고가구매)
    


1. 데이터셋 로딩


(1) 데이터셋 로딩



(2) 데이터셋 간단조회: head() / str() / summary()




2. 데이터탐색


(1) 사전분류규칙 존재가능성 탐색: boxplot() / plot() / legend() / pairs()



(2) 투입변수간 관련성 분석: caret::featurePlot() / car::scatterplotMatrix()



(3) 분류규칙에 가장 영향을 많이 미치는 변수는 무엇인지를 탐색: FSelector::chi.squared() / cutoff.k()




3. 데이터 전처리


(1) 범주형 변수의 팩터변수화: factor()



(2) 분류분석용 데이터 추출(train, test): sample() / addmargins()




4. 의사결정나무1: party::ctree()


(1) 훈련 데이터로 분류규칙 생성: ~ / paty::ctree()



(2) 분류규칙 그래프 확인: plot()



(3) 분류규칙 이용한 학습 데이터 분류분석: predict()



(4) 학습 데이터 분류결과 정확성(Accuracy) 평가: sum() / diag() / sum(sum/diag)



(5) 분류규칙 이용한 검증 데이터 분류분석: predict()



(6) 검증 데이터 분류결과 정확성(Accuracy) 평가: sum() / diag() / sum(sum/diag)



(7) 학습 데이터와 검증 데이터의 정확성 비교



(8) 예측모델 성능평가



5. 혼동표


(1) 혼동표: caret::confusionMatrix()



(2) 도출된 규칙을 활용한 고객 추출: subset()



(3) 결과 프로파일링: psych::describe()




6. 의사결정나무2: tree::tree()


(1) 훈련 데이터로 분류규칙 생성



(2) 의사결정나무의 프루닝 가능성 분석: cv.tree() / prune.misclass()



(3) 분류규칙 이용학 학습/검증 데이터 분류분석 및 혼동표




7. 의사결정나무3: rpart::rpart()


(1) 분류분석 모델 관계식 정의



(2) 의사결정나무의 가지치기(Prunning) 가능성 분석: printcp() / plotcp() / prune() / which.min()



(3) 가지치기 이후 정제된 의사결정나무: plot() / text()



(4) 분류규칙 이용한 학습 데이터 분류분석 및 정확성 평가



(5) 분류규칙 이용한 훈련 데이터 분류분석 및 정확성 평가



(6) 학습 데이터와 검증 데이터의 정확성 비교



(7) 혼동표



<참고 문헌="">


  1. 최점기 박사님 강의
comments powered by Disqus