반응형

 

  • AIFactory 에서 제공하는 세미나 중에서 흥미로웠던 부분을 중심으로 리뷰했습니다.

  • 실제로 많은 도움이 되었고 전체적인 진행방향을 잡기 좋은 강의였습니다.

 

  • 목차

    1. 머신러닝 문제해결 프로세스 & 탐색적 데이터 분석(EDA)의 중요성과 개요

    2. 베이스라인 모델 설계

    3. 모델 성능 개선 방안

 

1. 머신러닝 문제해결 프로세스 & 탐색적 데이터 분석(EDA)의 중요성과 개요

 

과정

  • 문제 이해
  • 탐색적 데이터 분석
    • 주어진 데이터를 면밀히 분석
  • 데이터 전처리
    • 더러운 데이터를 깨끗하게 만드는 작업
    • 대회에서는 상당 수준 전처리가 이미 이루어진 상태

 

머신러닝 문제해결 체크리스트

 

1-1. 문제 이해

  • 문제 배경과 목적
    • 어떤 데이터를 활용해서 어떤 값을 예측해야 하는지?
  • 문제 유형 확인
    • 회귀인지, 분류인지?
  • 데이터 확인
    • 주어진 데이터가 무엇인지?
  • 문제 접근 방법
    • 어떻게 접근해서 문제를 풀어야 하는지?
    • 배경 지식을 활용한 만한 점이 있을지

가장 큰 공감이 되는 부분이었습니다. 막상 대회를 수행할 때 주제가 흥미로운지에 관점을 두고 주먹구구식으로 대회를 한 적이 많아서 다시 모델링을 하게 되는 경우가 있었습니다. 가장 중요한 주제와 제약조건을 꼭 확인하는 것이 중요!

 

1-2. 탐색적 데이터 분석이란?

  • 주어진 데이터의 구조를 간단히 훑어보거나 몇 가지 통계값을 구해봄
  • 다양한 그래프를 활용해 데이터 전반을 깊이 있게 살펴봄
  • 해당 과정에서 어떤 피처가 중요한지, 피처끼리 어떻게 조합해서 새로운 피처를 만들지, 어떤 점을 주의해서 모델링 할지 등의 인사이트를 얻게 됨

 

제공된 데이터 둘러보기

  • 제공된 파일별 용도 파악
  • 데이터 양(레코드 수, 피처 수, 전체 용량 등)
    • info(), shape
  • 피처 이해
    • 이름, 의미, 데이터 타입, 결측값/고윳값 개수
    • 피처 요약표 활용
  • 훈련 vs 테스트 데이터 차이
    • 분포가 서로 비슷한지?
    • 훈련 데이터엔 있지만 테스트 데이터에 없는 피처가 있는지?
  • 타깃값(목표값) 파악
    • 때에 따라 훈련 데이터 타겟값이 명확히 없는 경우도 있음

 

데이터 피처 탐색표

  • 타깃값 파악
    • 때에 따라 훈련 데이터에 타깃값이 명확히 없는 경우 존재

개별 피처들을 확인할 때는 몰랐던 정보가 존재할 수 있는 전체 피처 요약표를 만들고 해당 내용을 파악 후 대회를 진행하는 것이 좋다는 말씀!

 

1-3. 데이터 시각화

  • 효과적인 시각화를 위한 피처 엔지니어링
  • 각종 시각화
    • 수치형 데이터 시각화, 범주형 데이터 시각화, 데이터 관계 시각화
  • 피처 파악
    • 추가할 피처
    • 제거할 피처
    • 피처별 인코딩 전략
  • 이상치, 결측값 파악
    • 이상치, 결측값 파악 기법
    • 해당 피처별 처리 방법

 

치우친 분포를 가진 데이터

정규분포에서 멀리 떨어진 분포는 회귀에서의 성능 저하 발생할 수 있어서 변환

 

연도, 월, 일 시각화

  • 1번 그래프 : 2011 < 2012 더 많은 자전거 대여수량 기록
  • 2번 그래프 : 월별 대여수량을 통해 날씨가 더울수록 자전거 대여 수량이 높다는 것을 파악
  • 3번 그래프 : 일별 데이터가 거이 비슷하기 때문에 제거 가능성 파악
  • 4번 그래프 : 시간이라는 피처를 통해 출퇴근 시간때 많은 대여량 확인

  • 평일과 휴일간의 차이를 확인가능

  • 해당 그림을 통해 타겟값 예측에 도움을 줄 피처인지 유추가능

  • 특정 피처 A 가 있다고 한다면 해당 A라는 피처가 타겟값과의 비율을 확인해 해당 피처가 예측에 도움이 되는 피처인지 파악

해당 방법은 정말 해보지 않은 방법이었습니다. Classification 문제에 적용해보는 것이 좋을 거 같습니다.

  • 상관관계를 절대적인 지표로 하기는 어렵지만 참고용으로는 가능

  • 레이블 인코딩은 데이터 간의 대소 관계나 크기의 차이가 존재할 때 사용이 적절, 순서가 유의미 하지만 원-핫이 좋을수도 있음

시각화의 중요성을 조금 더 크게 알 수 있었고 블랙박스인 모델에서 설명을 위해서도 10% 정도는 투자하는 것이 좋다는 말씀

 

