[서울기온예측][XGboost 1] 의사결정나무, XGboost란?

2025. 2. 20. 10:28·프로젝트/기계학습 기반 서울 기온 예측

- 개요

지금까지 선형회귀모델을 이용해서 서울 기온을 예측했습니다.

선형회귀모델도 기계학습이긴 합니다만 너무 단순하고 데이터 간 비선형적인 관계를 학습할 수 없습니다.

비선형적인 관계를 학습하는 기계학습 모델로 의사결정나무(decision tree) 기반 모델이 있습니다.

결정나무 모델이 사용한 방법을 개량하면 XGboost(Extreme Gradient Boosting)가 되는 것인데

제가 이해한 선에서 간단히 설명해보겠습니다.

 

- 의사결정나무

의사결정나무 모델에서는 특정 조건이 True, False인지 따져서 분류(분류모델)를 하거나 숫자(회귀모델)를 예측합니다.

붓꽃 분류 의사결정나무 모델 구조를 보면 이해가 쉽습니다.

붓꽃 데이터셋에는 세 종류의 붓꽃(세토사, 버시컬러, 버지니카)의 꽃받침 길이, 꽃받침 너비, 꽃잎 길이, 꽃잎 너비의 4가지 데이터가 있습니다.

의사결정나무 모델은 꽃받침 길이, 꽃받침 너비, 꽃잎 길이, 꽃잎 너비 자료로 특정 조건문을 만들어 어떤 붓꽃인지 결정합니다.

# ChatGPT가 작성함
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
from sklearn import tree
import matplotlib.pyplot as plt

# 데이터 로드 (Iris 데이터셋 사용)
iris = load_iris()
X, y = iris.data, iris.target

# 결정 트리 모델 학습
clf = DecisionTreeClassifier(max_depth=2, random_state=42)
clf.fit(X, y)

# 트리 그래프 시각화
plt.figure(figsize=(12, 10))
tree.plot_tree(clf, feature_names=iris.feature_names, class_names=iris.target_names, filled=True)
plt.show()

의사결정나무는 꽃잎 길이, 꽃잎 너비 조건에 따라 3종류의 붓꽃을 분류합니다.

max_depth를 2로 설정했기 때문에 분기가 좀 적습니다만 결정나무를 깊게 만들면 참/거짓 화살표의 모습이 마치 가지가 뻗는 것 같아 나무처럼 보이게 됩니다.

 

- XGboost

XGboost를 이해하기 전에 랜덤포레스트(random forest)부터 간단하게 알아봅시다.

나무가 여럿 모이면 숲이 되듯 의사결정나무를 여러 개 만들기 때문에(bagging) 포레스트, 여러 개의 의사결정 나무를 만들 때 쓰이는 조건을 랜덤으로 추출하기에 랜덤이라 랜덤포레스트라 부릅니다.

핵심은 의사결정나무를 여러개 쓴다는 것입니다.

XGboost도 랜덤포레스트처럼 여러 개의 의사결정나무를 쓰지만 그 방식이 다릅니다.

랜덤포레스트의 의사결정나무들은 서로 영향을 주지 않아 독립적입니다.

하지만 XGboost에서는 첫 의사결정나무 모델을 만들면 그 의사결정나무의 오차를 보완하는 방식으로 학습(Gradient boosting)합니다.

 

- 결론 및 다음 방향

의사결정나무 여러 개를 독립적으로 학습하면 bagging

첫 번째 의사결정나무의 오차를 줄이기 위해 다른 의사결정나무를 만드는 방식은 boosting

XGboost와 선형회귀모델 간 성능 비교 해보기

'프로젝트 > 기계학습 기반 서울 기온 예측' 카테고리의 다른 글

[서울기온예측][pytorch][DNN 1] DNN이란? 학습하는 원리  (0) 2025.02.28
[서울기온예측][XGboost 2] 서울 ASOS 자료 기반 기온 예측  (0) 2025.02.25
[서울기온예측][다중선형회귀모델 3] 예측 변수와 입력 변수 간 선형상관계수 확인  (0) 2025.02.17
[서울기온예측][다중선형회귀모델 2] 코드 함수화, 서울 ASOS 자료의 계절성 제거  (0) 2025.02.11
[서울기온예측][다중선형회귀모델 1] 서울 ASOS 자료만 사용한 기온 예측  (0) 2025.02.10
'프로젝트/기계학습 기반 서울 기온 예측' 카테고리의 다른 글
  • [서울기온예측][pytorch][DNN 1] DNN이란? 학습하는 원리
  • [서울기온예측][XGboost 2] 서울 ASOS 자료 기반 기온 예측
  • [서울기온예측][다중선형회귀모델 3] 예측 변수와 입력 변수 간 선형상관계수 확인
  • [서울기온예측][다중선형회귀모델 2] 코드 함수화, 서울 ASOS 자료의 계절성 제거
레까
레까
  • 레까
    데이터 조아
    레까
  • 전체
    오늘
    어제
    • 전체 (90) N
      • 일기장 (0)
      • 대기과학 (45)
        • 프로그래밍 (42)
        • 개념 (2)
        • 칼럼 (1)
      • 여러가지 데이터 (5)
        • 프로그래밍 & 분석 (5)
      • 프로그래밍 (16)
        • 파이썬 (8)
        • 시각화 (7)
        • 유용 (1)
      • 프로젝트 (20) N
        • 기계학습 기반 서울 기온 예측 (9)
        • 사과게임 매크로 만들기 (4)
        • 버스 한 번으로 특정 지역에 갈 수 있는 지역 찾.. (4)
        • 메이플스토리 챌린저스 월드 시즌 1 분석 (3) N
      • 데이터리안 SQL 공부 (3)
      • 주제별 링크 모음 (1)
      • 백업 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
레까
[서울기온예측][XGboost 1] 의사결정나무, XGboost란?
상단으로

티스토리툴바