나랑 now
[혼공머신] 4주차_트리 알고리즘 본문
# | 진도 | 기본 미션 | 선택 미션 |
1주차 (1/2 ~ 1/7) |
Chapter 01 ~ 02 | 코랩 실습 화면 캡처하기 | Ch.02(02-1) 확인 문제 풀고, 풀이 과정 정리하기 |
2주차 (1/8 ~ 1/14) |
Chapter 03 | Ch.03(03-1) 2번 문제 출력 그래프 인증하기 | 모델 파라미터에 대해 설명하기 |
3주차 (1/15 ~ 1/21) |
Chapter 04 | Ch.04(04-1) 2번 문제 풀고, 풀이 과정 설명하기 | Ch.04(04-2) 과대적합/과소적합 손코딩 코랩 화면 캡처하기 |
4주차 (1/22 ~ 1/28) |
Chapter 05 | 교차 검증을 그림으로 설명하기 | Ch.05(05-3) 앙상블 모델 손코딩 코랩 화면 인증하기 |
5주차 (1/29 ~ 2/4) |
Chapter 06 | k-평균 알고리즘 작동 방식 설명하기 | Ch.06(06-3) 확인 문제 풀고, 풀이 과정 정리하기 |
6주차 (2/5 ~ 2/12) |
Chapter 07 | Ch.07(07-1) 확인 문제 풀고, 풀이 과정 정리하기 | Ch.07(07-2) 확인 문제 풀고, 풀이 과정 정리하기 |
05-1. 결정 트리
결정 트리Decision Tree
머신러닝 모델은 데이터셋을 통해 알고리즘이 스스로 학습하는 것으로, 때로 우리는 모델이 학습한 결과가 어떤 기준으로 판단되었는지를 설명해야할 때가 있다.
이때 사용하기 좋은 모델이 결정 트리로, 지도 학습에서 분류와 회귀 문제에 널리 사용된다.
결정 트리는 이름처럼 알고리즘을 일종의 나무처럼 가지치기를 뻗어가는 모습으로 결과에 대한 결정 과정을 확인할 수 있다.
트리는 조건에 대한 True, False를 결정하는 박스인 노드들을 연결해놓은 것을 의미하며, 맨 위의 노드를 루트 노드root node라 하고 맨 아래에 위치한 노드를 leaf node라고 한다.
데이터의 분할은 각 분할된 영역이 한 개의 타깃값(하나의 클래스나 하나의 회귀 분석 결과)를 가질 때까지 반복된다.
불순도
지니 불순도Gini impurity: 노드에서 데이터를 분할할 기준을 정하는 방법 중 하나로, 결정 트리 모델은 부모 노드parent node와 자식 노드child node의 불순도 차이가 가능한 크도록 트리를 성장시킨다.
정보 이득information gain
부모와 자식 노드 사이의 불순도 차이를 의미한다.
05-2 교차 검증과 그리드 서치
모델의 평가를 위해서 테스트 세트를 이용하는데, 테스트 세트를 자꾸 사용해 성능을 확인하면 결국 모델을 테스트 세트에 맞추게 되어 객관적인 평가가 불가능할 수 있다.
이를 방지하고자 테스트 세트로 모델의 일반적인 성능을 측정하려면 모델의 마지막 평가 과정에서 테스트 세트를 사용하는 것이 권장되며, 전체 데이터 세트에서 20~30%를 따로 떼어내어 검증 세트를 구성하는 것이 일반적이다.
다만 이는 절대적인 양이 아니며, 훈련 데이터가 충분히 많다면 몇 %만 떼어 놓을 수도 있다.
교차 검증cross validation
검증 세트를 만들면 훈련 세트가 줄기 마련인데, 이때 교차 검증을 통해 안정적인 검증 점수를 얻고 더 많은 훈련 데이터 사용이 가능하다.
k-폴드 교차 검증k-fold cross validation: 훈련 세트를 k개로 나누어 교차 검증을 수행하는 것
05-3 트리의 앙상블
앙상블 학습ensemble learning: 하나의 모델을 쓰는 것보다 더 좋은 성능을 얻기 위해 다수의 알고리즘을 사용하는 방법
정형 데이터를 다루는 데 뛰어난 성과를 내며, 대부분 결정 트리를 기반으로 만들어져 있다.
랜덤 포레스트random forest: 결정 트리의 각 예측을 사용해 최종 예측을 만듦(나무들이 모여 숲을 구성함)
각 트리를 훈련하기 위한 데이터를 랜덤하게 만들며, 랜덤하게 샘플을 추출하여 훈련 데이터를 만드는데 한 샘플의 중복 추출을 허용한다.(브트스트랩 샘플bootstrap sample)
각 노드를 분할할 때 전체 특성 중 일부 특성을 무작위로 고른 뒤 이 중에서 최선의 분할을 찾음
훈련 세트에 과대적합되는 것을 막고 검증 세트와 테스트 세트에서 안정적인 성능을 얻을 수 있음
엑스트라 트리Extra tree: 기본적으로 100개의 결정 트리를 훈련하며, 전체 특성 중 일부 특성을 랜덤하게 선택하여 노드를 분할하는 데 사용한다.
랜덤 포레스트와의 차이는 부트스트랩 샘플을 사용하지 않고, 각 결정 트리를 만들 때 전체 훈련 세트를 사용한다.
노드를 분할할 때는 가장 좋은 분할이 아니라 무작위로 분할한다.
이로 인해 성능은 낮아지지만 많은 트리를 앙상블하기 때문에 과대적합을 막고 검증 세트의 점수를 높이는 효과가 있다.
그레이디언트 부스팅gradient boosting: 깊이가 얕은 결정 트리를 사용하여 이전 트리의 오차를 보완하는 방식으로 앙상블하는 방법.
깊이가 얕은 결정 트리를 사용하기 때문에 과대적합에 강하고 일반적으로 높은 일반화 성능을 기대할 수 있다.
분류엣는 로지스틱 손실 함수를, 회귀에서는 평균 제곱 오차 함수를 사용하는 경사 하강법을 통해 트리를 앙상블에 추가한다.
히스토그램 기반 그레이디언트 부스팅Histogram-based Gradient Boosting): 입력 특성을 256개의 구간으로 나눠, 노드를 분할할 때 최적의 분할을 매우 빠르게 찾을 수 있음.
그레이디언트 부스팅 라이브러리: HistGradientBoostingRegressor(사이킷런), XGBoost, LightGBM, catboost
기본 미션
교차 검증을 그림으로 설명하기
전체 데이터를 각 역할에 맞춰 훈련, 검증, 테스트 데이터로 나누는 것은 바람직하나, 같은 데이터에 대해서만 훈련을 반복 수행하는 것은 해당 훈련 데이터에서는 좋은 점수를 받을 수 있으나 실제로 유효한 예측을 하지 못할 수 있다.
훈련 데이터에만 적합한 과적합 상태를 방지하기 위해 훈련 데이터를 k개로 나누어 각 모델은 k-1개의 데이터를 학습하며, 나머지 1개의 폴드로 검증을 거치며, 해당 과정을 총 k번 반복한다.
k-폴드 교차 검증을 통한 결과는 총 반복한 결과의 평균 값이며, 교차 검증 알고리즘을 통해서는 각 폴드들을 달리한 훈련과 검증이 이뤄지는만큼 계산 비용이 많이 들 수 있지만 과대적합을 방지할 수 있다.
추가 미션
Ch.05(05-3) 앙상블 모델 손코딩 코랩 화면 인증하기
참고:
https://tensorflow.blog/파이썬-머신러닝/2-3-5-결정-트리/
'혼공학습단 > 혼공머신' 카테고리의 다른 글
[혼공머신] 6주차_딥러닝을 시작합니다 (0) | 2024.02.16 |
---|---|
[혼공머신] 5주차_비지도학습 (0) | 2024.02.05 |
[혼공머신] 3주차_다양한 분류 알고리즘 (1) | 2024.01.22 |
[혼공머신] 2주차_회귀 알고리즘과 모델 규제 (0) | 2024.01.12 |
[혼공머신] 1주차_나의 첫 머신러닝 & 데이터 다루기 (0) | 2024.01.07 |