1. 결정 트리(Decision Tree)
1) 결정 트리란 ?
결정 트리란, 의사 결정 나무 라고도 불리는 모델은 데이터를 분석하여 그들 사이에 존재하는 패턴을 예측 가능한 규칙들의 조합으로 나타내는 지도 학습 기반의 머신러닝 모델이다. 트리의 구조를 보게 되면 이름과 같이 정말 나무와 비슷한 구조를 띄고 있는데, 각 잎을 노드, 잎 사이를 잇는 가지를 branch(가지)라고 칭한다. 각 노드는 하나의 특징을 기준으로 데이터를 나누게 되는데, 뿌리노드(Root Node), 중간 노드(Internel Node), 리프 노드(Leaf Node)로 나뉜다. 뿌리 노드란, 전체 데이터 세트가 시작되는 최상위 노드를 말하며, 중간노드는 데이터가 나눠지는, 즉 분기하는 지점들을 얘기한다. 리프 노드란 분류 문제의 경우에는 최종 결정된 클래스, 회귀 문제의 경우에는 최종 예측값을 나타내게 된다. 이 노드 사이를 연결하는 가지(Branch)는 각각 노드가 분기 할 때에 특정한 기준을 바탕으로 분기하는데, 기준에 대한 결과(Y/N)을 나타낸다.

위의 그림에서, 노란색인 노드가 뿌리 노드, 하늘색인 노드가 중간 노드, 더이상 나누어지지 않는 노드인 연두색 노드가 리프노드라고 할 수 있겠다. 이들을 잇는 선은 가지들이다. 결정트리의 목표는 엔트로피를 가장 낮추는 것, 즉 sample이 가장 섞이지 않은 상태로 완전하게 분류되는 것이라고 할 수 있다.
2) 장단점
장점
- 해석 용이성 : 위에서 볼 수 있듯이 트리는 어떤 기준을 바탕으로 회귀/분류를 진행했는지 시각적으로 보기 쉬워 비전문가가 보기에도 결과를 이해하기 쉽다.
- 데이터 전처리에 덜 민감 : 결정트리가 아닌 SVM 모델이나 선형회귀 모델의 경우에는 수치형 데이터의 경우에 스케일링이 거의 필수적으로 필요한데, 한 개의 특징의 스케일이 너무 크면 예측값에 영향을 줄 수 있기 때문이다. 그러나 결정 트리에 경우에는 특정한 기준을 바탕으로 예측을 해가기에, 결측값이나 스케일링에 덜 민감하다.
- 특성 선택 자동화, 중요도 파악 용이 : 트리를 구성하는 과정에서 자동으로 중요한 특성이 상위로 가는 경향이 있어, 예측에 큰 영향을 끼치는 특징을 파악하기 쉽다.
- 비선형 관계 표현 가능 : 선형회귀나 분류의 경우 좌표평면에서 선을 긋는 식으로 예측을 진행하는데, 결과 라벨이 비선형 관계를 띄고 있는 경우 정확한 예측이 불가하지만 트리 모델을 사용하게 되면 보다 예측에 유리할 수 있다.
단점
- 과적합 가능성 : 트리 모델의 가장 큰 단점 중 하나로, 트리가 깊어질수록 모델이 학습 데이터에 과적합하게 된다. 따라서 새로운 데이터가 들어왔을 때 예측하는 일반화 성능이 떨어질 수 있는데, 이를 방지하기 위해 가지치기(pruning)이나 최대 깊이 설정을 따로 하곤 한다.
- 불안전성 : 훈련 데이터의 작은 데이터 변화에도 큰 구조 변화를 나타낼 수 있으므로 트리의 안정성이 낮다. 이를 해결하기 위해서 추후에 기술할 앙상블 기법이 등장하게 된다.
- 높은 계산 비용 : 선형회귀나 SVM의 경우에는 단순한 식으로 예측을 진행하는 반면, 트리의 경우에는 위에 그림에서 볼 수 있듯이 단순한 식을 이용하는 것이 아니기 때문에 트리의 깊이가 깊어질 수록 필요한 계산 자원이 크게 늘어날 수 있다.
2. 앙상블 기법(Ensemble Methods)
1) 앙상블 기법이란 ?
머신러닝의 모델들은 단일 모델로 사용하게 되면 장단점이 확연히 드러나곤 하는데, 데이터의 특성이나 모델의 성질에 따라 과대적합/과소적합의 문제가 일어나곤 하고, 때문에 모델의 일반화 성능이 떨어지는 경우가 생기곤 한다. 이를 방지하기 위해서 여러 개의 모델/학습 알고리즘을 결합하여 더 나은 예측 성능을 얻고자 한다. 이를 앙상블 기법이라고 하는데, 이를 통해 개별 모델들의 단점을 보완하고 성능을 향상시키는 것이 목적인 기법이다.
앙상블 기법은 크게 3가지로 나뉘는데, 배깅, 부스팅, 스태킹이다. 이들의 각각의 특성들과 모델들, 또 장단점을 간략하게 기술해보자 한다.
a) 배깅(Bagging)
앙상블 기법중 첫 번째로 배깅(Bagging) 이란, 모델들을 병렬로 학습시키는 방법을 말한다. 여러 개의 모델을 생성하고, 이들에게 같은 전체 데이터 셋에서 무작위로 샘플링한 데이터셋을 생성해 각 데이터셋으로 모델을 학습시킨다. 각각 모델에서 나온 예측을 결합하여서 최종 결과를 내게 되는데, 배깅을 통해서 학습을 수행하면 모델의 분산을 감소시키는 효과가 있어 과적합을 방지할 수 있고, 샘플링된 데이터를 학습하여 속도가 빠르다. 또한 랜덤으로 샘플링된 자료를 각각 따로 예측을 수행하기 때문에 이상치에 다른 모델들보다 영향을 덜 받는다. 배깅 학습방식을 사용하는 대표적인 모델은 랜덤포레스트(Random Forest)모델이 있다.

