프로젝트 진행 중 모델링 파트를 맡게되면서 모델의 예측도와 신뢰성을 어떻게 높이기 위해 많은 고민을 했었는데, 역시나 그 고민들은 분석 선배님들이 겪어간 과정이었다.
이러한 고민들이 모여 "피처 엔지니어링" 이라는 과정이 존재한다는 것을 알게 되었다. 오늘은 모델링 하이퍼 파라미터 튜닝보다 중요한 피처 엔지니어링에 대해 알아보고 고민한 흔적을 남겨보고자 한다(특히 이 Velog를 주로 참고할 예정)
1. 피처엔지니어링이란?
피처엔지니어링이란 무엇인가에 관한 다양한 분들의 의견을 전부 합치면, 모델의 성능 개선을 위한 피처 가공 과정 이라면 전부 피처엔지니어링이라고 부를 수도 있지 않을까 하는 느낌을 받았다..
사실상 탐색적데이터분석(EDA)이나 데이터 전처리(Data Preprocessing)도 둘의 우선순위나 진행 순서를 구분한다거나 하는 의미가 없기 때문에 피처엔지니어링도 점점 그렇게 된 것이 아닌가 추측해본다. 그래서 사실 각 과정을 따로 이해한다기보다 전처리 + EDA + 피처 엔지니어링 = 모델용 최종 데이터 프레임 만들기로 이해하는 것이 실제 프로젝트 진행하면서는 더 편하게 와닿았던 것 같다.
즉, 우리가 어떤 Y값 예측을 위한 피처와 그 데이터를 다 수집했다면 ! 그 이후에 수행해야할 과정이라고 이해했다.
2. 정확하게 무엇을 수행해야 하는 가?
모델용 데이터 프레임을 만들기 위해서는 . . .
- 예측에 중요한 영향을 끼치는 피처를 선택해야하고,
- 결측치가 있다면 행 또는 칼럼을 제거하거나 채워야하고,
- 이상치가 있다면 제거하거나 분석의 목적, 특성 등 도메인을 고려하여 그대로 가져갈 수도 있고,
- 피처들 간에 관련 있어보이는 변수들을 하나만 선택하거나 (흔히 다중공선성으로 설명되는 이야기) 교호작용을 기대하며 두 피처를 모두 사용할 수도 있고,
- 데이터의 분포나 단위를 고려하여 스케일링을 진행해야하고,
(분포 : 데이터의 분포를 전보다 정규하게 만드는 것만으로도 예측 모델의 정확도가 높아지는 경우가 있다.
단위 : 피처의 단위가 1미터일때, 100센티미터일 때 값이 같더라도 분명한 숫자 크기의 차이가 존재하기 때문에 모델에서 단순히 숫자 단위가 큰 값을 영향력이 높은 피처로 인식할 수 있다) - 피처가 많아지면 과적합, 속도 저하 등이 발생할 수 있으므로 피처들을 차원축소하여 피처의 수를 줄여주는 방법을 고려할 수도 있고,
- 범주형 피처의 경우는 인코딩을 수행해야한다
(모델에 따라 인코딩이 필요하지 않은 경우도 있음 ex : LGBM, CatBoost 등
한편, 모델에 따라 레이블 인코딩을 해도 되고, 원-핫인코딩을 해야만 하고 경우로 달라질 수 있다)
아직 부족한 점이 많은 체크리스트이지만, 프로젝트를 수행해보니 적어도 이정도는 진행해봐야 모델 성능 개선을 위해 하이퍼 파라미터 튜닝을 제외하고 모든 경우의수를 다 해본 것이 아닌가 싶다. 심지어 모델링코드를 돌려가면서 다시 돌아와서 해봐야만 필요성을 알 수 있는 것도 있기 때문이다.
추가)
한마디로 모델링은 해봐야 안다! 안해보면 아무도 아무것도 확신할 수 없다!! 고민 되는 부분 잘 체크해서 모델 먼저 러프하게 돌려놓고 다시 체크해보도록 하자 !!!
'프로젝트' 카테고리의 다른 글
개인 프로젝트 주제 선정 (0) | 2023.12.11 |
---|---|
탐색적 데이터 분석(EDA)을 통한 가설 설정 및 앞으로의 분석 방향 제안 (0) | 2023.11.12 |
빅쿼리에 데이터 업로드(적재)하는 방법 - 3가지 (0) | 2023.11.11 |
엑셀에서 csv 파일 여는 방법(데이터 가져오기) (0) | 2023.08.30 |