클러스터 분석은 객체의 특성에 따라 클러스터 내 유사도는 높고 클러스터 간 유사도는 낮도록 객체를 그룹화하는 것입니다.
클러스터 분석은 객체의 특성에 따라 클러스터 내 유사도는 높고 클러스터 간 유사도는 낮도록 객체를 그룹화하는 것입니다.
클러스터 분석은 다른 클러스터에 있는 객체와 유사한 정도보다 같은 클러스터에 있는 객체들이 서로 더 유사하도록 객체를 그룹화하는 것입니다. 클러스터는 최소 거리, 데이터 포인트의 밀도, 그래프, 다양한 통계 분포 등의 기준을 사용하여 분류됩니다. 클러스터 분석은 비지도 머신 러닝, 데이터 마이닝, 통계, 그래프 분석, 이미지 처리, 여러 물리 및 사회과학 응용 사례를 포함하여 광범위하게 적용 가능합니다.
데이터 사이언티스트와 기타 전문가들은 클러스터링 알고리즘을 데이터에 적용할 때 데이터 포인트가 어떤 그룹(또는 클러스터)에 포함되는지를 관찰함으로써 데이터에서 중요한 인사이트를 얻기 위해 클러스터링을 사용합니다. 정의에 따르면, 비지도 학습은 이미 존재하는 레이블이 없고 사람이 최소한으로 개입한 데이터 세트에서 패턴을 검색하는 머신 러닝의 한 유형입니다. 클러스터링은 어떤 클러스터에도 속하지 않는 데이터 포인트 또는 극단치를 찾기 위한 이상 탐지에도 사용할 수 있습니다.
클러스터링은 변량이 두 개 이상인 데이터 세트에서 유사한 객체 그룹을 식별하는 데 사용됩니다. 실제로 마케팅, 생물의학, 지리 공간 데이터베이스를 비롯한 여러 소스에서 이러한 데이터를 수집할 수 있습니다.
클러스터 분석은 단일 알고리즘이 수행하는 작업이 아니라는 점에 유의해야 합니다. 오히려 일반적으로는 다양한 알고리즘을 사용하여 광범위한 분석 작업을 수행하며, 알고리즘끼리 서로 상당히 다른 경우가 많습니다. 이상적으로 클러스터링 알고리즘은 클러스터 내 유사도가 매우 높은 클러스터, 즉 클러스터 내부의 데이터가 서로 매우 유사한 클러스터를 생성합니다. 또한 알고리즘은 클러스터 간 유사도는 훨씬 낮은 클러스터, 즉 각 클러스터가 다른 클러스터와 최대한 다른 정보를 포함하는 클러스터를 만들어야 합니다.
클러스터가 무엇인지, 또는 클러스터를 어떻게 정의해야 하는지에 대한 개념이 다양하기 때문에 클러스터링 알고리즘 역시 다양합니다. 실제로 현재까지 발표된 클러스터링 알고리즘은 100가지가 넘습니다. 클러스터링은 비지도 데이터 기반 머신 러닝을 위한 강력한 기법입니다. 특정 유형의 클러스터 모델을 위해 구축 및 설계된 알고리즘을 아주 다른 종류의 클러스터 모델이 포함된 데이터 세트에서 작동하도록 설정하면 실패하기 쉽습니다.
모든 클러스터링 알고리즘의 공통점은 데이터 객체 그룹입니다. 하지만 데이터 사이언티스트와 프로그래머는 서로 다른 클러스터 모델을 사용하며, 모델마다 서로 다른 알고리즘을 필요로 합니다. 클러스터링 또는 클러스터 집합은 각 객체가 클러스터에 속하거나 속하지 않는 하드 클러스터링 또는 각 객체가 각 클러스터에 어느 정도 속하는 소프트 클러스터링으로 구분됩니다.
일반적으로 사용자에게 더 높은 가용성을 제공하고 한 서버가 일시적으로 장애를 일으킬 때 다른 서버가 이를 대신하여 가동 중지 시간을 줄이기 위해 함께 작동하는 서버 그룹을 의미하는 소위 서버 클러스터링과는 별개의 개념입니다.
클러스터링 분석 방법에는 다음이 포함됩니다.
클러스터링 사용 사례
사용 가능한 클러스터링 알고리즘의 수가 증가함에 따라, 클러스터링이 다양한 사용 사례와 함께 다양한 유형의 비즈니스 및 조직에서 주요 방법론이 된 것은 놀랄 일이 아닙니다. 클러스터링 사용 사례에는 생물학적 서열 분석, 인간 유전자 클러스터링, 의료 이미지 조직 클러스터링, 시장 또는 고객 세분화, 추천을 위한 소셜 네트워크 또는 검색 결과 그룹화, 컴퓨터 네트워크 이상 탐지, 텍스트 그룹화를 위한 자연어 처리(NLP), 범죄 클러스터 분석, 기후 클러스터 분석 등이 있습니다. 다음은 몇 가지 예에 대한 설명입니다.
데이터 사이언티스트와 클러스터링
앞서 언급했듯이, 클러스터링은 비지도 머신 러닝의 한 방법입니다. 머신 러닝으로 방대한 양의 데이터를 처리할 수 있으므로, 데이터 사이언티스트는 처리된 데이터와 모델을 분석해 실행에 옮길 수 있는 인사이트를 파악하는 데 시간을 들일 수 있습니다. 데이터 사이언티스트는 클러스터링 알고리즘을 적용할 때 어떤 그룹에 데이터 포인트가 포함되는지 확인함으로써 데이터에서 가치 있는 인사이트를 얻기 위해 클러스터링 분석을 사용합니다.
클러스터 분석은 다양한 사용 사례에서 중요한 역할을 하지만, 데이터양이 지속적으로 증가하면서 연산 문제에 직면해 있습니다. GPU를 이용한 병렬 컴퓨팅은 이러한 연산 문제를 해결해 줄 가장 유망한 솔루션 중 하나입니다.
GPU는 병렬 처리 및 메모리 액세스 대역폭 측면의 이점이 매우 크므로, 데이터 집약적 분석 및 그래프 분석을 가속화하기 아주 좋은 방법입니다. GPU의 대규모 병렬 아키텍처는 여러 작업을 동시에 처리하도록 설계된 수천 개의 작은 코어로 구성되어 '모든 X에 대해 Y를 수행'하는 연산 작업에 매우 적합합니다. 큰 그래프에 있는 일련의 정점이나 간선에 이를 적용할 수 있습니다.
클러스터 분석은 상당한 수준의 병렬 처리가 필요한 문제로, GPU를 사용하여 가속화할 수 있습니다. NVIDIA 그래프 분석 라이브러리(nvGRAPH)는 향후 최소 밸런스드 컷 메트릭을 기반으로 스펙트럴 및 계층적 클러스터링/파티셔닝 기술을 모두 제공할 예정입니다. nvGRAPH 라이브러리는 NVIDIA® CUDA® 툴킷의 일부로, 무료로 제공됩니다. 그래프에 대한 자세한 내용은 그래프 분석 페이지를 참조하세요.
CUDA-X AI™ 기반 오픈 소스 소프트웨어 라이브러리인 NVIDIA RAPIDS™ 제품군은 엔드투엔드 데이터 사이언스 및 분석 파이프라인을 전적으로 GPU에서 실행할 수 있는 기능을 제공합니다. 이 제품군은 NVIDIA CUDA® 프리미티브를 사용하여 저수준 컴퓨팅 최적화를 수행하지만, 사용자 친화적인 Python 인터페이스를 통해 GPU 병렬 처리와 고대역폭 메모리 속도를 제공합니다.
RAPIDS의 cuML 머신 러닝 알고리즘과 수학적 프리미티브는 Scikit-learn과 같은 익숙한 API를 따릅니다. K-평균, XGBoost 등과 같은 인기 있는 알고리즘은 단일 GPU와 대규모 데이터센터 배포 모두에서 지원됩니다. 대규모 데이터 세트의 경우, GPU 기반 구현은 CPU 기반 구현보다 10~50배 더 빨리 완료할 수 있습니다.
RAPIDS GPU DataFrame을 사용하면 Pandas와 같은 인터페이스를 사용하여 데이터를 GPU에 로드한 다음, 절대 GPU를 떠나지 않고 이 데이터를 연결된 다양한 머신 러닝 및 그래프 분석 알고리즘에 사용할 수 있습니다. Apache Arrow와 같은 라이브러리를 통해 이러한 수준의 상호 운용성이 가능합니다. 이를 통해 데이터 준비부터 머신 러닝과 딥 러닝에 이르는 엔드투엔드 파이프라인을 가속화할 수 있습니다.
RAPIDS cuGraph는 RAPIDS 데이터 사이언스 에코시스템에 원활하게 통합되므로 데이터 사이언티스트가 GPU DataFrame에 저장된 데이터를 사용하여 그래프 알고리즘을 쉽게 호출할 수 있습니다.
RAPIDS는 널리 사용되는 여러 데이터 사이언스 라이브러리 간의 장치 메모리 공유도 지원합니다. 이를 통해 GPU에 데이터를 유지하여 호스트 메모리에 데이터를 이리저리 복사하는 데 비용이 많이 드는 것을 방지할 수 있습니다.