Kaggle 튜토리얼 (https://www.kaggle.com/code/dansbecker/your-first-machine-learning-model)을 하다가
모델중에 Decision Tree Regression 이라는 모델이 나왔다. 하여 그냥 사용하는것 보다는 어떤 모델인지 알아보고 사용하려고 한다.
ⓒVectorStock
의사결정나무란 여러 규칙을 순차적으로 적용하여 결론에 도달할 때까지 규칙의 질문들을 반복해 최종 의사결정을 하는 방법이다.
의사결정나무의 특징
분류(classification)와 회귀 분석(regression)에 모두 사용가능하다. 때문에 CART(Classification And Regression Tree)라고도 한다.
데이터 특성으로부터 추론된 결정규칙을 통해 값을 예측한다
if-then-else 결정 규칙을 통해 데이터를 학습힌다
트리의 깊이가 깊을 수록 복잡한 모델이다
결정트리의 장점
이해와 해석이 쉽다
나무 모양으로 되어있어 시각화가 용이하다
많은 데이터 전처리가 필요하지 않다
수치형과 범주형 데이터 모두를 다룰 수 있다
결정트리의 단점
과적합으로 정확도가 떨어질수있다
전반적인 의사 결정나무의 분석 절차
1. 의사결정나무 형성
분석목적을 정의하고, 분석 목적에 따라 적절한 규칙을 찾아서 나무를 성장시키는 과정이다 나무를 키우다가 정지큐칙을 만족함녀 성장을 중단시킨다
의사결정나무의 나무생성(의사결정)규칙
재귀적 분할 알고리즘
불순도 지수
분리 기준
정지 규칙
2. 가지치기
의사결정나무가 너무크거나(과적합) 너무 작을시(과소 적합)의 방지를 위해 불필요한 가지를 제거 하는 과정이다
3. 검증
검증데이터를 통하여 타당성을 평가하는
과정이다
4. 해석 및 예측
완성모델을 해석하고, 데이터를 예측하는 과정이다
출처: 텐서 플로우 블로그
분류 회긔나무의 작업과정
1. 전체데이터 분할
회귀나무의 경우 SSE불순도를 사용해서 SSE의 값이 가장 작아지는 지점을 찾아서 데이터를 분할 함.
잘 찾았다면 각 영역에서의 평균값과 반응변수값을 알아보고 SSE의 값을 다시구함
2. 학습 데이터로 모델구측 - 최적의 분할 기준과 분할 변수 선정
3. 생성된 잎노드에 예측값 할당
4. 모델의 성능평가 및 실제 적용
출처 단국대학교 유튜브
파이썬에서의 실제 사용법
Python에서 Decision Tree Regression을 사용하는 방법
명령어를 통해 최신 라이브러리를 다운로드 한 후에 사용하면 된다
pip install -U scikit-learn
# require library
import numpy as np
import pandas as pd
from sklearn.tree import DecisionTreeRegressor
#데이터정의
melbourne_file_path = '../input/melbourne-housing-snapshot/melb_data.csv'melbourne_data = pd.read_csv(melbourne_file_path)melbourne_data.columns
melbourne_data = melbourne_data.dropna(axis=0)
melbourne_features = ['Rooms', 'Bathroom', 'Landsize', 'Lattitude', 'Longtitude']
#사용할 데이터의 X,y 정의
y = melbourne_data.Price
X = melbourne_data[melbourne_features]
#모델 정의
melbourne_model = DecisionTreeRegressor(random_state=1)
melbourne_model.fit(X, y)
predictions = melbourne_model.predict(X)
이번에는 간단하게 의사결정나무회귀의 정의와 파이선에서의 사용법을 알아보았습니다
깊게 들어갈공부가 있으면 다음에 또 소개해보겠습니다
감사합니다.
Reference
https://bigdaheta.tistory.com/28
Comments