일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 캐글
- 포스코 아카데미
- 혼공학습단
- 데이터 분석
- 삼성SDS Brigthics
- Brigthics를 이용한 분석
- 혼공머신러닝딥러닝
- Brigthics
- 혼공
- 추천시스템
- Brigthics Studio
- 브라이틱스 서포터즈
- 포스코 청년
- 직원 이직률
- 모델링
- 브라이틱스
- 삼성 SDS Brigthics
- 노코드AI
- Brightics
- 영상제작기
- 데이터분석
- 직원 이직여부
- 삼성 SDS
- 개인 의료비 예측
- 팀 분석
- Brightics Studio
- 혼공머신
- 삼성SDS Brightics
- 삼성SDS
- Brightics를 이용한 분석
- Today
- Total
데이터사이언스 기록기📚
[삼성 SDS Brightics 서포터즈] #05_개인 프로젝트(1) 고객 성격 분석_데이터 전처리(2), 모델링, 분석 본문
[삼성 SDS Brightics 서포터즈] #05_개인 프로젝트(1) 고객 성격 분석_데이터 전처리(2), 모델링, 분석
syunze 2022. 7. 12. 15:29안녕하세요!
저번 포스팅에 이어서
고객 성격 분석 데이터로 군집화 분석을 진행해보겠습니다!
3주간 이어졌던 대장정이 이제 끝나가네요.
지난 포스팅이 궁금하신 분들은 아래 주소를 클릭해주세요!
2022.07.05 - [대외활동/삼성SDS Brightics 서포터즈] - [삼성 SDS Brightics 서포터즈] #04_개인 프로젝트(1) 고객 성격분석_데이터 전처리
지난 포스팅은 데이터 전처리에 대해서 포스팅했습니다.
이번에 모델링을 하다보니 다양한 시도가 필요해서
이번 포스팅은 '데이터 전처리(보충)와 모델링 및 분석'을 진행해보겠습니다!
목차는 다음과 같습니다.
시작하기에 앞서, 최종 로드맵을 보여드리겠습니다!
파란색 부분은 지난 포스팅에서 부족한 부분을 바꾼 곳,
빨간색 부분은 새로 진행한 부분입니다.
클러스터링을 사용하기 전에
'인코더를 나누어서 비교해보면 어떨까?'라는 생각에서 시작하여
① 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/
모든 칼럼을 선택해 보았더니
Projected_0에 대한 값이 높았습니다.
그래서 저는 Projected_1과 관련 있는 Education 관련 칼럼들을 지우고
다시 PCA를 진행해보았습니다.
② Education 관련 칼럼 삭제
Education 관련 항목 삭제 후 나타난 PCA입니다.
projected_0에 대한 값이 이전에 비해
조금씩 높아지는 것을 확인할 수 있습니다.
그래서 저는 Projected_1과 관련있는 Marital_Status관련 칼럼들을 지우고
다시 PCA를 진행해보았습니다.
③ 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 그룹 - 54.7%
1그룹 - 45.3%
로 구성되어있습니다.
Income은
0그룹은 수입이 낮은 편,
1그룹은 수입이 고루 분배되어있지만 수입이 큰 편이며
Spending은
0그룹은 지출이 낮은 편,
1그룹은 지출이 고루 분배되어있지만 지출이 큰 편입니다.
Purchases는
0그룹은 구매가 적은 편,
1그룹은 구매가 큰 편입니다.
Income, Spending, Purchases는 모두 관계가 있으며
Purchases는 Income, Spending과 유사한 형태를 보입니다.
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은
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기 활동의 일환으로 작성하였습니다 *
'대외활동 > 삼성SDS Brightics 서포터즈' 카테고리의 다른 글
[삼성 SDS Brightics 서포터즈] #07_팀 프로젝트_개인 의료비 예측(2) (0) | 2022.08.23 |
---|---|
[삼성 SDS Brightics 서포터즈] #06_팀 프로젝트_개인 의료비 예측(1) (0) | 2022.08.16 |
[삼성 SDS Brightics 서포터즈] #04_개인 프로젝트(1) 고객 성격분석_데이터 전처리 (0) | 2022.07.05 |
[삼성 SDS Brightics 서포터즈] #03_개인 프로젝트(1) 고객 성격 분석_데이터 구성, 데이터 로드, 통계량 확인 (0) | 2022.06.28 |
[삼성SDS Brigthics 서포터즈] #02_Brightics 서포터즈 발대식에 참석하다! (0) | 2022.06.27 |