
하잉-
오늘은 두 번째로 해보고 싶었던 분석인 군집분석을 진행해 보려 합니다. 먼저 군집분석이 무엇인지 알아보도록 할게요.

*지난번에 사용했던 자료를 다시 끌고 왔어요!
군집분석
은 머신러닝의 종류 중 하나인 비지도 학습(정답이 주어지는 학습)의 일종이며, 유사한 객체를 모아 군집을 만드는 기법이에요. 군집분석은 크게 계층적 군집분석과 비계층적 군집분석으로 나눌 수 있습니다.
계층적 군집분석 : 유사한 객체를 순차적으로 묶어감
비계층적 군집분석 : 다양한 척도로 최적화된 군집 기준을 찾아 객체를 묶음
현재 국내 다수 기업에서 마케팅을 목적으로 적용하고 있다고 합니다.
k-means clustering
k-means clustering은 가장 대표적인 비계층적 군집분석입니다. 군집의 중심과 거리가 가까운 객체들을 묶어 군집을 만들어 갑니다. 알고리즘이 단순하여 다량의 데이터에도 속도가 빠르고 전반적으로 안정적인 군집 결과를 보이는 것이 특징입니다.
그럼 바로 시작해 볼게요.
*참고로 오늘 포스팅은 특별한 분석 시나리오가 있다기 보다, k-means 분석을 진행하는 플로우 자체에 초점을 맞춰 진행할 예정입니다!
개요
선정 데이터
IMDB_movies_rating_details → kaggle에서 데이터셋 확보
목표
영화 데이터 중 러닝타임, 평점 두 가지를 기준으로 데이터 군집화하기
분석 과정

데이터 로드
먼저 원본 파일에서 ',' 문자를 제거해 준 뒤 데이터를 로드해 줍니다. (전체 셀 속성 이용)
로드 함수를 이용했고, 추가적인 오류 없이 로드가 완료되었습니다.
데이터 정제

깨끗한 데이터를 만들기 위해 기본적인 정보를 살펴보았어요. 결측값이 나왔네요. 제거할까 고민하다 행 개수가 1,000개밖에 안되기도 하고, 사용하는 변수에 해당되지 않아 대신 평균 값으로 채우기로 결정!


Input columns에는 null 값이 있었던 year, metascore을 설정했고,
Fill Value는 평균으로 선택해 줬어요.


객체 사이의 거리가 중요한 분석이기 때문에 너무 동떨어진 데이터를 제거하기 위해 outlier detection을 사용했습니다.
Result는 Remove Outliers로 설정해 바로 out시켜주었습니다.
K-means 군집분석

다음은 normalization을 이용하겠습니다. 이 함수는 다른 척도에서 측정된 값을 개념적으로 공통적인 척도로 조정해 줍니다.
그리고 normalization type(정규화 유형) 파라미터를 StandardScaler로 설정해 주었습니다. 각 설정값에 대한 설명은 아래 그림으로 첨부할게요.



최적의 군집 개수를 결정하기 위해서 군집의 수를 2개에서 6개까지 변화시켜가며 k-means를 수행합니다.
이를 위해 Number of Clusters Set를 설정해야 하는데요, 저는 가장 적은 군집 개수 2부터 6까지 입력하여 총 다섯 번의 군집 분석을 수행하게 설정해 주었습니다.

결과 2개의 군집을 형성했을 때 실루엣 계수의 평균이 가장 높게 나타나고 있는 걸로 보아 최적의 군집화 개수는 2개라고 할 수 있겠습니다.
*실루엣 지표
군집이 잘 나누어져 있는지 확인할 수 있는 지표
1에 가까울수록 군집의 개수가 최적화된 것,
군집끼리 잘 나누어져 있지 않으면 실루엣 지표 값은 낮아짐


최적의 군집 2개로 나누어진 결과와 다음으로 실루엣 계수의 평균이 높았던 군집 6개로 나눈 모습입니다.
마무리


간단하게 막대 차트 그리고 파이 차트를 살펴보면, 군집 0보다 군집 1이 더 많은 비율을 차지하고 있음을 알 수 있습니다.
*군집0 러닝타임이 길고 평점이 고르게 분포함
*군집1 러닝타임이 짧고 평점이 고르게 분포함
그리고 분석을 진행하면서 느낀 건데,
더 나은 결과를 위해 순간순간 선택하는 게
은근.. 재밌는 것 같아요.
그치만 결과가 어떻게 나올지 모르니 부담스럽기도해요.
후후.
오늘은 이렇게 분석을 마쳐보도록 하겠습니다.
보기에는 간단해 보이지만 사실
분석을 마치기까지 폼이 꽤 들었었는데요.
이걸 바탕으로 다음에는 업그레이드된 분석으로
인사이트 도출까지 할 수 있었으면 좋겠다는 바램으로
마무리하겠습니다.
그럼 빠잉-
'삼성 SDS Brightics 서포터즈 3기' 카테고리의 다른 글
[Brightics 서포터즈] 팀 분석 프로젝트 (2편) (1) | 2022.08.23 |
---|---|
[Brightics 서포터즈] 팀 분석 프로젝트 (1편) (0) | 2022.08.16 |
[Brightics studio] 발 사이즈로 키 예측하기 _ 개인분석(2) (0) | 2022.07.05 |
[Brightics studio] 브라이틱스로 인기 쇼핑물 시장 변화 살펴보기 _ 개인분석(1) (0) | 2022.06.28 |
[Brightics 서포터즈] 3기 발대식 다녀왔어요! (0) | 2022.06.26 |