H2O 隔离林 -- 分数大于 1
H2O isolation forest -- scores greater than 1
H2O 中的隔离森林(3.30.0.1,R 3.6.1)在将模型应用于测试集时计算出的分数大于 1。这是重现大于 1 的分数的代码。看起来 h2o 没有使用原始论文 [https://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/icdm08b.pdf?q 中使用的归一化=isolation-forest] 即 score=2^(-mean length/c(n)),当 n>0 时 c(n) 始终为正,因此分数应始终小于 1.
隔离林的其他实现对同一数据集产生的分数小于 1。
library(data.table)
library(h2o)
h2o.init()
#import data
train<-h2o.importFile('train.csv')
test<-h2o.importFile('test.csv')
#Train model
model <- h2o.isolationForest(training_frame = train)
# Calculate score
scores <- h2o.predict(model,test)
max(scores[,1])
如果您的问题是为什么测试集中某些行的预测值大于 1,那么这是因为测试值较短 mean_lengths。 IE。与训练数据相比,隔离它们所需的分割少于平均水平。请记住,隔离林使用的是一组树(不仅仅是一棵)。所以如果你有比训练更独特的记录(异常),那么你的预测值可以大于 1(或者 mean_length 比正常值短)。
您可以通过查看测试数据中 predict
大于 1 的行来了解这一点:
scores[scores[,1] > 1, ]
predict mean_length
1 1.232558 3.82
2 1.023256 4.36
3 1.069767 4.24
4 1.286822 3.68
此外,您还可以看到您的训练数据的所有行的 mean_length 平均值为 4.42(大于测试数据 mean_lengths 以上)
scores_train <- h2o.predict(model,train)
mean(scores_train[,'mean_length'])
4.42
查看 this post 了解更多关于解释隔离森林的信息。
Neema 指出 h2o 使用 min/max 路径长度进行归一化,这使得分数可能大于 1。
[https://support.h2o.ai/support/tickets/97280]
H2O 中的隔离森林(3.30.0.1,R 3.6.1)在将模型应用于测试集时计算出的分数大于 1。这是重现大于 1 的分数的代码。看起来 h2o 没有使用原始论文 [https://cs.nju.edu.cn/zhouzh/zhouzh.files/publication/icdm08b.pdf?q 中使用的归一化=isolation-forest] 即 score=2^(-mean length/c(n)),当 n>0 时 c(n) 始终为正,因此分数应始终小于 1.
隔离林的其他实现对同一数据集产生的分数小于 1。
library(data.table)
library(h2o)
h2o.init()
#import data
train<-h2o.importFile('train.csv')
test<-h2o.importFile('test.csv')
#Train model
model <- h2o.isolationForest(training_frame = train)
# Calculate score
scores <- h2o.predict(model,test)
max(scores[,1])
如果您的问题是为什么测试集中某些行的预测值大于 1,那么这是因为测试值较短 mean_lengths。 IE。与训练数据相比,隔离它们所需的分割少于平均水平。请记住,隔离林使用的是一组树(不仅仅是一棵)。所以如果你有比训练更独特的记录(异常),那么你的预测值可以大于 1(或者 mean_length 比正常值短)。
您可以通过查看测试数据中 predict
大于 1 的行来了解这一点:
scores[scores[,1] > 1, ]
predict mean_length
1 1.232558 3.82
2 1.023256 4.36
3 1.069767 4.24
4 1.286822 3.68
此外,您还可以看到您的训练数据的所有行的 mean_length 平均值为 4.42(大于测试数据 mean_lengths 以上)
scores_train <- h2o.predict(model,train)
mean(scores_train[,'mean_length'])
4.42
查看 this post 了解更多关于解释隔离森林的信息。
Neema 指出 h2o 使用 min/max 路径长度进行归一化,这使得分数可能大于 1。
[https://support.h2o.ai/support/tickets/97280]