2022년 개최된 NH투자증권 빅데이터 경진대회 예선 참가 후 느꼈던 점을 간단하게 정리하고자 합니다. 분석을 마친 뒤 느꼈던 개선 방향을 정리합니다.
이번 경진대회의 예선은 주최 측에서 제공한 고객 및 거래 데이터를 분석하는 대회였습니다. 대회 규정에 의거 데이터 및 데이터 정보에 대한 자세한 사항은 설명할 수 없습니다.
이번 분석에서의 개인적인 목표는 전체 고객들을 한 번에 입력으로 넣어 클러스터링 결과를 도출하는 것이었습니다.
또한, 클러스터링 결과를 타깃으로 하여 트리 기반 알고리즘을 훈련시키고 이를 바탕으로 타깃을 결정하는 데 영향을 준 특성을 확인하고자 하였습니다.
데이터 분석의 흐름은 다음과 같았습니다.
분석에 사용한 사이킷런 클래스는 다음과 같습니다.
위와 같은 과정으로 분석을 다시 실행한다면, 개선할 만한 부분은 다음과 같은 것들이 있을 것입니다.
또한 기준이 되는 간단한 모델을 하나 만들고, 이후 더 복잡한 모델을 만들어 가며 성능을 비교하는 방법을 사용하면 어떤 변화가 성능에 어떻게 기여하는지 더 확실히 알 수 있을 것입니다.
예를 들면, 최소의 전처리 과정만을 거친 후 k-means 모델을 훈련시키는 것입니다. 이후 전처리 및 다양한 과정을 거치며 모델의 성능이 어떻게 변하는지 확인하며 더 좋은 모델을 만들어 나가는 것입니다.
위에서 서술했듯 k-means를 선택한 이유는 클러스터 개수를 조절하며 모델의 inertia 속성을 그래프로 그린 후 적절한 클러스터 개수를 확인하기 위함입니다(엘보우 기법).
또 다른 군집 알고리즘 DBSCAN은 클러스터가 원형임을 가정하지 않는다는 특성이 있어 이번 데이터에 적용해보고 싶었지만, 클러스터 결과를 평가하는 마땅한 방법을 생각하지 못하여 알고리즘을 사용하지 못하였습니다.
만약 DBSCAN 등 다른 알고리즘을 사용해야 한다면, 모델을 훈련시켜 클러스터 결과를 얻고 각 클러스터의 평균을 구해 클러스터에 속한 샘플과 평균과의 거리를 모두 더하는 함수를 정의하여 k-means의 inertia와 비슷한 평가 지표를 만들어야 할 것 같습니다.
하지만 이번 분석에서 클러스터 개수에 따른 inertia를 그래프로 그려 보았을 때, inertia 값이 뚜렷하게 변하는 부분을 찾기 어려웠습니다. StandardScaler 적용 후 KMeans 클래스를 실행하였을 때 클러스터 개수가 30개까지 되어도 inertia 값은 직선에 가까운 형태로 감소하였습니다.
따라서 적절한 군집 개수를 결정하는 합리적인 기준 또한 확실히 정해야 할 것입니다.