데이터사이언스 기록기📚

[삼성 SDS Brightics 서포터즈] #05_개인 프로젝트(1) 고객 성격 분석_데이터 전처리(2), 모델링, 분석 본문

대외활동/삼성SDS Brightics 서포터즈

[삼성 SDS Brightics 서포터즈] #05_개인 프로젝트(1) 고객 성격 분석_데이터 전처리(2), 모델링, 분석

syunze 2022. 7. 12. 15:29

안녕하세요!

 

저번 포스팅에 이어서

고객 성격 분석 데이터로 군집화 분석을 진행해보겠습니다!

 

3주간 이어졌던 대장정이 이제 끝나가네요.

지난 포스팅이 궁금하신 분들은 아래 주소를 클릭해주세요!

 

2022.06.28 - [대외활동/삼성SDS Brightics 서포터즈] - [삼성 SDS Brightics 서포터즈] #03_개인 프로젝트(1) 고객 성격 분석_데이터 구성, 데이터 로드, 통계량 확인

 

[삼성 SDS Brightics 서포터즈] #03_개인 프로젝트(1) 고객 성격 분석_데이터 구성, 데이터 로드, 통계

안녕하세요~! 이번 포스팅은 개인 분석 프로젝트로, 평소에 분석해보고 싶은 데이터를 이용하여 분석을 진행해보았습니다. 목차는 다음과 같습니다. 그럼 지금부터 Brightics Studio를 활용한 프로

subinze.tistory.com

2022.07.05 - [대외활동/삼성SDS Brightics 서포터즈] - [삼성 SDS Brightics 서포터즈] #04_개인 프로젝트(1) 고객 성격분석_데이터 전처리

 

[삼성 SDS Brightics 서포터즈] #04_개인 프로젝트(1) 고객 성격분석_데이터 전처리

안녕하세요! 저번 포스팅에 이어서, 고객 성격 분석 데이터를 통해 데이터 분석을 진행해보겠습니다! 지난 포스팅이 궁금하신 분들은 아래 주소를 클릭해주세요! 2022.06.28 - [대외활동/삼성SDS Brig

subinze.tistory.com

지난 포스팅은 데이터 전처리에 대해서 포스팅했습니다.

 

이번에 모델링을 하다보니 다양한 시도가 필요해서 

이번 포스팅은 '데이터 전처리(보충)와 모델링 및 분석'을 진행해보겠습니다!

 

목차는 다음과 같습니다.

목차

 

시작하기에 앞서, 최종 로드맵을 보여드리겠습니다!

 

파란색 부분은 지난 포스팅에서 부족한 부분을 바꾼 곳,

빨간색 부분은 새로 진행한 부분입니다.

 

클러스터링을 사용하기 전에 

'인코더를 나누어서 비교해보면 어떨까?'라는 생각에서 시작하여

① One Hot Encoder를 이용 → PCA  → K-means 클러스터링

② Label Encoder를 이용 → PCA  → K-means 클러스터링

으로 나누어서 진행하였습니다.

 

자 이제 본격적으로 시작해볼까요?!

 


1. One Hot Encoder 이용

1) Normalization

 

One Hot Encoding은 이전 포스팅과 동일하게 진행하고

Normalization을 수정하였습니다!

원래 있던 칼럼 중

Year_Birth, Start_Year만 제외하고

모두 정규화시켰습니다.

 

또한 칼럼 중 0,1로 이분화 되어있는 내용이 있어

이를 유지하기 위해

MinMaxScaler를 사용하였습니다.

 

왼쪽과 오른쪽을 통해 

이분화가 유지되었고,

모든 값들이 0과 1사이의 값으로 구성되는 것을 확인할 수 있습니다!


2) PCA

 

PCA주성분 분석이라고도 불리며

어떤 데이터들의 집합에서 가장 크게 해당 데이터를 구분 짓는 요소를 찾기 위한 분석법입니다.

 

저는 PCA를 이용하여 K-means에서 이용할

칼럼들을 선택하였습니다.

 

 

① Normalization한 모든 칼럼 선택

 

들어가기 이전에, PCA 그래프에 대해 간단히 설명드리자면

 

칼럼들은 2개의 성분인 Projected_0과 Projected_1으로 나뉩니다.

Projected_0과 관련된 칼럼들은 수평에 가깝게 표현이 됩니다.

 

또한 해당 성분에 숫자가 높을 수록 관련되어있는 값들이 많다는 의미입니다.

 

자세한 설명은 해당 블로그를 참조하세요 !

https://statssy.github.io/data/2019/08/30/PCA_Study_2/

 

[데이터분석 필기] 차원 축소 - PCA, 주성분 분석 코드 (2)

저번에 공부한 PCA를 이번에는 파이썬 코드로 풀어보겠다.

statssy.github.io

 

모든 칼럼을 선택해 보았더니

Projected_0에 대한 값이 높았습니다.

 

그래서 저는 Projected_1과 관련 있는 Education 관련 칼럼들을 지우고

다시 PCA를 진행해보았습니다.

 

② Education 관련 칼럼 삭제

 

Education 관련 항목 삭제 후 나타난 PCA입니다.

 

projected_0에 대한 값이 이전에 비해

조금씩 높아지는 것을 확인할 수 있습니다.

 

그래서 저는 Projected_1과 관련있는 Marital_Status관련 칼럼들을 지우고

다시 PCA를 진행해보았습니다.

 

③ Marital_Status관련 칼럼 삭제, Accepted 관련 칼럼 삭제

왼: Marital_Status 삭제 / 오: Accepted 삭제

pojected_0의 값을 높이기 위해 

