TIL_24.08.29_비지도학습
▶ 지도학습과 비지도학습
1) 지도학습 : 문제(X)와 정답(Y)가 주어지고 문제(X)가 주어졌을 때
정답(Y)을 맞추는 학습
2) 비지도학습 : 답(Y)을 알려주지 않고, 데이터 간 유사성을 이용해서
답(Y)을 맞추는 학습
● 비지도 학습은 데이터를 기반으로 레이블링을 하는 작업
● 정답이 없는 문제이기 때문에 지도 학습보다 조금 어렵고
주관적인 판단이 개입하게 된다.
● 비지도학습 예시
○ 고객 특성에 따른 그룹화
ex) 헤비유저, 일반유저
○ 구매 내역별로 데이터 그룹화
ex) 생필품 구매
● K-means clustering
○ K-means clustering 알고리즘의 단계
1.k개 군집 수 설정
2. 임의의 중심을 선정
3. 해당 중심점과 거리가 가까운 데이터를 그룹화
4. 데이터의 그룹의 무게 중심으로 중심점을 이동
5. 중심점을 이동했기 때문에 다시 거리가 가까운 데이터를 그룹화
(3 ~ 5번 반복)
* 임의로 분석가가 선장한 k군집 수를 기준으로 데이터 군집화
프로세스를 진행
○ 거리 측정 방법
- k-means 알고리즘은 주로 유클리드 거리(Euclidean Distance)를 사용하여
데이터 포인트와 군집 중심 간의 거리를 계산
○ 엘보우 방법
- 최적의 k를 선택하는 데 사용
- k를 증가시키면서 각 k에 대한 군집의 응집도(wcss)를 계산하고,
이를 그래프로 나타내어 그래프에서 응집도가 급격히 감소하는 지점을
찾는다.
● K-Means 장점
- 일반적이고 적용하기 쉬움
● K-Means 단점
- 거리 기반으로 가까움을 측정하기 때문에 차원이 많을수록 정확도가 떨어짐
- 반복 횟수가 많을수록 시간이 느려짐
- 몇 개의 군집(k)을 선정할지 주관적임
- 평균을 이용하기 때문에(중심점) 이상치에 취약함
● Python 라이브러리
○ sklearn.cluster.KMeans
○ 함수 입력 값
- n_cluster : 군집화 갯수
- max_iter : 최대 반복 횟수
○ 메소드
- labels_ : 각 데이터 포인트가 속한 군집 중심점 레이블
- cluster_centers : 각 군집 중심점의 좌표
● 다양한 군집화 평가 지표
* 비지도 학습 특성 상 답이 없기 때문에 평가를 하기 쉽지 않다.
* 군집화가 잘 되어 있다는 거은 다른 군집간의 거리는 떨어져 있고
동일한 군집끼리는 가까이 있다는 거을 의미
1) 내부 평가 지표(Internal Metrics)
● 실루엣 점수 (Silhouette Score) :
- 각 데이터 포인트가 자신의 군집과 얼마나 잘 어울리는지 다른 군집과
얼마나 분리되는지를 평가.
- 점수는 -1에서 1사이의 값을 가지며, 1에 가까울수록 더 나은 군집화를 의미
○ Python 라이브러리
- sklearn.metrics.silhouette_score : 전체 데이터의 실루엣 계수 평균 값 반환
○ 함수 입력 값
- x : 데이터 세트
- labels : 레이블
- metrics : 측정 기준 기본은 euclidean
● 군집 내 E(Sum of Squared Errors) :
- 각 군집의 중심으로부터 데이터 포인트들 간의 거리의 제곱합
- 낮을수록 군집이 잘 형성되었음을 의미
2) 외부 평가 지표(External Metrics)
: 사전에 정의된 레이블이 있을 때 사용하는 지표
● 정확도(Accuacy) : 예측된 군집과 실제 레이블이 일치하는 비율
● ARI(Adjusted Rand Index) :
- 랜덤으로 형성된 군집과 비교하여 실제 군집화가 얼마나 우수한지를
평가하는 지표
- -1에서 1까지의 값을 가지며, 1에 가까울수록 더 나은 군집화를 의미
● DBSCAN
- 밀도 기반 군집화 알고리즘으로, 밀도가 높은 영역을 군집으로 정의
- 노이즈 포인트를 제외할 수 있다는 점에서 K-Means와 차별화됨
from sklearn.cluster import DBSCAN
dbscan = DBSCAN(eps=0.5, min_samples=5)
dbscan.fit(X)
* 그 외에도 다양한 비지도 학습 알고리즘들이 있으니
적용하고 싶은 알고리즘이 있다면 찾아보기!!!