Document Clustering with LLM Embeddings in Scikit-learn - MachineLearningMastery.com
핵심 포인트
- 1이 논문은 LLM 기반 임베딩과 scikit-learn의 표준 클러스터링 알고리즘을 사용하여 텍스트 문서를 클러스터링하는 방법을 시연합니다.
- 2구체적으로, BBC News 데이터셋에 대해 SentenceTransformer로 임베딩을 생성한 후 K-Means와 DBSCAN을 적용하고, PCA 시각화를 통해 그 결과를 비교 분석합니다.
- 3실험 결과, 이 데이터셋의 잘 분리된 클러스터 구조와 임베딩의 높은 차원 때문에 K-Means가 DBSCAN보다 더 나은 성능을 보였습니다.
이 논문은 대규모 언어 모델(LLM) 임베딩과 Scikit-learn의 표준 클러스터링 알고리즘을 사용하여 텍스트 문서 컬렉션을 클러스터링하는 방법을 심층적으로 설명합니다. 전통적인 텍스트 클러스터링 방법인 TF-IDF 및 Word2Vec이 의미와 전체 문맥을 제대로 포착하지 못하는 한계를 지적하며, Sentence Transformer와 같은 LLM 기반 임베딩이 컨텍스트 의미를 포착하고 문서 수준의 의미를 인코딩하는 데 더 우수하다고 강조합니다. 이 임베딩은 수백만 개의 텍스트로 사전 훈련되어 일반 언어 지식을 풍부하게 담고 있습니다.
핵심 방법론은 다음과 같습니다:
- 데이터셋 로드: BBC News 데이터셋을 사용합니다. 이 데이터셋에는 주제별로 라벨링된 2,225개의 기사가 포함되어 있으며,
business,entertainment,politics,sport,tech의 5가지 고유한 카테고리가 있습니다.
- LLM 임베딩 생성:
sentence_transformers라이브러리를 사용하여 사전 훈련된 모델all-MiniLM-L6-v2를 로드합니다. 이 모델은 각 텍스트 문서를 384차원 수치 벡터로 변환합니다.model.encode()함수를 사용하여 모든 문서의 임베딩을 생성하며, 효율성을 위해 로 배치 처리를 수행합니다.- 생성된 임베딩은
embeddings라는 NumPy 배열로 저장되며, 행렬 크기는(문서 수, 임베딩 차원)이 됩니다. 의미적으로 유사한 문서들은 이 벡터 공간에서 서로 가까운 임베딩을 가지게 됩니다.
- K-Means 클러스터링:
sklearn.cluster.KMeans를 사용하여 K-Means 알고리즘을 적용합니다.- 클러스터 개수
n_clusters는 데이터셋의 알려진 ground-truth 카테고리 수에 따라 5로 설정합니다. 및 과 같은 매개변수를 지정합니다. kmeans.fit_predict(embeddings)를 호출하여 각 문서에 대한 클러스터 라벨을 할당합니다.- 평가:
sklearn.metrics.silhouette_score: 클러스터 내 응집도와 클러스터 간 분리도를 측정합니다.sklearn.metrics.adjusted_rand_score (ARI): 클러스터 할당과 실제 카테고리 라벨을 비교하는 permutation-invariant metric입니다. 1에 가까울수록 ground truth와의 일치도가 높음을 의미합니다.- K-Means의 예시 결과는 Silhouette Score 0.066, ARI 0.899를 보여주어, ground truth에 대한 높은 일치도를 나타냅니다.
- DBSCAN 클러스터링:
sklearn.cluster.DBSCAN을 사용하여 DBSCAN 알고리즘을 적용합니다. 이 알고리즘은 포인트 밀도를 기반으로 클러스터 수를 자동으로 추론합니다.- 주요 매개변수는
eps(이웃 반경)와min_samples(코어 포인트가 되기 위한 최소 샘플 수)입니다. 논문에서는 , 로 설정하고, 텍스트 임베딩에 더 적합한 을 사용합니다. dbscan.fit_predict(embeddings)를 통해 클러스터 라벨을 얻습니다.-1라벨은 노이즈 포인트(noise points)를 나타냅니다.- 평가: K-Means와 동일하게 Silhouette Score와 Adjusted Rand Index를 사용합니다. 노이즈 포인트는 Silhouette Score 계산에서 제외됩니다.
- 시각화:
- 고차원 임베딩을 시각화하기 위해
sklearn.decomposition.PCA를 사용하여 2차원()으로 차원을 축소합니다. - PCA로 차원 축소된 임베딩을 사용하여 실제 카테고리, K-Means 클러스터, DBSCAN 클러스터를 비교하는 3개의 산점도(scatter plot)를 그립니다.
- 고차원 임베딩을 시각화하기 위해
주요 결과 및 논의:
- K-Means는 이 데이터셋에서 기본 DBSCAN 설정보다 훨씬 더 나은 성능을 보이는 경향이 있습니다. 이는 DBSCAN이 "차원의 저주(curse of dimensionality)"에 취약하며, 384차원 임베딩은 밀도 기반 방법론에 도전적일 수 있기 때문입니다.
- K-Means는 클러스터가 비교적 잘 분리된 경우(BBC News 데이터셋처럼 문서의 명확한 주제 구조로 인해 클러스터가 잘 분리된 경우) 좋은 성능을 발휘합니다.
- DBSCAN은 hyperparameter에 매우 민감하며, 좋은 결과를 얻으려면 체계적인 탐색 전략을 통한 신중한 튜닝이 필요합니다.
결론적으로, 이 논문은 LLM 임베딩이 텍스트 문서의 의미적 클러스터링에 강력한 도구임을 보여주며, K-Means와 같은 전통적인 알고리즘이 임베딩 공간에서 효과적으로 작동하여 유사한 문서를 그룹화하고 알려진 주제 라벨에 대해 우수한 성능을 달성할 수 있음을 입증합니다.