의사결정나무란? 입력값에 대한 예측값을 나무 형태로 나타내주는 모형으로, 분류와 추정을 수행하는 분석 방법이다.
의사결정나무 모형
- 일련의 독립변수들을 활용하여 분류를 하거나 예측을 수행하는 기법
- 최종 결과물이 '일련의 규칙들'로 표현됨
- Decision Trees 또는 Trees라고 불림
의사결정나무의 적용 분야
- 의사결정나무는 분류 또는 예측을 목적으로 하는 어떤 경우에도 사용 가능
- 분석의 정확도보다는 분석과정의 설명이 필요한 경우에 더 유용하게 사용
의사결정나무의 2가지 기본 아이디어
1. 반복적 분할(Recursive partitioning)
- 목표변수 측면에서 부모 노드보다 더 순수도(purity)가 높은 자식 노드들이 되도록 데이터를 반복적으로 분할
- 레코드들을 두 부분으로 반복해서 잘라 세분된 영역 내의 동질성이 최대가 되도록 함(2진분할)
- 계속 잘라나가다 보면 모든 학습용 데이터를 100%정확하게 분류해 낼 수 있을 만큼 세분화해 나갈 수 있음
2. 분류나무의 가지치기(Pruning the tree)
- 반복적 분할을 반복하다 보면 과적합화는 피할 수 없이 나타나게 됨
- 과적합화를 피하기 위해 불필요한 가지(정보 제공이 적은 가지)를 제거
- 가지치기를 통해 규칙들을 단순화하고 일반화시키는 작업이 이루어지게 됨
의사결정나무의 장단점
1. 장점
- 해석의 용이성 : 목표변수를 설명하기에 더 중요한 독립변수 파악이 쉬움
- 교호효과의 해석 : 두 개 이상의 변수가 결합하여 목표 변수에 어떻게 영향을 주는지 쉽게 알 수 있음
- 비모수적 모형 : 선형성이나 정규성 또는 등분산성 등의 가정을 필요로 하지 않는 비모수적인 방법
- 모델의 생성 속도가 빠름 : 계산 비용이 적음
2. 단점
- 비연속성 : 연속성 변수를 구간화 시켜서 비연속 적으로 처리하므로 분리 경계점 부근에서 예측 오류가 클 수 있음
- 선형성 또는 주 효과의 결여 : 각각의 변수의 독립적 영향력을 해석할 수 없음
- 비안정성(과적합)
- 훈력 데이터 집합에만 의존하여 새로운 자료의 예측에서 불안정할 가능성이 높음
- 테스트 데이터 집합에 의한 평가가 필요
- 씨드를 설정해주지 않으면 방금 전의 결과도 다시 보기 어려움(휘발성)
3. 과적합화의 해소 방법
- 가지치기 : 적당한 수준에서 나무의 성장을 중단시킴
- 랜덤 포레스트
의사결정나무의 선언
#df = dataframe을 선언했다고 가정
train_cols = df.columns[:-1]
X = df[train_cols]
y = df['target']
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2,stratify=y,random_state=10)
from sklearn.tree import DecisionTreeClassifier
#트리 모형 생성(기본옵션)
model1 = DecisionTreeClassifier(splitter='best', random_state=0)
model1.fit(X_train,y_train)
pred = model1.predict(X_test)
print('학습용:',model1.score(X_train,y_train))
print('검증용:',model1.score(X_test,y_test))
출처
- https://zephyrus1111.tistory.com/124
- https://ybeaning.tistory.com/15
- https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=2035icck&logNo=220788521237
'Study > Python' 카테고리의 다른 글
Python | K-NN vs. K-Means (0) | 2022.05.19 |
---|---|
Python | 의사결정나무의 파라미터 (0) | 2022.05.05 |
Python | 회귀분석 (0) | 2022.03.23 |
Python | 데이터 전처리 (0) | 2022.03.23 |
Python | Dacon Lv3 | CV & LGBM (0) | 2022.03.21 |