[1]. Decision Tree (의사 결정 트리)
{1}. 개념
질문을 반복해서 데이터를 분류하는 알고리즘
예) :
시험 점수 + 출석률로 합격/불합격 분류
점수 >= 60? → 질문 1
├── No → 불합격
└── Yes → 출석률 ≥ 80%? → 질문 2
├── No → 불합격
└── Yes → 합격
질문 1에서 점수로 1차 분류를 하고,
질문 2에서 출석률로 2차 분류를 했다.
이렇게 질문을 반복할수록 더 정교하게 데이터를 분류할 수 있게 된다.
{2}. 구조
1. 루트 노드
→ 첫 번째 질문
2. 브랜치
→ 질문의 결과 (Yes / No)
.
.
.
3. 리프 노드
4. 최종 분류 결과
{3}. 질문의 기준
어떤 질문이 데이터를 가장 잘 나누는가? 를 기준으로 두 가지 방법 사용
- 지니 불순도
- 정보 이득
(1). 지니 불순도
불순도란 노드 내에 서로 다른 데이터가 얼마나 섞여 있는지를 나타내는 척도이다.


- 불순도가 낮을수록 = 잘 나뉜 것
- 0 = 완벽하게 분리된
- 0.5 = 반반 섞여있음 ⇒ 최악의 상황
반반 섞여있는 데이터가 왜 최악이냐?
Decision Tree의 목표를 보면
"데이터를 잘 나누는 질문을 찾는 것"이다.
잘 나눈다는 것은 한쪽은 Yes, 다른 한쪽은 No이다.
반반을 예를 들면
점수 >= 60?
- Yes → 합격 3명, 불합격 3명 ⇒ 반반
- No → 합격 2명, 불합격 2명 ⇒ 반반
이렇게 나누기 전과 후가 똑같으면 해당 질문은 아무 의미가 없는 질문이다.
(2). 정보 이득
- 분기 전 불순도 - 분기 후 불순도
- 값이 클수록 = 좋은 질문
즉, 불순도를 가장 많이 낮추는 질문을 선택하는 것이 Decision Tree의 목표이다.
{4}. 실습

결과에서 45점은 불합격이 나왔다.
불합격 확률 : 100%
합격 확률 : 0%
(1). 왜?
학습 데이터에서
60점 미만 → 30점, 50점 전부 불합격
60점 이상 → 60점, 80점, 90점 합격
45점은 60점 미만이기 때문에 불합격 100%로 나온 것이다.
{5}. 특징
(1). 장점
- 분기 기준이 "점수 >= 60?"처럼 명확한 조건으로 표현되기 때문에 결과를 사람이 이해하기 쉽다.
- 거리 계산이 없어서 스케일 차이가 결과에 영향을 주지 않기 때문에 데이터 전처리가 거의 필요 없다.
- 리프 노드에서 다수결로 출력하면 분류, 평균값으로 출력하면 회귀가 되기 때문에 분류/회귀 둘 다 사용 가능하다.
(2). 단점
- 과적합이 쉽게 발생한다.
→ 질문을 너무 많이 만들면 ⇒ 훈련 데이터를 그냥 외워버린다.
- 훈련 데이터가 조금만 바뀌어도 분기 기준이 바뀌고, 그 아래 모든 분기가 연쇄적으로 바뀌기 때문에 데이터 변화에 민감하다.
[2]. SVM (Support Vector Machine)
{1}. 개념
- 분류를 위한 기준 선을 정의(결정 경계, Decision Boundary)하여 두 개의 데이터를 분리하는 방법
→ 경계선과 데이터 사이의 간격(마진)을 최대화
예) :
합격/불합격을 나누는 선을 그을 때,
양쪽 데이터에서 가장 멀리 떨어진 선을 선택

{2}. Margin이란?
- 경계선과 가장 가까운 데이터 포인트 사이의 거리

마진이 클수록 더 안정적인 경계선이라고 할 수 있다.
- CI스스 글로로는 나노바나나가 이미지를 생성할 때 만든 텍스트 렌더링 오류이다.
- 단순히 파란 데이터라고 생각하면 된다.
{3}. Support Vector란?
- 경계선과 가장 가까이 있는 데이터 포인트들
- 이 데이터들이 경계선의 위치를 결정한다.

{4}. Kernel Trick
- 직선으로 나눌 수 없는 데이터가 있을 때
→ 더 높은 차원으로 변환해서 분리
→ 2D에서 나눌 수 없음 ⇒ 3D로 올리면 나눌 수 있음

{5}. 실습

