Gensim을 활용한 문서 군집화의 정확도 평가 방법 알아보기

문서 군집화는 자연어 처리 분야에서 많이 사용되는 기법 중 하나입니다. Gensim은 Python에서 문서 군집화를 수행하기 위한 강력한 도구입니다. 하지만 문서 군집화 결과의 정확도를 평가하는 것은 중요한 과제입니다. 이번 포스트에서는 Gensim을 사용하여 문서 군집화를 수행한 후, 이를 평가하기 위한 방법에 대해 알아보겠습니다.

내부 평가 지표

문서 군집화 모델의 정확도를 평가하는 가장 일반적인 방법은 내부 평가 지표를 사용하는 것입니다. 내부 평가 지표는 군집화 모델이 생성한 군집 간의 유사도를 측정하여 정확도를 평가합니다.

실루엣 지수

가장 널리 사용되는 내부 평가 지표 중 하나는 실루엣 지수입니다. 실루엣 지수는 개별 데이터 포인트가 동일한 군집 내의 데이터와 얼마나 비슷한지, 다른 군집과 얼마나 다른지를 측정합니다. 실루엣 지수는 -1부터 1까지의 값을 가지며, 1에 가까울수록 군집화 모델의 정확도가 높다는 의미입니다.

Gensim에서는 silhouette_score 함수를 통해 실루엣 지수를 계산할 수 있습니다. 다음은 Gensim을 사용하여 군집화한 결과의 실루엣 지수를 계산하는 예시 코드입니다.

from gensim.models import Word2Vec
from sklearn.metrics import silhouette_score

# 문서 군집화 수행
# ...

# 실루엣 지수 계산
silhouette_avg = silhouette_score(X, labels)
print("평균 실루엣 지수:", silhouette_avg)

클러스터 내 분산

또 다른 내부 평가 지표는 클러스터 내 분산입니다. 클러스터 내 분산은 동일한 군집 내의 데이터들 간의 거리를 측정하여 군집화 모델의 성능을 평가합니다. 클러스터 내 분산이 작을수록 군집화의 정확도가 높다고 판단할 수 있습니다.

Gensim에서는 내부 평가 지표를 계산하기 위한 함수 제공하지 않으므로, 직접 클러스터 내 분산을 계산해야 합니다. 다음은 Gensim을 사용하여 군집화한 결과의 클러스터 내 분산을 계산하는 예시 코드입니다.

from gensim.models import Word2Vec
import numpy as np

# 문서 군집화 수행
# ...

# 클러스터 내 분산 계산
cluster_variances = []
for i in range(num_clusters):
    cluster_indices = np.where(labels == i)[0]
    cluster_vectors = X[cluster_indices]
    cluster_variance = np.var(cluster_vectors)
    cluster_variances.append(cluster_variance)

average_cluster_variance = np.mean(cluster_variances)
print("평균 클러스터 내 분산:", average_cluster_variance)

외부 평가 지표

내부 평가 지표 외에도 문서 군집화의 정확도를 평가하기 위해 외부 평가 지표를 사용할 수도 있습니다. 외부 평가 지표는 군집화 모델의 결과를 미리 정해진 기준과 비교하여 평가합니다.

조정 랜드 지수

가장 일반적인 외부 평가 지표는 조정 랜드 지수입니다. 조정 랜드 지수는 두 개의 군집화 결과가 얼마나 일치하는지를 측정합니다. 조정 랜드 지수는 0부터 1까지의 값을 가지며, 1에 가까울수록 군집화 모델의 정확도가 높다는 의미입니다.

Gensim에서는 외부 평가 지표를 계산하기 위한 함수를 제공하지 않으므로, 외부 평가 지표를 계산하기 위해서는 사전에 정답 데이터를 준비해야 합니다. 다음은 Gensim을 사용하여 군집화한 결과의 조정 랜드 지수를 계산하는 예시 코드입니다.

from gensim.models import Word2Vec
from sklearn.metrics import adjusted_rand_score

# 문서 군집화 수행
# ...

# 조정 랜드 지수 계산
adjusted_rand_idx = adjusted_rand_score(ground_truth_labels, labels)
print("조정 랜드 지수:", adjusted_rand_idx)

결론

이번 포스트에서는 Gensim을 활용해 문서 군집화를 수행한 후, 군집화 결과를 평가하기 위한 방법을 알아보았습니다. 내부 평가 지표인 실루엣 지수와 클러스터 내 분산, 외부 평가 지표인 조정 랜드 지수를 사용하여 군집화 모델의 정확도를 평가할 수 있습니다. 다양한 평가 방법을 사용하여 군집화 모델의 성능을 정확히 파악할 수 있도록 노력해야 합니다.


References: