ㅁ 들어가기 Show ㅁ 군집화 알고리즘 종류 ㅁ 군집 평가 ㅁ 군집화 알고리즘 - Kmeans ㅁ 군집화 알고리즘 - DBSCAN ㅁ 들어가기우리가 트럼프 카드를 군집을 만들 때 군집의 수를 과연 둘로 하는 것이 좋을까, 넷으로 하는 게 좋을까? 색깔로 하면 두 개가 될 것이고, 우리가 모양으로 하면 네 개로 나눌 수 있는데, 어떤 것이 좋다는 정답이 존재하는 것은 아니다! 군집화에 가장 직관적인 예시는 MBTI라고 볼 수 있다. 다수개의 질문을 통해 인간의 성격을 16가지로 군집을 지어 놓은 것이다. 각 군집마다 네이밍을 하고(ex. 세상의 소금형) 그 특징을 설명하고 있다. 우리가 MBTI를 하면서 본인의성격유형을 파악하고, 공감을 하고 재밌어 한다. MBTI별 기도문짤 하지만 여기서 끝나지 않는다. 이성에게 호감을 갖는 방법, 상사와 즐겁게 회사생활을 할 수 있는 방법을 알아내고, 활용한다. 이와 같이 군집화는 특정 목적을 위해 군집의 유형을 나누고 -> 정의하고 -> 특징을 요약하여 -> 활용하게 된다. 어찌보면 군집화의 알고리즘을 배우는것 보다 "군집의 유형을 나누고 -> 정의하고 -> 특징을 요약하여 -> 활용"을 고민 하는것이 군집화의 핵심이라고 생각한다. (데이터사이언티스트의 역량이 중요한 분석이다) 성격유형은 MBTI만 있진 않다. 다른 여러가지 성격유형검사가 있으며, 군집이 있다. MBTI가 절대적으로 맞다/틀리다라고 이야기 할 수 없듯이 군집화 결과도 절대적으로 맞다/틀리다를 규정지을 수 없다. 즉, 절대적인 기준이 존재하지 않는다. 즉, 어떤 군집화가 가장 좋은 군집화인가? 라고 물어본다면, 군집을 만든 후 '인사이트를 얻고, 잘 활용할 수 있는'이라고 말하고 싶다. 군집화는 비지도학습으로 다양한 산업군에 다양한 목적으로 사용한다. ㅁ 군집화 알고리즘 종류군집화 알고리즘은 다양하며, 데이터의 특성과 목적에 맞춰 적절한 알고리즘을 선택해야 한다. https://scikit-learn.org/stable/auto_examples/cluster/plot_cluster_comparison.html위의 그래프로 알 수 있듯이 데이터 분포에 따라 군집화가 잘 되는 알고리즘과 그렇지 않은 알고리즘이 있음을 알 수 있다. 이번 장에서는 다양한 군집화 알고리즘 중에서 Kmeans 와 DBSCAN에 대해서 알아보고자 한다. ㅁ 군집 평가군집화는 정답이 없는 unsupervised-learning이다. 하여, 적절한 군집임을 평가 기준을 세우는 일이 어렵다. 군집이 얼마나 잘 됐느냐를 평가하는 척도는 데이터 집합을 클러스터링한 결과 그 자체를 놓고 평가하는 방식이다. 이러한 방식에서는 클러스터 내 높은 유사도 (high intra-cluster similarity) 를 가지고, 클러스터 간 낮은 유사도 (low inter-cluster similarity) 를 가진 결과물에 높은 점수를 준다. 오로지 데이터를 클러스터링한 결과물만을 보고 판단하기 때문에, 평가 점수가 높다고 해서 실제 참값 (ground truth) 에 가깝다는 것을 반드시 보장하지는 않는다는 단점이 있다. 여러 평가 지표 중 실루엣(silhouette) 지표를 살펴보겠다. 1) 실루엣 분석- '개별데이터'가 가지는 군집화 지표 - 개별데이터가 가지는 실루엣 계수는 해당 데이터가 같은 군집 내의 데이터와 얼마나 가깝게 군집화돼 있고, 다른 군집에 있는 데이터와는 얼마나 멀리 분리돼 있는지 나타내는 지표이다. 출처 : https://velog.io/@yepark/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EC%99%84%EB%B2%BD%EA%B0%80%EC%9D%B4%EB%93%9C-Chap.7-%EA%B5%B0%EC%A7%91%ED%99%94 실수엣계수- 실루엣계수는 -1~1사이의 값을 가지며, 1로 가까워질수록 근처의 군집과 멀리 떨어져 있음 (군집화가 잘됨)을 의미한다. -1은 아에 다른 군집에 데이터포인트가 할당 되었음을 의미한다. - '일반적으로' 이 값이 높을 수록 군집화가 어느정도 잘 됐다고 판단할 수 있다. 무조건 이 값이 높다고 해서 군집화가 잘 됐다고 판단할 수는 없다. 좋은 군집화가 되려면 다음 기준 조건을 만족해야 한다. 1. 전체 실루엣계수의 평균값이 0~1사이의 값을 가지며, 1에 가까울수록 좋음 2. 개별 군집의 평균값의 편차가 크지 않아야 함. 즉, 개별 군집의 실루엣 계수 평균값이 전체 실루엣 계수의 평균값에 크게 벗어나지 않는 것이 중요함
군집별 평균 실루엣 계수의 시각화를 수행하였다. 몇개의 군집이 적절할까? 1) 군집 계수 = 2 (평균 실루엣 계수: 0.704) Cluster를 2개로 나눈 첫번째는 두 군집에 할당된 데이터수가 차이가 많다. 그러나, 개별군집의 평균값이 0보다 크고, 편차가 크지 않다. 2) 군집 계수 = 3 (평균 실루엣 계수: 0.588) Cluster를 3개로 나눈 두번째를 보면, 2번 군집의 실루엣 계수가 마이너스(-)가 되었다. 2번 군집의 실루엣계수와 전체군집의 평균실루엣계수의 편차가 있음을 알 수 있다. 3) 군집 계수= 4 (평균 실루엣 계수: 0.65) Cluster 4가 최적으로 보인다. 각 군집별 데이터 분포도 비슷하며, 실루엣계수 편차도 크지 않다. 하지만, 명심해야 할 것은 평균 실루엣 계수값이 높다고 해서 반드시 최적의 군집 개수로 군집화가 되었다고 볼 수 없다. 각 군집에 대한 특징을 파악하고, 해석하고, 이해가 되는 군집이 최고의 군집이다. Sklearn API 이를 위해 sklearn에서는 API를 지원한다.
코드에서 보면,
실루엣 계수 시각화 - 실루엣 계수를 시각화하는 함수이다.
ㅁ 군집화 알고리즘 - Kmeans알고리즘 특징 가장 일반적으로 사용하는 알고리즘이다. 몇개로 군집화 할지(K)를 정한다. 알고리즘 매커니즘 Step 1: 군집화의 기준이 되는 중심을 구성하려는 군집 개수만큼
정함 장점
단점
Sklearn API 이를 위해 sklearn에서는 API를 지원한다.
코드에서 보면,
1) 실습 (Kmeans)iris데이터를 활용하여, kmeans알고리즘을 적용해보자. (Link) 2) 실습 (Kmeans)fruits_300.npy 데이터(Link)를 활용하여, kmeans 알고리즘을 적용해보고, 그 결과를 확인해보자.
3) 실습 (Kmeans, RFM)- RFM 분석 빈칸 버전 (Link) - 분석데이터 (Link)
ㅁ 군집화 알고리즘 - DBSCAN알고리즘 특징 특정 공간 내에 데이터 밀도 차이에 기반한 알고리즘으로 군집화 수행
알고리즘 매커니즘 1) 파라미터
2) 데이터 포인트
Step 1 : P1을 기준으로 이웃 포인트가 6개 이므로 P1은 핵심 포인트 / Step 2 : P2를 기준으로 이웃 포인트 5개이므로 P2는 핵심 포인트 Step 3 : P1의 이웃 포인트 P2가 핵심 포인트이므로 직접 접근 가능 / Step 4 : P1에서 직접 접근이 가능한 P2를 서로 연결하여 군집화 구성Step 5 : 위 과정을 반복하여 점차적으로 군집 영역 확장
Sklearn API 이를 위해 sklearn에서는 API를 지원한다.
코드에서 보면,
1) 실습 (DBSCAN)iris데이터를 활용하여, DBSSCAN알고리즘을 적용해보자. (Link) ㅁ Reference - [책] 파이썬 머신러닝 완벽가이드 - [블로그] 파이썬 머신러닝 완벽가이드 정리본 (Link) - [책] 혼자 공부하는 머신러닝+딥러닝 - [소스코드 출처] : https://github.com/wikibook/pymldg-rev |