[R]3. 결정 트리 Classification #ctree #결정트리 #classification #지도학습 #모델성능평가 #entropy #IG
[연구 질문]
[개념]
결정 트리 학습법 Decision tree learning
: 분류 트리 - 목표 변수 즉, 종속 변수가 유한한 수의 값을 가지는 것
쉽게 이야기 하자면 생성된 모델에 의해 0 or 1 또는 0, 1, 2, 3, 4 등 정해진 범주 내에서 결과가 나오는 형태
회귀 트리 - 목표 변수가 연속하는 값으로 일반적이 실수를 가지는 것
쉽게 모델이 함수처럼 되어 있고 정해진 결과값 중 하나가 나오는 것이 아닌 독립변수에 의해 다양하게 결과가 나오는 형태
결정 트리 활용
결정 트리는 시각적이고 명시적으로 의사결정을 돕는다
마케팅분야에서도 아래와 같은 다양한 예측을 진행하며, 예측에 의한 추천, 프로모션 등 정교한 고객관계활동을 전개한다
고객 행동 예측
휴면/이탈 예측
등급변동 예측
신규고객 우수가망 예측
상품구매 예측
캠페인 반응 예측
모델이란? model
어떤 목적을 달성하기 위해 실세계를 단순하게 표현 한 것.
과거의 학습 데이터를 이용하여 모델을 만들며 이 모델을 통해 결과를 예측 함
결정 트리 장점
결과를 해석하고 이해하기 쉬움
자료를 가공할 필요가 거의 없음
수치 자료와 범주 자료 모두에 적용 가능
화이트박스 모델: 상황이 관측 가능하다면 조건에 대해 쉽게 이해 가능 <-> 인공 신경망은 블랙박스 설명이 어려움
안정적
대규모의 데이터 셋에서도 잘 동작함
결정 트리 한계점
데이터를 제대로 일반화하지 못할 경우 복잡한 결정 트리를 만들 수 있음
데이터의 특성에 따라 선택할 수 있어야 함
약간의 데이터 차이에 따라 트리의 모양이 많이 달라질 수 있음
[필요 패키지]
library(party)
library(caret)
[코드] *파란색은 스크립트, 검정색은 결과값입니다
data(iris)
#iris데이터를 7:3비율로 샘플링
ind<-sample(2,nrow(iris),replace=T,prob=c(0.7,0.3))
#샘플링한 결과 1인 경우를 trainData에 2인 경우에 testData에 넣음 (train:test=7:3)
trainData<-iris[ind==1,]
testData<-iris[ind==2,]
#공식을 만듬 종을 종속변수로, 그이외의 변수들을 독립변수로
myFormula<-Species~Sepal.Length+Sepal.Width+Petal.Length+Petal.Width
library(party)
#trainData에 의해 ctree 모델을 만듬
iris_ctree<-ctree(myFormula,data=trainData)
#학습이 잘 되었는지 확인, 모두 정답이 아닐 수 있다. 현재 모델이 모든 데이터를 설명하지는 못하기 때문
table(predict(iris_ctree),trainData$Species)
setosa versicolor virginica
setosa 40 0 0
versicolor 0 37 4
virginica 0 1 31
#모델 시각화
plot(iris_ctree)
#테스트 데이터로 바꾸어 예측
testPred<-predict(iris_ctree,newdata = testData)
# 테스트 데이터 정답 확인, 여기서 정확도accuracy와 민감도Sensitivity 특이도 등을 계산해볼 수 있다
# http://pubdata.tistory.com/19 참고
table(testPred, testData$Species)
testPred setosa versicolor virginica
setosa 10 0 0
versicolor 0 12 1
virginica 0 0 14
library(caret)
#confusionMatrix를 이용하면 모델에 대한 성능지표를 자동 계산하여 확인할 수 있다
confusionMatrix(predict(iris_ctree),trainData$Species)
Confusion Matrix and Statistics
Reference
Prediction setosa versicolor virginica
setosa 40 0 0
versicolor 0 37 4
virginica 0 1 31
Overall Statistics
Accuracy : 0.9558
95% CI : (0.8998, 0.9855)
No Information Rate : 0.354
P-Value [Acc > NIR] : < 2.2e-16
Kappa : 0.9335
Mcnemar's Test P-Value : NA
Statistics by Class:
Class: setosa Class: versicolor Class: virginica
Sensitivity 1.000 0.9737 0.8857
Specificity 1.000 0.9467 0.9872
Pos Pred Value 1.000 0.9024 0.9688
Neg Pred Value 1.000 0.9861 0.9506
Prevalence 0.354 0.3363 0.3097
Detection Rate 0.354 0.3274 0.2743
Detection Prevalence 0.354 0.3628 0.2832
Balanced Accuracy 1.000 0.9602 0.9364
안되는 부분이나 궁금한 점이 있으면 댓글 달아주세요 :)
'Data > R' 카테고리의 다른 글
[R 기초] 배열, 행렬, 요인, 데이터프레임, 리스트, 함수적용 (0) | 2016.03.06 |
---|---|
[R]4.소셜 네트워크 감정 분석 sentiment analysis (6) | 2016.02.19 |
[R]2. 데이터 클러스터링 k-means 알고리즘 (4) | 2016.02.10 |
[R]1. 문서의 유사도 tdm, cosine similarity (2) | 2016.02.09 |
[R 기초] Tip & 기본 함수 Command (0) | 2016.02.09 |