이상치 데이터는 클러스터링 결과를 어떻게 왜곡하나?
- 클러스터링 : 비슷한 데이터 포인트들을 그룹으로 묶는 것
- 초등학생이지만 키가 많이 큰 학생이 -> 초등학생 그룹의 키 클러스터링 왜곡!
- 홀로 큰 학생이 -> 자신만의 클러스터 형성 가능!
- 즉, 다른 데이터 포인트들을 크게 벗어나면서 명확하게 그룹을 만들 수 없게 만드는 것!
user_data
는 Z-Score를 통한 이상치 감지 방법 사용feature(특성)
를 -> mean(평균)
, standard deviation(표준 편차)
로 standardization(표준화)
하는 것!표준화?
- 평균 중심 데이터 분포 방법
- 상대적 기준을 갖는 값을 데이터 표준화로 표준정규분포곡선에서 값 비교 가능!
- 이미지 출처 : 도서 '수학의 시작'
- 표준 편차가 낮다 == 데이터 포인트들이 평균 근처에 모여 있다
- 표준 편차가 높다 == 데이터 포인트들이 평균에서 멀리 흩어져 있다 -> 데이터의 분포가 불안정하다는 의미
Z-Score
각 데이터 포인트의 해당 특성 값 - 평균
을 표준 편차
로 나누기정규분포?
- 데이터가 평균 주변에 대칭 분포하는 확률 분포
- 종 모양 곡선
- 평균에 몰려있고, 평균에서 멀어지면 빈도가 줄어듦.
- 표준 정규 분포 : 평균이 0이고 표준편차가 1인 정규 분포!
user_data
불러오기
- pandas 라이브러리 : 데이터 처리 및 분석 라이브러리
- Scipy 라이브러리 : 수치 계산, 최적화, 신호 및 이미지 처리, 선형 대수, 확률 및 통계, 특수 함수 같은 과학 및 수학 연산 수행
- Numpy 라이브러리 : 행렬, 벡터, 배열의 수치 연산 라이브러리
CustomerID
를 제외한 값 정규화 + Z-score 계산
3
으로 설정 == Z-Score가 3을 넘는다면 outlier(이상치)로 간주!
z-score > 3
,z-score < -3
데이터는 극단값이라 이상치!
- 이미지 출처 : 아이펠
-1 ~ 1
사이 값으로 표현!상관관계 절대값 크기가 클수록 -> 두 변수 사이 관계가 더 강하다!
그러나, 이것이 인과관계를 의미하지 ❌
- 한 변수 변화가 다른 변수 변화를 유발하지는 않는다는 것.
회귀 분석 시 사용된 모형 일부 예측 변수가 다른 예측 변수와 상관 정도가 높아서 -> 데이터 분석을 할 때 부정적 영향을 끼치는 현상
회귀 분석 : 독립 변수와 종속 변수 사이 상관관계
2개 이상의 독립변수가 상관관계를 높게 가지고 있을 때 발생!
클러스터링 과정에서 특정 변수들이 -> 결과에 과도하게 영향 끼침!
커머스 회사의 판매 데이터 분석
상관계수 시각화로 다중공선성 문제 살펴보기
total_transactions
와 unique_products
total_transactions
와 unique_products
, user_total
과 item_cnt
purchase_cnt
와 item_cnt
, purchase_cnt
와 user_total
...거리
개념에 가장 크게 의존해 클러스터 형성CustomerID
만 범주형)StandardScaler
불러오기user_data
에 스케일링 적용하기data
생성scaler.fit_transform()
scaler.fit_transform()
- fit(학습) : 데이터 구조 학습, 각 특성 평균 및 표준 편차 계산
- transform(변환) : 학습한 정보를 써서 데이터 변환, 각 특성 값을 평균으로 빼고 표준 편차로 나눔.
이외의 스케일링 클래스
- MinMaxScaler
- 모든 값이 0과 1 사이 위치하도록 데이터 변환
- 특성 최솟값 0, 최대값 1로 설정 -> 사이 값들은 비례 조정
- 데이터 분포가 불균등할 때 사용
- 그림, 이미지 데이터 처리
- RobustScaler
- 데이터 중앙값(median) 및 사분위수(quartiles)를 통한 데이터 스케일링
- 이상치 영향을 덜 받아 이상치 데이터가 많은 경우 용이
- 각 특성 중앙값을 뺀 후, 1사분위수와 3사분위수 IQR(범위)로 나눔.
- Normalizer
- sample을 독립적으로 처리해 샘플 벡터 크기가 1이 되도록 함.
- 방향, 각도만 중요할 때 사용(길이는 중요하지 x)
- 텍스트 데이터, 다차원 시계열 데이터
거리
기반 알고리즘이니 feature가 많으면 유의미한 기저 패턴의 희석 가능성 ⬆️
- 종류 : PCA, ICA, ISOMAP, t-SNE, UMAP 등
- 선형 차원 축소 : PCA
- 비선형 차원 축소 : ISOMAP, LLE, t-SNE
주성분
이라는 새 변수가 생성됨(이 주성분이 원본 데이터 분산을 포착)data
에 대해 학습한 PCA를 활용해 explained_variance_ratio
및 누적분포 계산explained_variance_ratio : 각 주성분이 데이터 분산을 얼마나 포착하는지에 대한 비율
처음 6개 주성분 유지로 데이터 차원 줄이기!
data
를 압축해 6개 특성을 가진 data_pca
생성 & 최종 결과 출력K-Means
K
로 데이터를 클러스터링하는 비지도 학습 알고리즘유의할 부분
데이터에 K-Means 클러스터링 진행
a. 데이터 포인트는 임의 클러스터로 할당
각 클러스터에 속하는 데이터 포인트 개수 계산
가장 큰 클러스터(가장 많은 데이터 포인트)에 새로운 레이블 할당
a. 데이터 포인트 순서대로 정렬 : most_common()
기존 클러스터링 결과에 새로운 레이블 매핑 적용 -> 레이블 할당에 일관성 부여(== 가장 큰 클러스터가 첫번째 그룸 0에 속하도록!)
위의 결과를 3D 시각화하기 위해 plotly
사용!
plotly
설치
시각화
참고 : 이미지 고화질로 다운로드하려면 상단에서 해당 메뉴 이용하기
- VVIP: 15점인 고객
- VIP: 12~14점인 고객
- 골드: 9~11점인 고객
...
describe()
로 각 feature별 데이터 포인트 수 및 평균, 분산 등 정보 확인K-Means 클러스터링 방식의 강점
- 풍부한 데이터 사용
- RFM 요소와 더불어 더 다양하게 고객 속성 고려 가능
- 복잡한 고객 데이터 분석도 용이하게!
- 현업에서는 -> 많은 행동 데이터들을 3가지 기준에만 국한되어 계산하기 어려움.
- 즉, 여러 개의 feature들을 그래도 다 사용할 수 있음!
- 확장성
- 데이터를 그대로 사용함 -> 다양한 유형의 데이터 처리 가능
- 새 feature 추가 및 제거 -> 모델 재사용 가능
- 세밀한 세그멘테이션
- 세밀한 타겟 마케팅 전략 계획 및 효율성도 같이 높아짐.
- 숨겨진 패턴 분석
- 다양한 변수 안에 있는 고객의 행동 패턴 및 선호도를 서치 -> 단순 점수 계산보다 더 딥한 비즈니스 전략 및 인사이트를 제공!
이하얀
시각화 결과
3D 시각화 결과
2D 시각화와 동일하게 뽑은 경우
Group1
Group2
Group3
Group 1 + Group2
Group2 + Group3
Group1 + Group3