- 랜덤 포레스트 모델(Random Forest) : 여러개의 결정트리를 학습하고 그 결과를 종합하여 예측을 진행하는 배깅의 대표적인 모델로, 단일 결정 트리에 비해서 높은 정확도를 보이고, 과적합도 감소된 예측을 보이지만, 단일 트리에 비해 예측이 느리고, 리소스 소모가 크다는 단점이 있다. 또한 트리를 병렬로 학습시켰기에 복잡도가 높아 모델 해석이 비교적 어렵다.
b) 부스팅(Boosting)
앞선 배깅 모델이 병렬로 서로 다른 모델들을 학습했다면, 부스팅은 직렬로(순차적으로) 데이터셋을 학습하게 된다. 하나에 데이터셋에 대해서 예측을 수행하고, 순차적으로 이전 모델이 틀렸던 오차를 다음 모델이 줄이도록 예측을 설계하게 된다. 따라서 초반 모델은 전반적인 예측 성능을, 후반 모델은 맞추기 어려운 문제에 대한 성능을 담당하게 된다. 주로 단순한 모델들을 조합하여 하나의 성능 좋은 모델을 만들게 되는데, 이렇게 사용하게 되면 모델의 편향이 감소해 정확도가 유의미하게 올라가는 효과가 있다. 하지만 배깅은 한 번에 따로따로 학습을 시키는 반면, 연속적으로 모델을 학습시키기 때문에 시간이 더 많이 소요되고, 데이터셋을 나누어서 예측을 수행하지 않기 때문에 과적합이 발생할 위험이 상대적으로 높다는 단점이 있다. 부스팅 모델에는 크게 AdaBoost(Adaptive Boosting), Gradient Boosting(GBM), LightGBM 등이 있다. 이 모델들에 대해 간략하게 살펴보자면 :
- AdaBoost : 최초의 부스팅 기술인데, 초기에는 모든 데이터 포인트에 동일한 가중치를 부여했다가, 다음 모델에서의 예측에서는 틀린 데이터의 가중치↑, 맞힌 데이터의 가중치↓하여 다음 나무를 학습한다. 이를 반복하는 알고리즘인데, 이 알고리즘을 사용하게 되면 장점은 간단하고 효과적이게 예측을 진행할 수 있고, 데이터의 특성에 크게 의존하지 않는다는 점이 있다. 하지만 노이즈가 많은 데이터셋에서는 오히려 과적합이 일어날 확률이 높다. 따라서 낮은 차원과 적은 데이터셋을 예측하거나 분석할 때 유용하다.

