AIFactory 에서 제공하는 세미나 중에서 흥미로웠던 부분을 중심으로 리뷰했습니다.
실제로 많은 도움이 되었고 전체적인 진행방향을 잡기 좋은 강의였습니다.
목차
머신러닝 문제해결 프로세스 & 탐색적 데이터 분석(EDA)의 중요성과 개요
베이스라인 모델 설계
모델 성능 개선 방안
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)
- 대표적인 하이퍼 파라미터 최적화 기법
강의 후기
확실히 대회를 수행하면서 주요한 내용을 모두 간략하게 다뤄 주신 강의였던 거 같습니다. EDA ~ 모델 추론까지 모든 내용을 전반적으로 확인할 수 있어서 좋았습니다.
'Study > Seminar' 카테고리의 다른 글
[AIF] 개인 데이터셋을 통한 llama2 fine-tune (4) | 2024.07.22 |
---|---|
[AIF] 챗GPT 점메추 메뉴판, 예산입력하고 점심 메뉴 추천받자 (17) | 2024.07.22 |
[AIFLD2023] 어쩌다 키포인트 검출 제대로 입문하기 (2) | 2024.07.22 |
[Space-S x DLD 2022] 케라스 실용 예제 및 개발 가이드 컨퍼런스 - Advanced Augmentation Strategy in Keras 리뷰 (1) | 2024.07.22 |
INNOPOLIS AI SPACE-S 인공지능 세미나 - 이미지 분류를 위한 딥러닝 문제해결 패턴 리뷰 (1) | 2024.07.22 |