요즘은 실제 개발보다는 알고리즘 공부에 더 힘을 실었었다. 백준이랑 프로그래머스 문제 풀이를 틈틈히 했는데, 브론즈 문제도 힘들어했던 내가 실버를 풀고 골드V 문제들도 몇 개는 풀 수 있는 실력이 되어 매우 뿌듯하다.

그러다보니 최근에 ML 공부에 소홀해진 것 같아서 간만에 Kaggle에 들어가서 dataset 하나 붙들고 열심히 풀어보았다. Kaggle은 일종의 ‘ML(머신러닝) 분야의 백준` 느낌인데, 다양한 데이터셋을 제공하고 Competition을 통해 경쟁을 붙이는 특징을 가진다. 여기에서는 0.0001단위의 개선도 중요하기에 특정 데이터를 분석하기 위한 좋은 모델들이 개발되고, 그 과정에서 머신러닝 생태계가 더욱 확장된다.

간만에 복귀한 만큼 너무 어렵지 않은 비교적 간단한 dataset을 가진 Kaggle의 Playground Prediction Competition에 참가했다. Playground Series Competition들은 실제와 가까우면서도 비교적 깔끔한 데이터들을 제공하는게 특징인데, 머신러닝에 입문한지 오래되지 않은 입문자들에게는 좋은 자료가 된다. (타이타닉이나 주택가격 예측은 너무 많이 반복해서 다뤄서 이젠 질려…)

Regression으로 풀어내야하는 문제인 만큼 다양한 모델들을 떠올렸는데, 기본 선형 회귀인 LinearRegression 각종 규제들을 추가한 Ridge Lasso ElasticNet 그 외에 다른 Linear model들인 ARDRegression BayesianRidge 그리고 Kaggle에서 유명한 RandomForestRegressorXGBRegressor을 활용했다. 각 모델별로 train데이터를 가지고 예측 score을 평가하고 비교해서 가장 최적의 모델을 선정했다.

Data 분석 과정은 다음과 같다.

  1. Data Importing
  2. Data Visualization
  3. Data Preprocessing
  4. Prediction & Model Selection
  5. Evaluation
  6. Fine-Tune & Optimization
  7. Submission

Fine-Tune & Optimization 과정에서 아무래도 산술 과정이 많아지다보니 Kaggle에서 기본적으로 제공하는 Jupyter Notebook으로는 CPU가 딸려서 시간이 오래 걸리더라. 얼렁 사지방을 벗어나서 개인 컴퓨터로 데이터를 왕창 돌리고 싶다. 너무 답답햇…

리더보드 상에서 나의 위치를 확인할 수 있다. 현재는 646등/878명의 성적을 가지고 있는데, 점수를 더 향상시키기 위해서는 가지고 있는 모델을 Finetuning 해주는게 필요해 보인다. 대회 마감까지 5일정도 남았으니까 이번 주말 이용해서 XGBRegression fine-tuning으로 내 예측을 개선해봐야겠다.

(23.06.08 추가) Fine Tuning으로 1.42510이었던 점수를 1.38580까지 끌어올렸다. 2.76%의 향상인데 이정도만 해도 순위가 150계단 정도 올라간다. 꾸준히 parameter을 변경해가며 점수를 개선해봐야지.

실제 Competition에 참여함으로써 드디어 **Novice** 티어에서 **Contributer** 티어로 올라섰다. Kaggle의 티어 제도에 대해서는 링크 참조! 티어가 중요한건 아니지만 그래도 머신러닝 커뮤니티에서 한 발짝 더 나아갔다는 점에서 의미있다고 생각한다. 꾸준히 실력을 쌓아서 실제 상금이 걸려있는 Competition에도 도전해봐야지!! 머신러닝 basic을 공부하자마자 competition에 도전했다가 깨갱 물러섰던 기억이 있는데 (ㅋㅋ) 경험치가 쌓이면 그것도 풀어낼 수 있지 않을까라는 기대를 해본다.