Зачем использовать LSA перед K-Means при кластеризации текста
Я изучаю этот урок из Scikit, изучая кластеризацию текста с использованием K-Means: http://scikit-learn.org/stable/auto_examples/text/document_clustering.html
В этом примере необязательно LSA (с использованием SVD) используется для уменьшения размерности.
Почему это полезно? Количество измерений (признаков) уже можно контролировать в векторизаторе TF-IDF с помощью параметра "max_features".
Я понимаю, что LSA (и LDA) также являются методами моделирования темы. Разница с кластеризацией заключается в том, что документы принадлежат нескольким темам, но только одному кластеру. Я не понимаю, почему LSA будет использоваться в контексте кластеризации K-средних.
Пример кода:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.cluster import KMeans
documents = ["some text", "some other text", "more text"]
tfidf_vectorizer = TfidfVectorizer(max_df=0.5, max_features=10000, min_df=2, stop_words='english', use_idf=True)
X = tfidf_vectorizer.fit_transform(documents)
svd = TruncatedSVD(1000)
normalizer = Normalizer(copy=False)
lsa = make_pipeline(svd, normalizer)
Xnew = lsa.fit_transform(X)
model = KMeans(n_clusters=10, init='k-means++', max_iter=100, n_init=1, verbose=False)
model.fit(Xnew)
2 ответа
Существует статья, в которой показано, что собственные векторы PCA являются хорошими инициализаторами для K-средних.
Управление размером с max_features
Параметр эквивалентен сокращению размера словарного запаса, что имеет негативные последствия. Например, если вы установите max_features
до 10 модель будет работать с наиболее распространенными 10 словами в корпусе и игнорировать остальные.
LSA
преобразует пространство признаков пакета слов в новое пространство признаков (с орто-нормальным набором базисных векторов), где каждое измерение представляет скрытое понятие (представленное в виде линейной комбинации слов в исходном измерении). Как с PCA
несколько верхних собственных векторов, как правило, фиксируют большую часть дисперсии в преобразованном пространстве признаков, а другие собственные векторы в основном представляют шум в наборе данных, поэтому можно считать, что верхние собственные векторы в пространстве признаков LSA могут охватывать большинство концепций определяется словами в оригинальном пространстве. Следовательно, уменьшение размера в трансформированном пространстве признаков LSA, вероятно, будет намного более эффективным, чем в оригинальном BOW
tf-idf
пространство признаков (которое просто отбрасывает менее часто встречающиеся / важные слова), что приводит к повышению качества данных после уменьшения размерности и, вероятно, к повышению качества кластеров.