1. Learning Decision Trees
Learning과정
1.처음에 모든 트레이닝 데이터들은 루트(제일 위에 부분)에서 시작한다.
2. 통계적 기준을 기반으로 특징이 선택된다. (특징은 정보를 나누는 기준 엔트로피를 가장 많이 줄이는 기준)
3.선택된 특징에 따라 샘플이 재귀적으로 분할된다.
멈추는 조건
1. 모든 샘플이 동일한 클래스에 속할 때
2. 샘플이 더이상 남지 않았을 때 어떤 노드에 더 이상 분할된 샘플이 하나도 할당되지 않았으므로 멈추고 majority class를 답으로 둔다.
3. 사용할 수 있는 속성이 더 이상 없을 때 -> 다수 샘플의 클래스를 선택
Entropy(불확실성의 정도)
불확실성의 측정
결국 엔트로피가 높다는건 불확실한 가능성이 높다는 것이고 그러면 정보량은 많이 필요하니 정보량이 증가할 것이다.
그리고 엔트로피가 낮다는건 불확실한 가능성이 낮다는 것이므로 그러면 정보량은 적게 필요하니 정보량이 감소한다.
결론: 엔트로피==정보량==불확실할 가능성 비례한다
Gini Index
데이터 집합의 불순도를 측정하기위한 지표
- 무작위로 하나의 샘플을 선택했을 때, 잘못 분류될 확률
- 클래스가 완벽히 섞여 있을수록 Gini값이 높다-예측하려는 대상이 정답 클래스임을 모르기 때문에 ( 클래스가 섞여 있을수록 예측이 어려워지고, 그로 인해 Gini 값이 높아진다.)
- 하나의 클래스만 있으면 Gini값은 0이 된다.
Entropy와 Gini는 모두 "불순도"를 나타내지만,
Gini는 계산이 빠르고 부드러우며,
Entropy는 민감하게 변화하지만 계산이 무겁다.
정보이득= 부모의 불순도- 자식들의 평균 불순도로서
그 차가 클 수록 데이터의 분류를 더 잘 수행한다는 뜻으로 정보이득의 수치 또한 증가하는 것이다
ex) 만약 부모의 불순도가 0.5 이고 자식들의 평균 불순도가 0.1이면 부모에서는 잘못 선택할 확률이 0.5였지만 0.1로 줄었기 때문에 정보이득은 0.4 > 0 이다. 그렇기 때문에 불순도가 줄어서 좋은 features를 갖는다.
Pruning(가지치기)
너무 많은 가지가 생기면 데이터의 노이즈나 예외적인 사례까지 학습해버려서 과적합(Overfitting)이 될 수 있다. 따라서 불필요한 가지를 줄이는 과정(Pruning)이 필요하다.
- Prepruning
트리를 만들다가 중간에 멈춰서 Threshold를 만들고 그 Threshold보다 낮으면 가지치기를 하지 않음(과도한 성장 방지)
- Postpruning
완성된 트리에서 성능 향상을 위해 가지를 제거
가지를 잘랐을 때 옿려 정확도가 증가하면 가지를 제거한다.
Decision Tree의 장점과 단점
장점:
1. 해석이 쉬움: 모델이 왜 특정한 예측을 했는지 쉽게 설명 가능
단점:
1. 불안정함
데이터에 작은 변화가 생겨도 트리 구조 전체가 크게 바뀔 수 있음(민감함)
2. 범주형 변수의 레벨 수에 따른 편향
정보이득은 레벨 수가 많은 속성을 더 선호하기 때문에(레벨 수가 많을 수록 자식들의 평균 불순도가 증가하므로)
트리는 복잡하게 나눌 수 있는 속성에 과도하게 의존할 수 있다
Random Forest
2. K-Nearest Neighbors
- 학습 시에는 단순히 데이터를 저장만 함 (모델 없음)-> 모델을 따로 학습하지 않음(Lazy Learning)
- 예측할 때:
- 새로운 샘플이 들어오면
- **전체 학습 데이터와의 거리(유클리드 거리 등)**를 계산
- 가장 가까운 K개의 데이터를 찾음
- 그 중에서 가장 많이 등장한 라벨로 예측
1. 이산형 목표 변수의 경우: 다수결
2. 연속형 목표 변수의 경우: K개의 이웃의 평균값을 계산하여 예측
3. 거리 가중 방식의 경우: 가까운 이웃에게 더 많은 가중치를 두어서 가중 평균으로 계산함(가까운 이웃일수록 예측에 더 많이 반영된다)
Curse of Dimensionality(고차원의 저주)
고차원의 데이터를 다루면 K-nearst 방법이 적합하지 않을 수 있다.
왜냐하면 고차원일수록 이웃들이 멀어진다. (거리기반으로 가까운 이웃을 찾는 것이 무의미해질 수 있음)
3. SVM(Support Vector Machines)
SVM은 두 클래스를 가장 넓은 마진(결정 경계에서 가장 가까운 데이터 포인트까지의 거리)으로 구분할 수 있는 초평면(hyperplane)을 찾는 선형 부류기로 이 결정 경계는 서포트 벡터(support vector)라고 불리는 소수의 중요 샘플들에 의해 정의된다.
결론: 마진은 클수록 좋기 때문에 w가 작아야 좋다(데이터를 여유있게 구분할 수 있음)
w는 초평면에 수직인 벡터이며 그 크기는 마진의 역수로, 마진이 가장 가까운 데이터까지의 거리와 반비례 관계에 있다.
벡터의 크기는 방향 벡터의 "기울기" 또는 "날카로움"을 뜻하고 이것을 작게 만든다는건 경계를 완만하게, 넓게 벌려서 마진을 키운다는 뜻이 된다.(아! 벡터는 기울기다 그러니 기울기의 크기가 크다는건 칼같이 딱 나눈다는 뜻으로 이해한다면 마진이 줄어들 수 밖에 없으니 기울기를 원만하게 된다면 마진의 크기는 증가하겠다!)
noise를 다루기위해서 슬랙 변수를 도입해서 마진을 조금 허용한다. (soft margin)
(마진 위반에 대한 패널티를 주는데 패널티가 클수록 마진 위반을 덜 허용해서 Overfitting 가능성이 커진다)
(작을수록 위반 허용이 늘어나서 (일반화 증가한다))
결정 경계는 서포트 벡터들로만 구성
Kernel Trick
SVM은 선형 분류기지만
보통의 데이터는 선형으로 구분이 불가능하다 그래서 데이터를 고차원 공간으로 매핑해서 선형으로 나눌 수 있게 만든다.
Kernek Trick: 고차원으로 보내서 계산하지말고 고차원에서의 내적 결과만 직접 계산한다.
- 고차원으로 직접 안 올라가도 된다.
- 계산은 커널 함수만으로 처리 가능하다
- 비선형 문제도 십게 다룰 수 있다.
- 🔵 1. Linear Regression (LR)
- 직선 형태의 결정 경계를 가진다.
- 선형 회귀는 원래 분류 모델이 아니라 연속값 예측용이지만,
임계값을 기준으로 분류에 사용하면 이런 단순 경계선이 나타난다. - 비선형 데이터 분류에는 부적합하다.
- 🟠 2. Decision Trees (DT)
- 결정 트리는 데이터를 특성 값 기준으로 구간을 나눠 분류한다.
- 그래서 경계선이 축에 수직/수평으로 직각 모양이 된다.
- 단순하고 해석은 쉬우나, 경계가 부자연스럽고 과적합(overfitting) 가능성이 있다.
- 🟣 3. K-Nearest Neighbors (KNN)
- K개의 이웃을 기준으로 다수결로 분류한다.
- 데이터에 매우 민감하게 반응하므로, 경계가 복잡하고 울퉁불퉁하다.
- K가 작을수록 더 세밀하지만 과적합 위험이 높음.
- 🔴 4. Support Vector Machine (SVM)
- 마진을 최대화하는 초평면을 통해 분류한다.
- 커널 트릭을 사용하면 비선형 데이터도 잘 분리할 수 있고,
경계가 부드럽고 안정적인 곡선으로 나타난다. - 일반화 성능이 뛰어남, 특히 경계 근처 데이터에 강하게 반응.