NH투자증권 빅데이터 경진대회 예선 후기

KYYLE·2022년 10월 20일
0

일상

목록 보기
2/6
post-thumbnail

2022년 개최된 NH투자증권 빅데이터 경진대회 예선 참가 후 느꼈던 점을 간단하게 정리하고자 합니다. 분석을 마친 뒤 느꼈던 개선 방향을 정리합니다.

대회 간단 개요

이번 경진대회의 예선은 주최 측에서 제공한 고객 및 거래 데이터를 분석하는 대회였습니다. 대회 규정에 의거 데이터 및 데이터 정보에 대한 자세한 사항은 설명할 수 없습니다.

분석 과정

이번 분석에서의 개인적인 목표는 전체 고객들을 한 번에 입력으로 넣어 클러스터링 결과를 도출하는 것이었습니다.

또한, 클러스터링 결과를 타깃으로 하여 트리 기반 알고리즘을 훈련시키고 이를 바탕으로 타깃을 결정하는 데 영향을 준 특성을 확인하고자 하였습니다.

데이터 분석의 흐름은 다음과 같았습니다.

  1. 데이터 전처리 및 스케일링
  2. 군집 알고리즘 적용
  3. 군집 결과를 바탕으로 트리 기반 모델 훈련
  4. 트리 기반 모델의 특성 중요도(feature importances) 확인
  5. 결정 트리 모델 훈련 후 트리 시각화

분석에 사용한 사이킷런 클래스는 다음과 같습니다.

  • 스케일링 : StandardScaler
  • 군집 알고리즘 : KMeans
  • 트리 기반 모델 : RandomForest
  • 결정 트리 모델 : DecisionTreeClassifier

개선 방향

위와 같은 과정으로 분석을 다시 실행한다면, 개선할 만한 부분은 다음과 같은 것들이 있을 것입니다.

  1. 적절한 데이터 전처리, 새로운 특징값 생성
  2. 결측치를 채울 때 0이 아닌 대안
  3. 데이터 스케일링 시 StandardScaler 외의 다른 클래스 사용
    • RobustScaler를 사용하였을 때는 전체의 95% 이상이 한 클러스터에 모이는 극단적인 결과가 나타났습니다. minmaxscaler나 다양한 방법을 통해 데이터를 스케일링할 수 있을 것입니다.
  4. KMeans가 아닌 다른 군집 알고리즘(DBSCAN 등) 적용. k-means를 사용한 이유는 inertia 값을 제공하기 때문에 이를 바탕으로 적절한 클러스터 개수를 구할 수 있을 것이라 예상했기 때문입니다. 클러스터 결과를 평가할 수 있는 적절한 손실 함수를 만들면 다양한 군집 알고리즘 적용할 수 있을 것입니다.
  5. 특성 중요도 계산 시 랜덤 포레스트가 아닌 xgboost, lightgbm 등 적용
  6. 트리 기반 알고리즘의 과대적합 억제

또한 기준이 되는 간단한 모델을 하나 만들고, 이후 더 복잡한 모델을 만들어 가며 성능을 비교하는 방법을 사용하면 어떤 변화가 성능에 어떻게 기여하는지 더 확실히 알 수 있을 것입니다.

예를 들면, 최소의 전처리 과정만을 거친 후 k-means 모델을 훈련시키는 것입니다. 이후 전처리 및 다양한 과정을 거치며 모델의 성능이 어떻게 변하는지 확인하며 더 좋은 모델을 만들어 나가는 것입니다.

위에서 서술했듯 k-means를 선택한 이유는 클러스터 개수를 조절하며 모델의 inertia 속성을 그래프로 그린 후 적절한 클러스터 개수를 확인하기 위함입니다(엘보우 기법).

또 다른 군집 알고리즘 DBSCAN은 클러스터가 원형임을 가정하지 않는다는 특성이 있어 이번 데이터에 적용해보고 싶었지만, 클러스터 결과를 평가하는 마땅한 방법을 생각하지 못하여 알고리즘을 사용하지 못하였습니다.

만약 DBSCAN 등 다른 알고리즘을 사용해야 한다면, 모델을 훈련시켜 클러스터 결과를 얻고 각 클러스터의 평균을 구해 클러스터에 속한 샘플과 평균과의 거리를 모두 더하는 함수를 정의하여 k-means의 inertia와 비슷한 평가 지표를 만들어야 할 것 같습니다.

하지만 이번 분석에서 클러스터 개수에 따른 inertia를 그래프로 그려 보았을 때, inertia 값이 뚜렷하게 변하는 부분을 찾기 어려웠습니다. StandardScaler 적용 후 KMeans 클래스를 실행하였을 때 클러스터 개수가 30개까지 되어도 inertia 값은 직선에 가까운 형태로 감소하였습니다.

  • RobustScaler 적용 후 KMeans 클래스를 실행하면 inertia 값이 꺾이는 부분이 확실히 관찰됩니다. 하지만 위에서 서술했듯 군집 결과는 95% 이상의 샘플이 하나의 클러스터에만 할당되는 의미 없는 군집 결과가 나타났습니다.

따라서 적절한 군집 개수를 결정하는 합리적인 기준 또한 확실히 정해야 할 것입니다.

profile
머신러닝 공부하는 대학생입니다

0개의 댓글