모델 구축

우수민·2021년 8월 8일
0

머신러닝 공부

목록 보기
5/9

모델의 기본 이해

모델이란?

  • 특징(feature)을 입력 데이터로 하여 예측값을 만들어 내는 것
  • 모델 선택 방법
    1. 최우선 선택 모델 : GBDT
    2. 문제에 따라 2순위로 검토, 다양상 요구 : 신경망, 선형 모델
    3. 다양성 요구 : k-최근접 이웃 알고리즘, 랜덤 포레스트(RF)/ERT, RGF, FFM

GBDT

  1. 개요
    : 모델의 사용 편의성과 모델 성능이 높다보니 경진 대회에서 차지하는 존재감이 매우 강하다.

    • GBDT는 다수의 결정 트리로 이루어진다.
      1. 목적변수와 예측값으로부터 계산되는 목적함수를 개선하고자 결정 트리를 작성하여 모델에 추가한다.
      2. 하이퍼파라미터에서 정현 결정트리만큼 1번을 반복한다.
  2. 특징

    • 특징은 수치로 표현해야 한다.
      : 어떤 특징이 어떤 값보다 큰지 작은지에 따라 결정 트리의 분기에서 나뉘므로 특징은 수치로 나타내야 한다.
    • 결측값을 다룰 수 있다.
      : 결측값일 때는 결정 트리의 분기에서 어느 한쪽으로 나뉠 수 있으므로 결측값을 채우지 않고 그대로 사용할 수 있다.
    • 변수 간 상호작용이 반영된다.
      : 분기 반복에 따라 변수 간 상호작용이 반영된다.
    • 특징값의 범위를 스케일링할 필요가 없다.
      : 결정 트리에서는 각각의 특징에서 값의 크고 작은 관계만이 문제가 되므로 표준화 등의 스케일링을 할 필요가 없다.
    • 범주형 변수를 원-핫 인코딩하지 않아도 된다.
    • 희소행렬에 대응한다.
  3. 주요 라이브러리

    1. xgboost
    2. lightgbm
    3. catboost
  4. xgboost 사용팁

    • booster
      : GBDT를 사용하고 싶다면 디폴드값인 gbtree로 성정한다. gblinear로 설정하면 선형 모델이 되고 dart로 설정하면 정규화에 dart라는 알고리즘을 사용한 GBDT가 된다.

      gblinear는 모델의 표현력이 선형 모델과 같으므로 잘 쓰이지 않는다. DART는 경진 대회에 따라 효과를 볼 때가 있어 간혹 사용된다.

      DART : 그레디언트 부스팅에서는 초반에 만들어지는 트리의 영향이 강하다 보니 마지막에 작성되는 트리는 소소한 부분에 맞춰진다. DART는 이처럼 소소한 부분에 적합한 트리 작성을 억제하고자 신경망에서 사용되는 드롭아웃을 적용하는 방법이다. 결정 트리를 작성할 때마다 드롭아웃 방법처럼 일정 비율의 트리가 존재하지 않는 셈 치고 학습시킨다. 한편 존재하지 않는 트리와 새롭게 작성된 트리의 가중치를 그대로 더하면 과적합이 되므로 이들 트리의 가중치를 약하게 조정한다.

  5. lightgbm

  • xgboost와 비교했을 때 속도는 분명히 빠르며 모델 성능은 거의 비슷한 정도로 평가 받는다.
    • 히스토그램 기반의 결정 트리 분기에 따른 고속화
      : 분기가 될 수 있는 모든 수치를 살펴보는 대신, 히스토그램을 만들고 수치를 일정한 그룹별로 나누어 해당 그룹에서 분기하도록한다. 즉 xgboost에서도 매개변수 tree_method를 변경함으로써 히스토그램 기반으로 만들 수 있다.
    • 깊이 단위가 아닌 잎 단위에서의 분기 추가에 따른 모델 성능 향상
    • 범주형 변수의 분할 최적화로 모델 성능 향상
  1. catboost
    • 범주형 변수의 타깃 인코딩
      : 범주형 변수로서 지정한 특징을 자동으로 타깃 인코딩하여 수치로 변환한다. 타깃 인코딩을 잘못 사용하면 목적변수의 정보를 부적절하게 사용하게 된다. 따라서 랜덤하게 데이터를 정렬하면서 적용하는 식의 연구가 이루어지고 있다. 또한 결정 트리를 작성하는 과정에서 동적으로 범주형 변수의 조합에 대해 타깃 인코딩이 이루어진다. 즉, 어떤 분기에서 범주형 변수가 사용되었을 때 그 범주형 변수와 다른 범주형 변수와의 조합에 대해 타깃 인코딩 연산이 이루어지며 그보다 깊은 분기에서 그 결과가 사용된다.
    • 망각 트리 결정
    • 정렬 부스팅
      : 데이터의 수가 적을 때는 정렬 부스팅이라는 알고리즘이 사용된다. 속도는 느리지만 데이터 수가 적을 때는 모델 성능이 높다.

      속도가 느려 lightgmb이나 xgtboost에 비해 많이 쓰이지는 않는다. 다만 상호작용이 중요한 경우 모델 성능이 잘 나올 때도 있어서 시도해볼 가치가 있는 모델이다.

