【问题标题】:Text clustering application meaning文本聚类应用意义
【发布时间】:2016-06-24 01:14:21
【问题描述】:

在 scikit-learn 网站上有一个将 k-means 应用于文本挖掘的示例。感兴趣的摘录如下:

if opts.n_components:
    original_space_centroids = svd.inverse_transform(km.cluster_centers_)
    order_centroids = original_space_centroids.argsort()[:, ::-1]
else:
    order_centroids = km.cluster_centers_.argsort()[:, ::-1]

terms = vectorizer.get_feature_names()
for i in range(true_k):
    print("Cluster %d:" % i, end='')
    for ind in order_centroids[i, :10]:
        print(' %s' % terms[ind], end='')
    print()

(以link 为例)

我的第一个问题是关于 km.cluster_centers_。每个术语实际上是一个维度,因此每个术语的聚类中心值是每个聚类在术语维度中的“位置”。这些值是否已排序,因为每个术语维度中特定术语的较高值代表该术语代表集群的“强度”?如果是这样,请解释为什么会这样。

其次,该算法提供了在聚类之前对术语文档矩阵执行 LSA 的选项。我可以假设这通过维度的正交性有助于每个集群的唯一性吗?或者还有其他的东西吗?通常在聚类之前执行 SVD 吗?

提前致谢!

【问题讨论】:

    标签: python text scikit-learn cluster-analysis lsa


    【解决方案1】:

    让我们从第一个问题开始吧!每个km.cluster_centers_ 代表您的“词频空间”中的集群中心。对这些进行(在这种情况下为反向)argsort 会给出这些聚类中心频率最高的词条,因为数字越大表示词条频率越高。反过来做也会很有趣,它会显示在您的集群中频率较低的术语。

    tl;dr:对词条进行排序以显示集群中出现频率最高的词条

    现在是第二个问题。 LSA 的组件是正交的,但这并不意味着使用 LSA 的数据投影是正交的。 LSA 已被用作一种降维技术,因此基本上它从您的术语矩阵中消除了无意义的信息,这意味着集群应该提供更多信息,因为它们不会来自潜在的嘈杂的功能。在聚类之前执行降维确实取决于您的数据,但通常不会有什么坏处,但它会增加任何计算的时间。

    tl;dr 否,LSA 用于减少维度以改善聚类。

    希望对您有所帮助。

    【讨论】:

    • 感谢您的及时回复。
    • 第二个答案是有道理的。但是,我不明白第一个。如果在“正常”应用程序中执行,km.cluster_centers_ 将提供指定维度中的位置,而不是维度在集群中出现的频率。这是因为输入矩阵是一个频率(tf-idf 还是计数的)?
    猜你喜欢
    • 2018-01-22
    • 2015-04-27
    • 2013-05-17
    • 2014-01-28
    • 2015-02-14
    • 1970-01-01
    • 2011-12-30
    • 2011-08-16
    • 2018-01-16
    相关资源
    最近更新 更多