2. 베이스라인 모델 설계

  • 아주 간단한 기본 모델을 생성, 훈련해 성능 확인
  • 기본적인 뼈대를 만들어두는 것
  • 추후 모델링을 진행하면서 여기에 살을 덧붙이면서 성능을 끌어올림

 

2-1. 평가지표

  • 모델 훈련이 제대로 이루어졌는지 확인하는 방법
  • 대부분 평가지표는 사이킷런에서 제공 필요한 경우 커스텀 평가지표 작성

 

2-2. 모델훈련

  • 훈련 : 피처와 타깃값이 주어졌을 때 최적 가중치(회귀계수)를 찾는 과정 - 세타값 찾기
  • 예측 : 최적 가중치를 아는 상태(훈련된 모델)에서 새로운 독립변수(데이터)가 주어졌을 때 타깃값을 추정하는 과정 - 찾은 세타값을 통해 예측
  • 탐색적 데이터 분석 : 예측에 도움이 될 피처를 추리고, 적절한 모델링 방법을 탐색하는 과정
  • 피처 엔지니어링 : 추려진 피처들을 훈련에 적합하도록, 성능 향상에 도움되도록 가공하는 과정

 

3. 모델 성능 개선 방안

  • 피처 엔지니어링
    • 모델 성능 개선의 첫 단계
    • 이상치 제거, 결측값 처리하기, 데이터 인코딩, 피처 스케일링, 파생 피처 생성, 피처 제거 및 선택 등을 수행
  • 하이퍼파라미터 최적화
    • 모델의 최적 하이퍼 파라미터를 찾는 작업
    • 하이퍼파라미터 최적화 기법으로는 그리드서치, 랜덤서치, 베이지안 최적화 등이 있음, 그 중 베이지안 최적화가 효율적
  • 그 외 성능 개선 기법 적용
    • 교차 검증, OOF(out-of-fold), 테스트 단계 데이터 증강(TTA), 레이블 스무딩
  • 성능 평가
    • 성능이 좋지 않다면 탐색적 데이터 분석이나 피처 엔지니어링부터 다시 수행

 

3-1. 피처 엔지니어링

  • 파생 피처 생성

    • 기존 피처를 가공해 타깃값 예측에 도움될 피처 새로 생성
    • 쉽게 생각할 수 있는 점부터 도메인 지식을 요하는 부분까지 다양함
    • 가장 창의력이 많이 필요한 파트
  • 시차(lag, 지연) 피처 생성 (시계열 데이터에 한정 - 과거 시점의 타겟값을 현재 시점의 피처로 넣을수 있음)

    • 이전 타겟 피처로 사용하는 코드

    • 시차 피처란 과거 시점에 관한 피처

    • 시계열 문제에서 성능 향상에 큰 도움이 됨

    • 트렌드와 유사성 반영

    • 다양한 기준을 바탕으로 시차 피처를 만들 수 있음

  • 데이터 조합을 생성해 데이터 수 늘려주기 (모든 가능한 조합)

    • 가능한 모든 조합 생성 코드

    • 데이터가 아예 없는 것보다 유의미한 데이터가 많은것이 좋음

  • 데이터 다운캐스팅

    • 더 작은 데이터 타입으로 변환하는 작업

    • 훈련 속도가 빨라지고, 메모리 소모도 줄일수 있음

    • 해당 코드

  • 피처 스케일링 (트리 기반은 굳이 수행할 필요없음 - 대소관계로 판단하기 때문)

    • 서로 다른 피처 값의 범위(최댓값 - 최솟값)이 일치하도록 조정하는 작업
    • 대표적으로는 min-max 정규화와 Standardization
    • 트리 모델을 사용할 땐 굳이 적용할 필요 없음
  • 이상치 제거

    • 통계치 vs 특별히 튀는 값 vs 도메인 지식 활용 vs 이상 탐지
  • 결측값 처리

    • 결측값이 많으면 해당 데이터 자체를 없앨 수도 있지만, 해당 데이터가 정말 중요한 데이터라면?
    • 일반적으로 최빈, 평균, 중앙, 대체보다는 더 현명한 방법을 생각함
    • 결측값 자체를 타깃값으로 생각하고, 별도로 모델링을 활용해 결측값 예측
    • 데이터 특성에 맞는 적절한 결측값 처리 방안 구상
  • 어떤 파생 피처를 만들어야 성능 향상에 도움이 될까요?

    • 처음부터 어떤 파생 피처가 예측에 도움이 될지 알기는 쉽지 않음
    • 대회 상위권 캐글러들도 갖은 방법으로 피처 엔지니어링을 시도
    • 그중 성능 향상에 도움되는 피처를 선별
    • 다만, EDA와 도메인 배경지식, 창의적인 아이디어가 도움을 줄 수 있음
  • 하이퍼 파라미터 최적화

    • 대표적인 하이퍼 파라미터 최적화 기법
      • 그리드 서치 (grid search) : 내가 어느정도 하이퍼 파라미터에 대한 이해가 있을 때
      • 랜덤 서치 (random search) : 너무 random 이라 잘 사용하지 않음
      • 베이지안 최적화 (bayesian optimization)

 

머신러닝 체크리스트 github 주소

 

강의 후기

확실히 대회를 수행하면서 주요한 내용을 모두 간략하게 다뤄 주신 강의였던 거 같습니다. EDA ~ 모델 추론까지 모든 내용을 전반적으로 확인할 수 있어서 좋았습니다.

반응형