R中的归一化累积贴现收益公式
Normalized cumulative discounted gain formula in R
我想在 R 中编写函数中的下一个公式:
它应该在 R 包中,但安装后该包不存在...
# original source:
https://www.rdocumentation.org/packages/rrecsys/versions/0.9.5.4/topics/nDCG
#Alternative source:
https://en.wikipedia.org/wiki/Discounted_cumulative_gain
函数的使用是以两个向量作为输入。
# example
v1=c(1,2,3,4)
v2=c(1,3,2,4)
nDGC(v1,v2)
谁能帮我高效地编码?
DGC 的 python 版本是:
rel = zip(range(1,7),[3,2,3,0,1,2])
dcg6 = rel[0][1] + sum(map(lambda (a,b):b/math.log(a,2),rel[1:]))
print dcg6
这是维基百科中方程的直接 R 实现,包括一些错误检查:
第一个方程
DCG_pos <- function(rel, p)
{
if(missing(p)) p <- length(rel)
stopifnot(p <= length(rel))
sum(rel[seq(p)]/log(seq(p) + 1, 2))
}
第二个方程
IDCG_pos <- function(rel, p)
{
if(missing(p)) p <- length(rel)
stopifnot(p <= length(rel))
sum((2^(rel[seq(p)]) - 1)/log(seq(p) + 1, 2))
}
第三个方程
nDGC_pos <- function(rel, p)
{
if(missing(p)) p <- length(rel)
stopifnot(p <= length(rel))
DCG_pos(rel, p) / IDCG_pos(rel, p)
}
您可以这样使用它们:
DCG_pos(1:5, 5)
#> [1] 7.41883
IDCG_pos(1:5, 5)
#> [1] 24.84537
nDGC_pos(1:5, 5)
#> [1] 0.2986
由 reprex package (v0.3.0)
于 2020-03-10 创建
我想在 R 中编写函数中的下一个公式:
它应该在 R 包中,但安装后该包不存在...
# original source:
https://www.rdocumentation.org/packages/rrecsys/versions/0.9.5.4/topics/nDCG
#Alternative source:
https://en.wikipedia.org/wiki/Discounted_cumulative_gain
函数的使用是以两个向量作为输入。
# example
v1=c(1,2,3,4)
v2=c(1,3,2,4)
nDGC(v1,v2)
谁能帮我高效地编码?
DGC 的 python 版本是:
rel = zip(range(1,7),[3,2,3,0,1,2])
dcg6 = rel[0][1] + sum(map(lambda (a,b):b/math.log(a,2),rel[1:]))
print dcg6
这是维基百科中方程的直接 R 实现,包括一些错误检查:
第一个方程
DCG_pos <- function(rel, p)
{
if(missing(p)) p <- length(rel)
stopifnot(p <= length(rel))
sum(rel[seq(p)]/log(seq(p) + 1, 2))
}
第二个方程
IDCG_pos <- function(rel, p)
{
if(missing(p)) p <- length(rel)
stopifnot(p <= length(rel))
sum((2^(rel[seq(p)]) - 1)/log(seq(p) + 1, 2))
}
第三个方程
nDGC_pos <- function(rel, p)
{
if(missing(p)) p <- length(rel)
stopifnot(p <= length(rel))
DCG_pos(rel, p) / IDCG_pos(rel, p)
}
您可以这样使用它们:
DCG_pos(1:5, 5)
#> [1] 7.41883
IDCG_pos(1:5, 5)
#> [1] 24.84537
nDGC_pos(1:5, 5)
#> [1] 0.2986
由 reprex package (v0.3.0)
于 2020-03-10 创建