신경망

  1. 개요
    : 정형 데이터는 딥러닝에 사용되는 10층 이상의 신경망이 아닌, 은닉 계층이 2~4층 정도의 완전 연결 계층으로 이루어지는 다층 퍼셉트론(MLP)이라는 구조를 사용한다.

    • 렐루와 같은 활성화 함수를 적용하여 여러 계층을 겹침으로써 비선형성을 표현할 수 있다.
    • 출력 계층에서 시그모이드 함수느 소프트맥스 함수를 적용하면 출력값은 이진 분류 및 다중 클래스 분류에서의 확룰(0~1 사이)을 나타내는 값이 된다.
    • 학습 데이터를 미니배치라는 소수의 샘플로 나누어 미니배치 별로 각 계층의 가중치를 생신해나간다. 학습 데이터를 끝까지 진행하는 것을 1에폭이라고 한다. 이 과정을 충분히 학습이 진행될 때까지 반복한다. 이처럼 미니배치 별로 업데이트하는 방법을 확률적 경사하강법(SGD)라고 한다. 학습 데이터 전체를 학습하여 가중치를 갱신하는 것보다 계산 효율이 높아지기 쉽고 지역 최솟값에 잘빠지지 않는다는 이점이 있다.
  2. 특징

    • 변숫값은 수치로 표현
    • 결측값을 다룰 수 없음
    • 비선형성과 변수 간의 상호작용을 반영
      : 신경망의 구조로부터 어느 정도의 비선형성과 변수 간 상호작용을 반영할 수 있다.
    • 변숙값을 표준화 등으로 스케일링
      : 기본적으로 변숫값의 크기가 고르지 않으면 학습이 제대로 진행되지 않을 수 있다.
    • 하이퍼파라미터에 따른 모델 성능의 편차
      : 하이퍼파라미터의 조정이 비교적 어렵다. 하이퍼파라미터에 따라 모델이 과적합하거나 반대로 전혀 학습이 진행되지 않을 수 있다.
    • 다중 클래스 분류에 강점
      : 구조상 다중 클래스 분류에 자연스럽게 모델링할 수 있으므로 GBDT와 비교해 손색없는 모델 성능이 나올 수 있다.
    • GPU로 고속화
  3. 케라스 사용 팁

    • 목적 함수
      : 모델을 컴파일할 때는 매개변수 loss에 목적함수를 설정하고 목적함수가 최소화하도록 학습이 진행된다.

      • 회귀 : mean_squared_error를 설정함으로써 평균제곱오차를 최소화하도록 학습
      • 이진 분류 : binary_crossentropy를 설정함으로써 로그 손실을 최소화하도록 학습
      • 다중 클래스 분류 : categorical_crossentropy를 설정함으로써 다중 클래스 로그 손실을 최소화하도록 학습
    • 하이퍼파라미터
      : 신경망에서는 계층의 구성 등 자유로운 부분이 많으므로, 매개변수에 따라 은닉 계층의 계층 수나 유닛 수가 서로 다른 네트워크를 구현하는 코드를 먼저 작성한 뒤에 매개변수를 설정하고 조정한다. 옵티마이저 종류와 학습률 등 매개변수, 은닉 계층의 계층수와 드롭아웃 강도 등을 하이퍼파라미터로 튜닝한다.

    • 드롭아웃

    • 학습 데이터와 검증 데이터으 ㅣ점수 모니터링

    • 콜백
      : 학습할 때 미니배치의 처리별 또는 에폭별로 짖어한 처리를 빠르게 진행할 수 있다.

      • 목적
        1. 조기 종료
        2. 모델의 정기적인 저장
        3. 학습률 스케줄링
        4. 로그 및 가시화
    • 임베딩 계층
      : 양의 정수를 밀접 벡터(dense vector)로 변환하는 계층으로, 모델의 첫번째 층으로만 설정할 수 있다. 이 계층은 범주형 변수를 입력으로 할 때 사용할 수 있다. 이진 변수가 아닌 범주형 변수는 본래 원-핫 인코딩에서 전처리가 이루어졌지만, 레이블 인코딩에서 임베딩 계층을 적용하는 방법이 활용되기 시작했다. 또한 자연어를 다룰 때 Word2Vec이나 Glove와 같이 학습이 끝난 임베딩을 가중치로 설정할 수도 있다.

    • 배치 정규화
      : 배치 정규화 계층을 이용해 각 계층의 출력 편차를 미니배치 단위로 표준화함으로써 적절히 억제하는 방법으로, 효과가 높아 널리 쓰인다.

