[KT AIVLE SCHOOL 3기] 7주차 Mini_Project 2차

류홍규·2023년 3월 29일
0

KT AIVLE SCHOOL 3기

목록 보기
2/4
post-thumbnail

👍 머신러닝을 활용한 악성사이트 탐지 모델 만들기

  • 사이트의 URL 길이와 URL에 존재하는 태그 및 파라미터 개수를 바탕으로 악성사이트인지 정상 사이트인지 분류하는 모델을 프로젝트를 수행하였다.
  • 최대 제출횟수가 20번이었기 때문에 한 명당 제출하는 횟수가 2~3번 꼴이라 아쉬운 부분이 있었다.

🎈 단변량 분석

  • 수치형 변수와 범주형 변수로 나누고 나서, kdeplot과 boxplot을 그려보면서 데이터 분포를 살펴보았다.

    데이터 이상치를 어떻게 처리할 것인가?

    • 개인적으로 이 부분이 가장 어려운 부분이었다.
      1. box plot기준 75%의 값을 확인하고, 그 값보다 튀는 값들은 삭제 해주는 과정을 거쳤다. -> 이 과정은 kaggle score에서 80점을 얻었다.
      2. box plot기준 75%값을 확인하고 중위값을 확인한 뒤, 결측치의 값은 중위값으로 대체했다. -> 이 과정은 kaggle score에서 85점을 얻었다.
      3. box plot외에도 수치형 데이터끼리 연관이 있는 데이터를 파악해, 그 값과 유사한 그래프 분포를 보이면, 이상치는 연관이 있는 데이터에서 해당 분포를 가진 데이터 값으로 대체해주었다. -> 이 과정은 kaggle score에서 90점을 얻었다.

🧨 이변량 분석

  • target값을 수치형 변수로 바꾸어주었다. (0, 1값으로 매핑)
  • 수치형 변수와 수치형 변수는 barplot으로 확인을 해주었다.
  • pearsonr를 활용하여 p-value < 0.5 이하인 값들만 통계적으로 유의미하다고 판단하였다.
  • target값을 범주형 변수로 바라보았다. (악성, 정상)
  • kdeplot과 histplot의 mutiple='fill'속성을 활용하여, 데이터 분포를 시각화하였다.
  • 범주형 변수와 범주형 변수관의 관계는 모자이크 플롯을 활용하여 시각화를 진행하였다.
  • 또한 카이제곱 검정을 통해 통계적으로 유의미한 지 판단하였다.

🎄 머신러닝 모델링

Basic모델, 하이퍼파라미터 튜닝을 진행하였다.
- logistic regression, Random Forest classifier, Xgboost, LightGBM을 Basic model로 활용하였다.
- 각각의 성능을 비교한 결과, lightGBM의 성능이 높게 나온 것을 확인할 수 있었다.
- 이 후, basic model의 성능을 voting하여 voting값을 추출해보니 LightGBM보다 성능이 조금 떨어진 것을 확인할 수 있었다.

  • 이를 바탕으로, GridSearchCV를 활용하여 하이퍼파라미터 튜닝을 시도하였다.
  • learning rate, n_estimators, max_depth, min_child_weight, subsample, colsample_bytree 7개의 파라미터의 범위를 주고 찾는 방식으로 진행하였다.
  • 변수 중요도를 시각화하고 최종 예측 모델 성능 평가 지표 시각화를 진행하였다.

🎨 딥러닝 모델링

  • CNN 모델을 활용하여 예측 모델을 만들어보았다.
  • 정형 딥러닝 모델 중 하나인 Tabnet을 활용하여 예측 모델을 구성해보았다.
    - LightGBM가 거의 동일한 값이 나왔다.

🧵 결과

kaggle aivle school mini project 2차 competition에서 14등을 기록하였다.

배운점

  • 전처리 방법에도, 딥러닝과 머신러닝 알고리즘을 사용할 수 있다는 것을 새롭게 알게 되었다.
  • 머신러닝과 딥러닝 알고리즘을 모델링에만 사용하는 것이 아니라, 데이터를 수집하고 전처리하는 곳에서도 사용할 수 있음을 알게 되었다.
profile
공대생의 코딩 정복기

0개의 댓글