Dacon 15회 원자력발전소 상태 판단 대회 후기

주업무가 사업관리로 변경된 이후에는 분석을 할 기회가 그리 많지 않았기 때문에 분석의 전체 사이클을 한 번 돌아볼겸 참여하였다. 방통대 정보통계학과 학우분들과 함께 하였고 잊지 않기 위해 했던 부분들 일부를 정리해서 여기에 남긴다. (링크)

File Loading

 Train으로 포함된 파일이 총 828(7?)개 정도였으며 각 파일마다 Label이 할당되어 있는 구조였다. 따라서 이 파을을 모두 합쳐서 가지고 와야할 필요가 있었다.

이 부분의 코드는 Dacon 측에서 제공을 하기는 하였다. pd.read_csv를 이용해서 데이터의 일 부분을 쉽게 가져올 수 있도록 만든 Function이었지만 말 그대로 Baseline이기 때문에 빠른 전처리 차원에서 NA나 문자에 대해서 일방적으로 0으로 바꾸는 부분이 있어서 이후 작업을 하는 과정에서 해당 전처리 부분은 “df.fillna(method = ‘bfill’) ” 등의 형태로 변환하였다. 

아울러 Lable : File = 1:1이 아니었고 매우 Imablance한 형태로 분포되어 있었기 때문에 828개의 파일을 모두 Loading하는 것 대신 Random 함수를 통해서, Label 갯수에 해당하는 198개에 맞춰서 Train File을 읽어왔다. 이 부분은 각 Train내 File의 Label이 정리되어 있는 별도 파일이 제공되어 있기 때문에 가능하였다.

여기까지는 개인 컴퓨터로는 Performance가 나오지 않아서 Google Colab으로 진행하였고, label명의 경우 처음에는 Baseline Code에서 제공된 대로 사용할 경우 index로 최종 File에 Attach되어 있었는데 File을 csv로 내려서 Local로 가지고 오는 과정에서 index가 유실될 수 있기 때문에 별도 Column으로 가지고 올 수 있도록 Baseline code를 수정해서 진행하였다.

Pre-Processing

컬럼이 5200여개가 넘고 하루에 1시간을 내기가 어려웠던 지라 Scikit-learn에서 제공하는 Feature Selection 라이브러리를 활용하였다. 분류였기 때문에 Scaling을 우선 적용한 후 1. Near Zero Variance Column을 제거하고 2. 다른 Model을 통해서 Feature Importance를 계산 후 주요 Feature를 선정해나가는 과정을 거쳤다. (링크)  이렇게 하니 5200개가 넘던 컬럼의 수는 800개 정도로 감소하였다. Code는 다음과 같다.

Feature Engineering

제공되는 Train데이터가 특정 시점의 시계열 데이터였기 때문에 자기상관성이 있을 것이라고 생각해서 이전 Record를 다음 시점의 Lag Column으로 가지고 와서 작업하였다.

Modeling

LGBM을 사용하였고 GridSearch를 통해서 Parameter Tuning을 진행하려고 하였으나 GridSearch가 너무 오래 걸려서 결국 Tuning을 하지 못하였다. 이후에 RandomizedSearchCv이나 BayesianSearchCV를 사용해보려고 했으나 시간상 제대로 진행하지는 못하였다. 

 

Submission 

Submission을 하고 최종적으로 950팀 중 97등을 차지하였다. 등수로만 보면 나쁘지 않은 것처럼 보였으나,  아마도 데이터의 양이 언틋 커보이는 부분 때문에 Loading조차 제대로 하지 못하고 그만둔 사람도 꽤 많았을 것이라 생각된다. 그리고 전체 분석 사이클에서 Scikit-learn의 Function에 크게 의지하였을 뿐 데이터에 대한 이해 없이 Feature Engineering을 진행하지 못하였고 H/W Performance에 의지한 수치로 재현성이 떨어지는 분석 작업이었다는 생각이 든다. 특히 Feature 갯수와 데이터 갯수도 지금 와서 생각해보니 고민을 하지 않았다는 생각이 들어 이 부분은 별도로 고민을 좀 더 해봐야겠다.

그럼에도 간만에 비즈니스에서 발생하는 Adhoc + EDA  분석 + 비전문가 대상 커뮤니케이션보다는 조금 재미가 있었다. 지속해서 참여를 고민해야겠다. -끗-

Site Footer

Sliding Sidebar