gpt4 book ai didi

python - TfidfVectorizer - 归一化偏差

转载 作者:太空宇宙 更新时间:2023-11-03 12:46:18 26 4
gpt4 key购买 nike

我想确保我了解属性 use_idf 和 sublinear_tf 在 TfidfVectorizer 对象中的作用。这几天我一直在研究这个。我正在尝试对不同长度的文档进行分类,目前使用 tf-idf 进行特征选择。

我相信当 use_idf=true 时,算法将针对固有问题(使用 TF)的偏差归一化,其中出现频率高 X 倍的术语不应该重要 X 倍。

利用 tf*idf 公式。然后 sublinear_tf = true 灌输 1+log(tf) 以便它规范化对长文档与短文档的偏见。

我正在处理对冗长文档(大多数属于一个类别)的固有偏见,这种规范化真的能减少偏见吗?

如何确保语料库中文档的长度没有集成到模型中?

我正在尝试验证模型中是否应用了规范化。我正在尝试提取语料库的归一化向量,所以我假设我可以对 Tfidfvectorizer 矩阵的每一行求和。但是总和大于 1,我认为标准化的 copora 会将所有文档转换为 0-1 之间的范围。

vect = TfidfVectorizer(max_features=20000, strip_accents='unicode',
stop_words=stopwords,analyzer='word', use_idf=True, tokenizer=tokenizer, ngram_range=(1,2),sublinear_tf= True , norm='l2')

tfidf = vect.fit_transform(X_train)
# sum norm l2 documents
vect_sum = tfidf.sum(axis=1)

最佳答案

use_idfsublinear_tf 都不处理文档长度。实际上,您对 use_idf 的解释“其中出现频率高 X 倍的术语不应该重要 X 倍”更适合作为对 sublinear_tf 的描述 sublinear_tf 导致 Tfidf 得分相对于词频呈对数增长。

use_idf 表示使用反向文档频率,因此与出现频率较低的术语相比,在大多数文档中出现频率很高的术语(即不良指标)的权重较低但它们仅出现在特定文档中(即,一个很好的指标)。

为了减少文档长度偏差,您使用归一化(TfidfVectorizer 参数中的 norm),因为您根据该文档的总分按比例缩放每个术语的 Tfidf 分数(norm=l1 的简单平均值norm=l2 的平方平均值)

不过,默认情况下,TfidfVectorizer 已经使用 norm=l2,所以我不确定是什么导致了您遇到的问题。也许那些较长的文档确实也包含类似的词?此外,分类通常很大程度上依赖于数据,所以我不能在这里说太多来解决你的问题。

引用资料:

关于python - TfidfVectorizer - 归一化偏差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34435484/

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