728x90
Kaggle 데이터분석 캠프 3주차 - 모델과 앙상블
-
빅데이터 / 4차 산업혁명 시대에 가장 중요한 것 ? : Data
-
Data가 중요한 이유
- 기존의 결정 방식에 영향을 주던 것 : 경험과 직관
- 최근에는 결정에 데이터가 중요한 비중을 차지
-
Data Driven Approach : '패턴' 이 중요
- 어떻게 전처리를 해서
- 어떻게 분석한 후(EDA, feature engineering)
- 좋은 모델을 만들어낼 것인가?
-
머신러닝 : 데이터 속의 pattern recognition
- 목표(최소 오차)를 위해
- 일반적인 함수(조건)을 만드는 것
- feature - feature / feature - target 사이의 상관관계를 학습
-
데이터의 분석 과정
- 문제 설정
- 데이터 수집, 전처리
- EDA
- 인사이트 얻기
- feature engineering
- 모델 개발
- 모델 평가
- kernel 참고
- 3~8 무한반복…
- 보통 Kaggle에서는 3~8의 과정만을 다루게 됨
-
머신러닝을 공부하려면 : 데이터와 사람(=자료) 이 많은 곳으로!
Scikit-learn 분류 모델 만들기
- logistic regression
- 선형 회귀모델 (y = ax + b)의 변형
- 확률 개념(odds)를 도입
- maximum likelihood estimation을 이용하여 학습
- support vector machine
- 주어진 데이터의 클래스 그룹 사이의 margin이 최대가 되는 support vector를 탐색
- support vector와 수직인 경계(결정 경계, descision boundary)를 찾는 알고리즘
- 경험적 위험 최소화(ERM)
- 주어진 훈련 데이터에 대해서만 손실 최소화
- 새로 추가된 데이터의 경우 오차가 발생할 수 있음
- 신경망, 선형회귀 등
- 구조적 위험 최소화(SRM)
- 관찰하지 않은 데이터에 대해서도 손실 최소화
- 일반화된 최소 오차를 계산
- Support Vector Machine의 목표
- soft margin
- 유연한 경계면
- 경계를 넘어가는 데이터를 감수하더라도 최선의 경계선 탐색
- har margin
- 데이터를 분명하게 가르는 경계선
- Kernel Trick
- 저차원에서는 분리가 안될 수 있지만, 고차원으로 보낼 경우 가능할 수 있음
- Kernel 함수라는 매핑 함수를 이용 : 저차원 연산에서도 고차원 연산처럼 만들어주기 때문에 Kernel trick이라고 부름
- ex. Linear, Poly, RBF(방사기저함수), Hyper-Tangent(쌍곡선)
- decision tree
- if-then 분류를 이용한 데이터 분류
- greedy algorithm(최적의 트리 생성을 보장하지 않음)
- 변수가 가진 정보량에 따라 분류
- tree 깊이가 깊어지면 overfitting 가능성 존재
- SVM 등 다른 모델 대비 빠른 편
- if-then 분류를 이용한 데이터 분류
- random forest
- 결정 트리를 여러 개 만들어 학습
- 데이터 row, column의 일부를 샘플링하여 각 모델에 학습
- 생성된 각 결정 트리를 앙상블
- 간단하고 빠른 알고리즘
- 변수 소거 없이 많은 입력 변수를 다룰 수 있음
- 일반화 성능이 좋음 (참고 : 모델의 분산과 편향)
- XGBoost
- Extreme Gradient Boosting Tree 알고리즘
- 균형 트리 분할로 인한 과적합 규제
- 가지치기, 자체 교차 검증 기능 제공
- 결측치를 자체 처리
- Early Stopping : 검증 Score가 일정 수준에 도달하면 학습을 멈춤
- LightGBM : XGBoost의 장점을 취하되, 리프 중심의 트리 분할로 가볍고 빠르면서 나은 성능 제공 / But 적은 데이터에서는 과적합 우려
k-Fold Cross Validation
- 기존의 데이터 학습 과정
- 샘플된 데이터로 모델 학습
- 나머지 데이터로 모델 검증
- k-fold cross validation
- 데이터를 k개 그룹(fold)으로 나눔
- 임의의 1개 그룹은 검증에, 나머지 데이터는 모델 학습에 사용, 총 k회 반복
- 각 fold에 대한 score 계산
- 검증 횟수를 늘려 다소 일반화된 모델을 생성 가능
Out-of-Fold / Stacking 앙상블
- Out-of-Fold
- K-Fold에서 추론 과정을 추가
- 모델 출력은 label 대신 확률로 나타냄
- 각 모델의 확률값의 평균 계산
- Stacking 앙상블
- 추가 모델 구성 없이 기존 모델 성능을 극대화
- 학습 데이터 외에 검증용으로 쓰는 fold 데이터 역시 추론 과정에 활용
- 학습 fold와 검증 fold의 추론 결과를 각각 저장
- 충분한 모델이 생성되지 않으면 오히려 정확도가 낮아질 수 있음
- 어느 정도 성능이 나오는 모델들을 합칠 때 효과가 나타나는 편
728x90