728x90
Kaggle 데이터분석 캠프 3주차 - 모델과 앙상블

Kaggle 데이터분석 캠프 3주차 - 모델과 앙상블

  • 빅데이터 / 4차 산업혁명 시대에 가장 중요한 것 ? : Data

  • Data가 중요한 이유

    • 기존의 결정 방식에 영향을 주던 것 : 경험과 직관
    • 최근에는 결정에 데이터가 중요한 비중을 차지
  • Data Driven Approach : '패턴' 이 중요

    • 어떻게 전처리를 해서
    • 어떻게 분석한 후(EDA, feature engineering)
    • 좋은 모델을 만들어낼 것인가?
  • 머신러닝 : 데이터 속의 pattern recognition

    • 목표(최소 오차)를 위해
    • 일반적인 함수(조건)을 만드는 것
    • feature - feature / feature - target 사이의 상관관계를 학습
  • 데이터의 분석 과정

    1. 문제 설정
    2. 데이터 수집, 전처리
    3. EDA
    4. 인사이트 얻기
    5. feature engineering
    6. 모델 개발
    7. 모델 평가
    8. kernel 참고
    9. 3~8 무한반복…
    • 보통 Kaggle에서는 3~8의 과정만을 다루게 됨
  • 머신러닝을 공부하려면 : 데이터와 사람(=자료) 이 많은 곳으로!


Scikit-learn 분류 모델 만들기

  • logistic regression
    • 선형 회귀모델 (y = ax + b)의 변형
    • 확률 개념(odds)를 도입
    • ln[Y/(1Y)]=wx+b>>y=[1+exp[(wx+b)]]1ln [Y / (1-Y) ] = wx + b >> y = [ 1 + exp[ -(wx + b) ] ] ^-1
    • 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 등 다른 모델 대비 빠른 편
  • 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

+ Recent posts