여러 개의 칼럼을 제외하고 PCA를 진행하였습니다.

 

Marital_Status 관련 칼럼 삭제, Accepted 관련 칼럼 삭제를 진행하고

마지막 PCA를 진행하였습니다.

 

 

④ Teenhome, Chlidren_count 칼럼 삭제

 

마지막으로, 

이전 칼럼에서 크게 보였던 Teenhome과 Childrent_count 칼럼을 제외하였습니다.

 

PCA 첫 번째 진행할 때보다

projected_0 값이 

0.1651에서 0.4798로 많이 높아진 것을 확인할 수 있습니다.


3) K-Means(Silhouette)

 

적절한 클러스터링 개수를 파악하기 위해 K-Means(Silhouette)를 사용하였습니다.

 

우측 하단의 Model을 통해

적절한 클러스터링 개수를 알려주는 그래프와 분포를 확인할 수 있습니다!

 

2개의 클러스터링 개수가 적합하다고 확인되고 있으며

2개의 그룹으로 나눌 때 어떻게 나누어지는지 Scatter Plot으로 확인할 수 있습니다!

 


4) 분석 및 특징

0,1로 나뉘어진 비율

0 그룹, 1그룹으로 나누어지는 비율은

0 그룹 - 54.7%

1그룹 - 45.3% 

로 구성되어있습니다.

 

왼 : Income / 오 : Spending

Income은 

0그룹은 수입이 낮은 편,

1그룹은 수입이 고루 분배되어있지만 수입이 큰 편이며

 

Spending은

0그룹은 지출이 낮은 편,

1그룹은 지출이 고루 분배되어있지만 지출이 큰 편입니다.

구매

Purchases는

0그룹은 구매가 적은 편,

1그룹은 구매가 큰 편입니다.

 

Income, Spending, Purchases는 모두 관계가 있으며

Purchases는 Income, Spending과 유사한 형태를 보입니다.

 

Accepted_Campaigns

Accepted_Campaigns은

0그룹은 1,2,3차에 대부분 캠페인을 수용하고

1그룹은 3,4,5차에 캠페인을 수용하였습니다.

 


2. Label Encoder 사용

1) Label Encoder 이용

먼저

문자형인 Education, Marital_Status를

Label Encoder를 이용하여 라벨링 합니다.

 

위의 사진을 통해 문자가

각각의 라벨로 인코딩 된 것을 확인할 수 있습니다.


2) Normalization

Label Encoder 방식에서는

Normalization(정규화)를 StandardScaler로 진행하였습니다.

 

One Hot Encoder와 다르게

0,1로 범주화된 카테고리가 없어

StandardScaler를 이용하였습니다.


3) PCA

 

① Normalization 한 모든 칼럼 선택

 

 

모든 칼럼을 선택해 보았더니

Projected_0에 대한 값이 높았습니다.

 

그래서 저는 Projected_1과 관련 있는 초록색 값들을 지우고

다시 PCA를 진행해보았습니다.

 

 

② Accepted 관련 칼럼 삭제

Accepted와 관련된 칼럼(AcceptedCmp1, AcceptedCmp2, AcceptedCmp3, AcceptedCmp4, AcceptedCmp5, Response)

를 제거하고 PCA를 진행해보았더니 

Projected_0에 대한 값이 높았습니다.

 

그래서 저는 Projected_1과 관련 있는 초록색 값들을 지우고

이후 단계인 K-Means 클러스터링을 진행하였습니다.

 


4) K-Means(Silhouette)

One Hot Encoder와 동일하게

2개의 클러스터링 개수가 적합하다고 확인되고 있으며

2개의 그룹으로 나눌 때 어떻게 나누어지는지 Scatter Plot으로 확인할 수 있습니다!

 

클러스터링 개수는 동일하지만

다른 인코더를 사용하여서 나뉜 분포는 다르게 형성되었습니다!


5) 분석 및 특징

0 그룹, 1그룹으로 나누어지는 비율은

0그룹 - 58.6%

1그룹 - 41.4% 

로 구성되어있습니다.

왼 : Income / 오 : Spending

Income은 

0그룹이 대체적으로 소득이 적고

1그룹이 전반적으로 모두 있지만, 소득이 더 많은 편입니다.

 

Spending은

0그룹의 소비가 적고

1그룹이 전반적으로 모두 있지만, 소비도 많은 편입니다.

 

Purchases도 Income, Spending과 비슷한 양상을 보이고 있습니다.

 

Accepted_Campaigns은

0그룹은 비교적 1,2차에 캠페인을 수용하고

1그룹은 후반부에 캠페인을 수용하였습니다.

 

아이들 수는

0그룹이 아이들 수가 고루 분포되어 있고

1그룹은 적은 수의 아이들이 있다는 것을 확인할 수 있었습니다.

 


One Hot Encoder를 이용한 클러스터링과

Labele Encoder를 이용한 클러스터링을 비교해보면

 

Label Encoder를 이용한 클러스터링이

실루엣 계수가 더 높았으며

좀 더 분명하게 구분되는 특징을 알 수 있었습니다!


드디어 개인 프로젝트의 대장정을 마쳤습니다!

 

흥미로운 데이터셋이었지만

비지도 학습을 이용하여 조금 헤매게 된 것도 있는 것 같습니다ㅠㅠ

 

다음 서포터즈 활동에서는 더 많은 것을 공부하여 프로젝트를 진행해보겠습니다.  

앞으로의 서포터즈 활동도 기대해주세요!

 

* 본 포스팅은 삼성 SDS Brightics 서포터즈 3기 활동의 일환으로 작성하였습니다 *

728x90
Comments