20240816 TIL
1. 의사결정나무
- 의사결정규칙을 나무 구조로 나타내어 전체 자료를 몇 개의 소집단으로 분류하거나 예측을 수행하는 분석 방법
<예시>
더보기
성별 기준으로 의사결정나무 시각화
- 루트 노드(Root Node): 의사결정나무의 시작점. 최초의 분할조건
- 리프 노드(Leaf Node): 루트 노드로부터 파생된 중간 혹은 최종 노드
- 분류기준(criteria): sex는 여성인 경우 0, 남성인 경우 1로 인코딩. 여성인 경우 좌측 노드로, 남성인 경우 우측 노드로 분류
- 불순도(impurity)
- 불순도 측정 방법 중 하나 인 지니 계수는 0과 1사이 값으로 0이 완벽한 순도(모든 샘플이 하나의 클래스), 1은 완전한 불순도(노드의 샘플의 균등하게 분포) 됨을 나타냄
- 리프 노드로 갈수록 불순도가 작아지는(한쪽으로 클래스가 분류가 잘되는)방향으로 나무가 자람
- 샘플(samples): 해당 노드의 샘플 개수(891개의 관측치)
- 값(value): Y변수에 대한 배열. 549명이 죽었고(Y = 0), 342명이 살았음(Y = 1)
- 클래스(class)
- 가장 많은 샘플을 차지하는 클래스를 표현
- 위에서는 주황색(Y = 0 다수), 파란색(Y=1 다수)를 표현
장점:
- 쉽고 해석하기 용이
- 다중분류와 회귀에 모두 적용 가능
- 이상치에 견고하며 데이터 스케일링이 불필요
단점:
- 나무가 성장을 너무 많이 하면 과대 적합의 오류에 빠질 수 있음
- 훈련 데이터에 민감하게 반응-> 작은 변화가 노이즈에도 나무의 구조가 크게 달라짐(불안정성)
2. 랜덤 포레스트
- 나무를 여러 개 만들어 숲을 만드는 것
▶ 배깅(Bagging)
머신러닝은 데이터의 부족이 문제 --> 이를 해결하기 위한 Bootstrapping + Aggregating 방법론
- Bootstrapping: 데이터를 복원 추출해서 유사하지만 다른 데이터 집단을 생성하는 것
- Aggregating: 데이터의 예측,분류 결과를 합치는 것
- Ensemble(앙상블): 여러 개의 모델을 만들어 결과를 합치는 것
▶ 트리를 포레스트로 만들기
여러 개의 데이터 샘플에서 각자 의사결정트리를 만들어 다수결 법칙에 따라 결론 내림
장점:
- 배깅과정을 통해 과적합 피할 수 있음
- 이상치에 견고하며 데이터 스케일링이 불필요
- 변수 중요도를 추출하여 모델 해석에 중요한 특징 파악 가능
단점:
- 컴퓨터 리소스 비용 큼
- 앙상블 적용으로 해석 어려움
3. 최근접 이웃 K-Nearest Neighbor(KNN)
- 주변의 데이터를 보고 내가 알고 싶은 데이터 예측하는 방식
▶ 파라미터
- 머신러넹 모델이 학습 과정에서 추정하는 내부 변수이며 자동으로 결정되는 값
▶ 하이퍼 파라미터
- 데이터 과학자가 기계 학습 모델훈련을 관리하는데 사용하는 외부 구성변수이며 모델 학습과정이나 구조에 영향 미침
▶ 유클리드 거리
- 거리 개념은 머신러닝에서 데이터간의 유사도를 측정할 때 자주 등장하는 개념
- 거리 기반의 알고리즘이기 때문에 단위의 영향을 크게 받아 표준화가 반드시 수반되어야 함
장점:
- 이해하기 쉽고 직관적
- 모집단의 가정이나 형태 고려하지 않음
- 회귀, 분류 모두 가능
단점:
- 차원 수가 많을수록 계산량 많아짐
- 거리 기반의 알고리즘이기 때문에 피처의 표준화 필요
4. 부스팅 알고리즘
- 어러 개의 약한 학습기를 순차적으로 학습하면서 잘못 예측한 데이터에 가중치를 부여하여 오류를 개선해나가는 학습 방식
▶ 종류
(1) Gradient Boosting Model - 가중치 업데이트를 경사하강법 방법 통해 진행
- Python 라이브러리
- sklearn.ensemble.GradientBoostingClassifier
- sklearn.ensemble.GradientBoostingRegressor
(2) XGBoost - 트리기반 앙상블 기법, 병렬학습이 가능해 속도 빠름
- Python 라이브러리
- xgboost.XGBRegressor
- xgboost.XGBRegressor
(3) LightGBM - XG보다 학습시간 짧고 메모리 샤용량 작음, 작은 데이터의 경우 과적합 발생
- Python 라이브러리
- lightgbm.LGBMClassifier
- lightgbm.LGBMRegressor
'✨Today I Learned' 카테고리의 다른 글
[태블로] 지표 특강2 (1) | 2024.09.06 |
---|---|
[태블로] 지표 특강 (9) | 2024.09.04 |
머신러닝 심화 : EDA (0) | 2024.08.14 |
머신러닝 기초: 로지스틱 회귀 (1) | 2024.08.13 |
머신러닝 기초 : 회귀분석 기초, 심화 (0) | 2024.08.09 |