무냐의 개발일지

[2/19] 전설의 포켓몬 예측하기!! (완전 신나게 한 프로젝트 ㅎㅎ) 본문

Data Scientist Bootcamp

[2/19] 전설의 포켓몬 예측하기!! (완전 신나게 한 프로젝트 ㅎㅎ)

무냐코드 2024. 2. 19. 16:02

 

 

Project : 다른 머신러닝 모델로 성능 높이기

  • classification 문제에 쓸 수 있는 머신러닝 모델에는 다음이 있다
    • DecisionTree
    • RandomForest : 여러개의 의사결정 트리를 앙상블 (결과를 결합해 성능향상/ 고차원 & 대용량 데이터에 적합)
    • Gradient Boosting : 약한 예측모델(의사결정트리)을 연속 학습하면서 오차 보강해 강한 모델을 만듦 (학습시간이 길다)
    • SVM (Support Vector Machine) : 데이터의 클래스를 분리하는 초평면을 찾는다
    • Logistic Regression : 경사하강법 등 최적화 알고리즘을 사용해 모델 학습
    • K-Nearest Neighbors (KNN) : 주어진 데이터포인트와 가장 가까운 이웃데이터 클래스 기준으로 분류 (간단, 유연)
    • Naive Bayes : 입력특성들 사이 독립 가정을 사용해 클래스를 예측 (텍스트 등 특성이 희소한 고차원데이터에 효과적)
    • Neural Networks : 입력층,은닉층,출력층으로 구성되며, 다중 퍼셉트론(MLP)은 분류문제에 사용, 복잡한 패턴 학습 가능
  • 하이퍼파라미터까지 적용해줘서 모델별 성능을 비교해보도록 한다

 

 회고

  • 잘한 점 : 노드에 나와있는 코드를 스스로 이해하기 쉽고 간결하고 변형을 해서 진행했고, 내가 기존에 헷갈렸던 머신러닝 프로세스를 한 단계씩 밟아나가면서 절차를 확실히 익혔다. for문을 적극 활용하였으며, corr, barplot등 시각화를 통해 분석 결과를 보기 쉽게 출력하였다. 특정 단어가 들어가있는 이름을 분석할 때, 위에서 확인했던 '#'값을 활용하여 좀 더 창의적으로 문제를 해결하려고 시도했다. 그리고 실제로 노가다로 열을 지정했던 노드의 코드에 비해 더 정확한 값을 출력해냈다!!
  • 부족한 점 : 하이퍼파라미터와 교차검증에 대한 개념을 좀 더 익혀야겠다. 하이퍼파라미터는 best_params를 통해 최적 파라미터 찾는 법을 연습해야할 거 같고, 교차검증은 train_test_split으로 validation을 통해 모델을 검증하는 거 외에도 한 번 더 Kfold로 나눠서 다시 진행을 하는건지 조금 헷갈린다.
  • 제대로 알게된 점 : Regression(회귀), Classification(분류) 모델은 각각 다른 평가지표를 사용한다. 여기서 확실히 짚고 넘어가자. 회귀문제에서는 연속형 target 변수의 값을 예측하므로, 오차의 크기를 측정하는 지표가 중요하다. 하지만, 분류문제에서는 Class Label을 예측하므로, 분류의 정확성과 관련된 지표가 중요하다는 점!
- Regression (회귀)
    - MAE, MSE, RMSE, RMSLE, R2
- Classification (분류)
    - Accuracy, Precision, Recall, F1, ROC-AUC
  • 느낀 점 : 캐글 필사랑 코세라 강의수강을 통해 배운 개념들과 코드들도 프로젝트에 적용해보면서 더 개념이 명확해지는 느낌이 든다. 역시 이론보다는 실전이지만, 실전과 이론은 병행돼야 더 잘 이해가 된다. 머릿속에 들어오는 게 많아서, 그걸 좀 체계적으로 정리하고 싶었는데, 프로젝트를 하면서 정리할 수 있는 시간을 가질 수 있어서 좋다. 그리고 무엇보다도 처음부터 끝까지 내 손으로 Raw 데이터를 예쁘게 시각화하고 분석하는 게 기분이 좋다! EDA를 할 때는 열이 너무 많으면 좀 압도당하는 기분이겠으나, 이 데이터셋에서는 모든 열을 거쳐서 하나하나 분석하는 과정이 재미있게 느껴졌다.