60점 예측 결과를 넣었을 때 합격이라는 결과가 나왔다.
불합격 확률 : 40.27%
합격 확률 : 59.73%
(1). 왜?
- 학습 데이터에서 60점은 합격이다.
- SVM은 마진을 최대화하는 경계선을 찾았고,
- 경계선이 50~60점 사이 어딘가에 위치하게 되었다.
- 60점은 경계선 바로 위에 있기 때문에 합격인 것이다.
- 근데 경계선과 가깝기 때문에
- 확률이 59.73%로 애매하게 나온 것이다.
SVM은 경계선 기준으로 얼마나 떨어져 있냐로 확률을 계산한다.
60점이 경계선 바로 위에 있다는 건, 합격 쪽이긴 한데 불합격 쪽과 거의 차이가 없다는 뜻이다.
거리가 거의 없으니까 "합격이다"라고 말할 근거가 없다.
{6}. 특징
1. 마진 최대화로 일반화 성능이 좋음
→ 경계선을 양쪽 데이터에서 최대한 멀리 그어서 새로운 데이터에도 안정적으로 분류함
2. 고차원 데이터에 강함
→거리 기반이 아니라 경계선 기반이라 차원이 늘어나도 성능이 크게 떨어지지 않는다
3. 커널 트릭으로 복잡한 패턴도 분류 가능
→ 직선으로 못 나누는 데이터를 고차원으로 변환해서 선형으로 나눌 수 있기 때문
4. 데이터가 많으면 학습이 느림
→ 모든 데이터 간의 관계를 계산해서 최적 경계선을 찾기 때문에 데이터가 늘수록 계산량이 급격히 커짐
5. 결과 해석이 어려움
→ 경계선이 고차원 공간에 존재해서 사람이 시각적으로 이해하기 어렵기 때문에
6. 파라미터 튜닝이 까다로움
→ C(마진 조절), 커널 종류, 감마 등 여러 파라미터가 서로 영향을 주기 때문
[3]. Random Forest
{1}. 개념
- Decision Tree 여러 개를 만들어서 다수결로 최종 결과를 결정하는 알고리즘
Forest = 숲 = 나무(tree) 여러 개
⇒ Dicision Tree 과적합 문제를 해결하기 위해 만들어진 알고리즘
{2}. 왜 여러 개를 만듦?
- Decision Tree 1개 ⇒ 과적합 위험 높음
→ Decision Tree는 질문 개수를 제한하지 않는데 학습 데이터를 100%로 학습할 때까지 계속 질문을 만들어 버림
학습 데이터는 완벽하지만 테스트를 보면 과적합이 발생함
즉, 시험 족보를 통째로 외웠지만, 새로운 문제가 나오면 틀리는 것과 같다.
- Decision Tree N개 ⇒ 서로 다른 시각으로 판단 → 다수결 = 과적합 줄어듦
예) :
- 나무 1 = 합격
- 나무 2 = 합격
- 나무 3 = 불합격
- 나무 4 = 불합격
- 나무 5 = 합격
다수결 → 합격 3 : 불합격 2 = 합격
{3}. 어떻게 다양한 트리를 만듦?
(1). Bagging
- 전체 데이터에서 랜덤 하게 일부를 뽑음
- 각각 다른 트리를 학습 시킴
원본 데이터 [30, 50, 60, 80, 90]
- 트리 1 → [30, 60, 60, 90, 50] (랜덤 추출)
- 트리 2 → [50, 80, 30, 80, 60] (랜덤 추출)
- 트리 3 → [90, 90, 50, 60, 30] (랜덤 추출)
⇒ 같은 데이터지만 다른 트리가 만들어짐
(2). 랜덤 피처 선택
- 질문을 만들 때 전체 피처 중 랜덤 하게 일부만 사용
- 매 분기마다 다른 피처 조합이 선택되기 때문에
- 트리마다 다른 질문을 하게 됨
⇒ 다양한 트리 생성

{4}. 실습

70점 예측 결과로 합격이 나왔다.
불합격 확률 : 8%
합격 확률 : 92%
⇒합격 확률이 압도적으로 높음
(1). 왜?
학습 데이터에서 70점 근처를 보면
- 60점 = 합격
- 80점 = 합격
트리 대부분이 합격으로 판단했다.
즉, 다수결 결과로 인해 합격으로 나온 것이다.
{5}. 특징
1. Decision Tree 과적합 문제 해결
→ 여러 트리가 랜덤 한 데이터와 피처로 학습해서 한 트리의 과적합이 다른 트리들에 의해 희석되기 때문에
2. 데이터가 많아도 안정적
→ 각 트리가 전체 데이터가 아닌 랜덤 샘플만 사용하기 때문에
3. 피처 중요도 확인 가능
→ 각 피처가 지닌 불순도를 얼마나 낮췄는지를 전체 트리에서 집계할 수 있기 때문에
4. 트리가 많아서 학습이 느림
→ 트리 수만큼 학습을 반복해야 하기 때문에
5. 결과 해석이 어려움
→ 트리가 많은 면 어떤 질문을 했는지 추적이 어려움
[4]. XGBoost(Extrenme Gradient Boosting)
{1}. 개념
- 약한 트리 여러 개를 순서대로 만듦
- 이전 트리의 오차를 다음 트리가 보완하는 알고리즘
{2}. Random Forest와 차이
(1). Random forest
- 트리를 동시에 만듦
- 다수결로 결성
- 병렬 학습
(2). XGBoost
- 트리를 순서대로 만듦
- 이전 오차를 다음이 보완
- 순차 학습
{3}. 어떻게 오차를 보완함?
1단계 :
트리 1 학습
- 50점 ⇒ 합격 예측 = 합격
- 55점 ⇒ 합격 예측 = 불합격 (오차 발생)
2단계 :
- 트리 2가 오차에 집중해서 학습
- 55점을 더 잘 맞추도록 보완
3단계 :
- 트리 3이 또 오차 보완
.
.
⇒ 반복할수록 오차가 줄어듦
{4}. 실습

55점 예측 결과에 대해서 합격이 나왔다.
불합격 확률 : 40%
합격 확률 : 60%
(1). 왜?
불합격 데이터 2개 (30, 50)
합격 데이터 3개 (60, 80, 90)
55점은 50~60 사이의 점수인데 합격 데이터가 3개라서 합격 쪽으로 기울어진 거임
- 트리 1 → 55점 예측 (오차 발생)
- 트리 2 → 트리 1의 오차를 줄이는 방향으로 보정값 추가
- 트리 3 → 남은 오차를 또 보정
.
.
⇒ 모든 트리의 결과를 합산하면 합격 60%
[5]. 정리

출처 :
'AI > ML' 카테고리의 다른 글
| AI 최적화 방법 (0) | 2026.04.17 |
|---|---|
| 머신러닝 - 기초 모델 (0) | 2026.04.17 |
| Machine Learning (0) | 2026.04.17 |