【问题标题】:Re-normalize feature vectors after feature selection特征选择后重新归一化特征向量
【发布时间】:2013-02-20 22:18:45
【问题描述】:

我已使用 sklearn.feature_extraction.text.TfidfVectorizer 对已转换为 TF*IDF 特征向量的训练文档执行 χ² 特征选择,默认情况下会生成归一化向量。然而,在选择了前 K 个信息量最大的特征后,由于移除了维度,向量不再被归一化(所有向量现在的长度

是否建议在特征选择后重新归一化特征向量?我也不太清楚 B/T 标准化和缩放的主要区别。它们是否为 SVC 等学习者提供了类似的目的?

提前感谢您的友好回答!

【问题讨论】:

    标签: svm scikit-learn document-classification


    【解决方案1】:

    这实际上是一个很多问题。对 tf-idf 向量进行归一化的主要原因是它们的点积(由 SVM 在其决策函数中使用)很容易解释为 cosine similarities,这是信息检索中文档向量比较的支柱。规范化确保

    "hello world"             -> [1 2]
    "hello hello world world" -> [2 4]
    

    成为同一个向量,因此将一个文档连接到自身上不会改变决策边界,并且这两个文档之间的相似度恰好是一个(尽管在向量化器构造函数中使用亚线性缩放,sublinear_tf,这不再适用)。

    做缩放的主要原因是avoid numerical instability issues。归一化处理了其中的大部分,因为特征已经在 [0, 1] 范围内。 (我认为它也与正则化有关,但我不经常使用 SVM。)

    正如您所注意到的,chi²“非规范化”特征向量,因此要回答最初的问题:您可以尝试重新规范化它们。我在 scikit-learn 文档分类示例中添加 chi² 特征选择时这样做了,它对一些估计器有帮助,但对其他估计器有帮助。您也可以尝试对未归一化的 tf-idf 向量进行 chi²(在这种情况下,我建议您尝试设置 sublinear_tf),然后进行缩放或归一化。

    【讨论】:

    • 感谢@larsmans 的出色回答。我会尝试你的建议。
    猜你喜欢
    • 2020-02-10
    • 2019-01-24
    • 1970-01-01
    • 2020-07-31
    • 2011-01-10
    • 2012-12-17
    • 2012-04-20
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多