- Gradient Boosting(GBM) : 경사하강법(Gradient Decent)를 통해 손실함수를 최소화하는 방향으로 모델을 추가하는데, 각 모델은 전까지의 모델이 만든 손실을 계산하고, 현재 모델의 손실함수로부터 기울기를 구한 이후 다음 모델은 해당 손실함수의 기울기를 예측하게 된다. 최종 예측값은 경사하강법처럼 각 나무의 기울기에 학습률을 곱하여 더하며 학습이 진행된다. 이 모델의 장점으로는 복잡한 데이터 패턴의 경우에도 잘 학습한다는 장점이 있다. 특히 데이터 셋이 복잡하고 크고 다양한 경우에 큰 강점을 보이는 모델이다.또한 모델의 각 단계의 영향력을 분석하여 어느 정도는 해석이 가능하다는 장점도 있다. 단점으로는 매개변수에 민감해서 매개변수 조정을 잘못하면 성능이 낮아지고, 과적합이 발생할 가능성이 높다는 점과, 연속적인 트리 구축이 필요해 대규모 데이터셋에서 계산 자원이 많이 소모된다. 따라서 학습속도가 느리다는 단점도 있다.

- LightBGM : GBM의 일종이지만, 일반 GBM보다 메모리 사용량도 개선되고, 효율성을 높인 현대 머신러닝 애플리케이션에서 최고의 선택중 하나로 자리잡고 있는 GBM이다. GBM은 level-wise 방법을 사용하는 반면, LightGBM의 경우에는 Leaf-wise 방법을 사용한다. level-wise 방식은 한층씩 가지를 똑같이 뻗어 균형있는 트리를 만들고, 한 층을 다 채워야 다음 층으로 나눠지지만, Leaf-wise 방식은 층에 상관없이 당장 손실을 가장 많이 줄일 수 있는 노드에 집중하여 트리를 만들게 된다. 트리가 불균형해지지만 빠른 학습이 가능하고, 계산 효율성이 극대화되며, 성능이 향상된다. 따라서 LightBGM의 장점 또한 언급한 요소들이라고 할 수 있겠다. 또한 메모리 효율성 또한 최적화된 구조와 알고리즘 덕분에 뛰어나다. 단점은 BGM과 마찬가지로 매개변수 조정에 민감하다는 점이 있겠다.

c) 스태킹(Stacking)
앙상블 기법중 스태킹(Stacking)이란, 앞에 두 기법은 같은 종류의 모델, 즉 트리는 트리끼리 순차적/독립적으로 학습을 수행했다면, 이 경우에는 여러개의 서로 다른 모델을 사용한다. 여러 모델의 예측 결과를 또 다른 머신러닝 모델을 사용하여 최종 결과를 예측한다. 이때 마지막으로 예측하는 모델을 메타 학습자라고 부른다. 이 기법을 사용하게 되면 여러 알고리즘들을 결합하게 되면서 단일 모델들을 결합하는 것보다 뛰어난 성능을 기대할 수 있고, 데이터의 특성에 따라서 유연하게 알고리즘을 짤 수 있다. 하지만 이미 개별 모델에서 예측한 예측값을 다시 모델을 사용해서 재예측을 진행하기 때문에, 과적합의 위험성이 높고, 다수의 개별 모델을 학습하기 때문에 계산 비용이 증가한다. 스태킹의 경우에는 기반 모델을 어떤 모델을 쓰는지에 따라, 중간 모델을 어떤 모델을 사용하는지에 따라 다른 스태킹 모델이 된다.

3. 차원축소(Dimension Reduction)
1) 차원의 저주
머신러닝에서 '차원'을 얘기한다면, 데이터에 있는 특징의 개수를 얘기한다. 예를 들어 데이터에 특징, 즉 속성이 20개가 있다면 데이터셋은 20차원을 가지고 있다고 한다. 머신러닝에서는 고차원의 데이터셋을 많이 다루게 되는데, 예측값을 결정하는 특징이 많으면 좋을 것 같지만, 어느 임계점을 넘게되면 데이터의 복잡함만 늘어나고 유용한 정보의 양은 늘어나지 않는다. 오히려 특징 수가 많아질수록 최적의 특징 수 이상을 넘어가면 모델의 성능이 저하되는걸 볼 수 있는데, 이를 휴즈 현상이라고 한다. 이 차원의 저주를 해결하기 위해서 차원 축소를 이용하게 된다.

