【问题标题】:Number of components Trucated SVD截断的 SVD 分量数
【发布时间】:2018-07-03 14:13:56
【问题描述】:

可以通过使用截断的 SVD 来降低维度。它通过截断奇异值分解(SVD)执行线性降维。但是,在分解之前必须选择组件的数量。

n_comp = 25
tfidf_vec = TfidfVectorizer(analyzer="word", max_features=5000, ngram_range=(1,2))
svd = TruncatedSVD(n_components=n_comp, algorithm='arpack')
tfidf_df = tfidf_vec.fit_transform(values)
df = svd.fit_transform(tfidf_df)

组件数量如何选择?

【问题讨论】:

    标签: python machine-learning scikit-learn statistics svd


    【解决方案1】:
    var_explained = svd.explained_variance_ratio_.sum()
    

    上面的行将帮助您确定 25 个组件是否足以很好地捕捉数据中的可变性。 有时,var_explained >= 0.9 或 var_explained >= 0.95 会减少您在分析中需要的变量数量。

    【讨论】:

    • var_explained 指的是什么?
    • @mavavilj 我不明白你的问题,所以请查看文档scikit-learn.org/stable/modules/generated/…
    • 您写道:“有时,var_explained >= 0.9 或 var_explained >= 0.95”,什么是 var_explained?是var_explaned吗?
    • @mavavilj 现在已修复。谢谢。
    • youtube.com/watch?v=xvfJXNGCQBM 这个讲座很好地解释了 PCA,但它应该与 SVD 相同。
    【解决方案2】:

    学术回答:https://en.wikipedia.org/wiki/Johnson%E2%80%93Lindenstrauss_lemma

    在数学中,Johnson-Lindenstrauss 引理是关于点从高维到低维欧几里得空间的低失真嵌入的结果。引理指出,高维空间中的一小组点可以嵌入到低得多的空间中,从而几乎保留了点之间的距离。用于embedding的map至少是Lipschitz,甚至可以看成是正交投影。

    实用答案:尝试多个维度,为您的目标找到最佳价值。

    https://cstheory.stackexchange.com/a/21489

    【讨论】:

      【解决方案3】:

      一种方法是生成组件数,通过组件数解释方差,以及添加额外组件数时的回报。

      这里我有一个 Tfidf 数据框,最多包含 5000 个特征。我们将以这种图结束:

      人们可以任意选择满足他的时间效率权衡的组件数量。

      【讨论】:

      • 你是怎么得到那种图表的?
      • 图表中的增益是什么?
      猜你喜欢
      • 2015-11-15
      • 2021-11-24
      • 2020-01-21
      • 1970-01-01
      • 2015-09-11
      • 2019-09-30
      • 2020-03-08
      • 1970-01-01
      • 2018-01-18
      相关资源
      最近更新 更多