gpt4 book ai didi

python - sklearn 截断 SVD (LSA) 实现的局限性

转载 作者:行者123 更新时间:2023-11-30 09:17:32 26 4
gpt4 key购买 nike

我有以下场景:我必须分析大量文本文档(大约 3,000 个)并执行一些聚类技术来深入了解它。为了提取特征,我使用 tf-idf,但它会产生超过 20,000 个特征,这使得通过聚类很难获得良好的结果。所以我开始使用LSA来降低维度并改善结果。以下是使用 sci-kit learn 实现的示例代码:

dataset = fetch_20newsgroups(subset='all', categories=categories, 
shuffle=True, random_state=42)
data = dataset.data
labels = dataset.target

vectorizer =TfidfVectorizer(use_idf=True, stop_words='english', ngram_range=(1,1),
min_df=2, max_df=0.5, strip_accents='unicode',
smooth_idf=1, sublinear_tf=1)
X = vectorizer.fit_transform(data)

svd = TruncatedSVD(n_components=k)
normalizer = Normalizer(copy=False)
lsa = make_pipeline(svd, normalizer)

X = lsa.fit_transform(X)

# clustering over X

正如我上面所描述的,我有超过 20,000 个特征,我希望可以减少到一半,但是,如果我对 n_components 使用如此大的值,lsa.fit_transform (X) 准确返回 n_components = n_documents。唯一能按预期工作的值是低于文档数量的值。这是我在理论中遗漏的东西还是实现有这个限制?据我所知,从LSA技术的理论来看,降维的组件数量是无界的,直观上,我认为使用与特征数量更接近的组件数量比使用更少的组件要好。第四个,因为它需要更少的概念来分组到更高层次的概念中。如有错误请指正。

最佳答案

我只知道这个用于主成分分析,但我想它对于 LSA 的作用类似,并且没有其他人回答这个问题,所以我会尝试。想象一下,您有 2 个文档和 3 个特征,从而形成一个具有两个数据点的 3 维坐标系。这两个数据点可以用直线连接,因此只需要一个二维坐标系来描述。

因此,两个主成分足以解释数据中的所有方差。如果您有更高的维度,您拥有的文档数量将决定您需要多少维度来描述数据。

关于python - sklearn 截断 SVD (LSA) 实现的局限性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51264478/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com