2) 차원 축소
위에서 기술했듯이 차원의 저주는 차원 축소를 통해서 해결하는데, 차원 축소란 고차원의 데이터를 데이터의 중요한 특성은 유지하며 보다 낮은 차원으로 변환하는 과정이다. 차원 축소를 통해서는 데이터의 복잡성을 줄일 수 있고, 계산 비용 절감, 분석/시각화에 도움을 준다. 하지만 정보의 손실이 발생할 수도 있다는 단점이 존재하는데, 유용한 정보의 손실을 최소화 하기 위해 상황에 따라 차원 축소 방식을 다르게 선택하게 된다. 차원 축소를 진행하는 방법에는 주성분 분석(PCA), 선형 판별 분석법(LDA), 요 분석(Factor Analysis) 등등이 있다.
a) 주성분 분석(PCA)
차원 축소의 대표적인 방법 중 하나인 PCA는 데이터의 분산을 최대화하는 방향으로 데이터의 차원을 축소하는 방법인데, 데이터의 분산을 설명하는 선형 축을 찾아서 데이터를 변환하는 과정이다. 주성분의 수를 줄이더라도 데이터의 최대 정보를 유지하려고 하는데, 이렇게 하면 원래 정보는 최대한 유지하면서 차원 수를 줄일 수 있어 시각화나 모델 학습 시에 노이즈를 줄이고 효율을 높일 수 있다. 선형적인 관계를 지닌 특징들에서 매우 좋은 성능을 보이고, 시각화에 매우 유용하다.

b) 선형 판별 분석법(LDA)
PCA에서 데이터 전체의 분산을 최대화 하는 방향으로 데이터의 차원을 축소했다면, LDA는 클래스끼리의 분산을 극대화, 즉 클래스 간의 거리가 멀어지도록 차원 축소를 진행한다. LDA를 진행하게 되면 클래스 구분이 명확한 축을 찾게 되고, 원본 데이터를 이 판별 축에 투영하여 새로운 저차원 공간을 만들게 된다. 주로 선형 분류 문제에 많이 사용되며, PCA가 데이터의 통계적 특성을 나타낸다면 LDA는 클래스간 경계를 강조한다. 클래스간 차이를 설명하는 방향으로 축소되기에 해석이 상대적으로 더 간단하단 특성이 있다.

c) 요인 분석(Factor Analysis)
요인 분석은 데이터의 상관 관계를 설명할 수 있는 잠재 변수를 식별하고, 이를 바탕으로 차원을 축소하는 방식이다. 요인 분석에서는 데이터셋에서 상관행렬을 활용해서 공통 요인을 추출하는데, 공통 요인이란 관찰된 변수들이 공유하는 잠재적 특성이나 요인이다. 이를 활용하게 되면 어떤 공통 요인이 데이터에 영향을 미치는지를 쉽게 이해할 수 있어 해석 용이성이 뛰어나다. PCA와 비교했을 때, 주성분 분석은 데이터의 전체 분산을 고려하지만, 요인 분석은 공통 요인을 도출하는데 초점이 있으므로 차원축소의 목표에 따라서 상황에 맞는 차원 축소 기법을 선택하는 것이 중요하다.
'My IT > Article' 카테고리의 다른 글
| [My IT : Article] PyTorch vs TensorFlow, Tensor(PyTorch) vs Array(Numpy) (1) | 2026.03.17 |
|---|---|
| [My IT : Article] 딥러닝 vs 머신러닝, 딥러닝 하이퍼파라미터 (0) | 2026.03.10 |
| [My IT : Article] 지도학습 vs 비지도학습, 손실함수, 편향/분산, K-폴드 교차 검증 (0) | 2026.02.24 |
| [My IT : Article] 선형 자료구조 : 배열, 링크드 리스트, 스택 , 큐 , 데크 (0) | 2026.02.23 |
| [My IT : Article] 선형대수학과 머신러닝, EDA, 데이터 전처리 (1) | 2026.02.09 |