선형 모델

  1. 개요
    : 모델 성능이 그리 높지 않고 GBDT나 신경망을 뛰어넘는 특장점이 거의 없다. 앙상블에서 하나의 모델이나 스태킹의 최종 계층에 적용하는 식의 용도로 주로 쓰이며 경진 대회에 따라 드물게 활약한다.

    데이터가 충분하지 않거나 노이즈가 많은 등 과적합이 이루어지기 쉬운 데이터에서 종종 활약하기도 한다.

  2. 특징

    • 특징값은 수치로 표현
    • 결측값을 다룰 수 없음
    • GBDT나 신경망에 비해 낮은 모델 성능
    • 비선형성 표현을 위한 명시적인 특징 생성
    • 상호작용 표현을 위한 명시적인 변수 생성
    • 특징은 기본적으로 표준화
    • 특징 생성시 세심한 처리
      : 이와 같은 이유로 비선형성이나 상호작용을 나타내는 특징을 일부로 만들거나, 최댓값/최솟값을 제한하거나, 구간분할을 하거나, 그들을 조합하는 등 다양한 변환이나 처리를 실시한다.
    • L1 정규와에서 예측에 기여하지 않은 특징으 ㅣ계수는 0

기타 모델

  • RGF(regularized greedy forest)
  • FFM(field-aware factorization machines) : FM(factorizaion machines)을 발전시킨 모델로 추천 문제와 잘 어울린다.

    FFM
    범주형 변수(사용자, 상품, 장르)의 조합을 평가한 값이 목적변수로 주어지는 문제를 가정한다. 사용자, 상품, 장르를 원-핫 인코딩으로 나타내는 '사용자 수+상품 수+장르 수'를 특징의 개수로 삼고 희소 데이터로 나타낼 수 있다.

참고 : 데이터가 뛰어노는 AI 놀이터, 캐글

profile
데이터 분석하고 있습니다

0개의 댓글