何时使用 tf-idf 的对数基数?

问题描述 投票:0回答:1

我正在开发一个简单的搜索引擎,我使用 TF-IDF 公式来评估搜索词的重要性。我看到人们使用不同的公式基础,但我没有看到什么时候使用哪个的解释。这很重要吗?您有什么建议吗?

我当前的实现使用 math.h 库的常规 log() 函数

c tf-idf
1个回答
11
投票

TF-IDF 文献通常使用基数 2,尽管常见的实现 sklearn 使用自然对数等。算一下,基数越低,分数就越大,这会影响按分数截断搜索结果集。

请注意,从数学角度来看,基数以后总是可以更改的。从一种基数转换为另一种基数很容易,因为以下等式成立:

log_a(x)/log_a(y) = log_b(x)/log_b(y)

您始终可以从一种基础转换为另一种基础。其实很简单。只需使用这个公式:

log_b(x) = log_a(x)/log_a(b)

工程师通常更喜欢 2 和 10 这样的基数。 2 适合中场休息,10 是我们的数字系统。数学爱好者更喜欢自然对数,因为它使微积分变得容易得多。函数

b^x
(其中
b
是常数)的导数是
k*b^x
。但是,如果
b
等于
e
(自然对数),那么
k
就是
1

假设您想使用

log()
发送 5.63 的 2 对数。只需使用
log(5.63)/log(2)

如果您有需要,只需将此函数用于任意基数即可:

double logb(double x, double b) {
    return log(x)/log(b);
}
© www.soinside.com 2019 - 2024. All rights reserved.