【R文档】1 isolation.forest/孤立森林算法

[未完待续……]

1.辅助信息

包名称:isotree​
包的版本:0.5.14
网址:英文R文档

2.孤立森林原理

3.基本描述

孤立森林算法最初是为了检测离群值(有时称为异常值)的算法。在基本孤立森林的基础上,还形成了速度更快的SCiForest算法、找到聚类离群值的FCF算法。

4.句法

isolation.forest(
  data,
  sample_size = min(nrow(data), 10000L),
  ntrees = 500,
  ndim = min(3, ncol(data)),
  ntry = 1,
  categ_cols = NULL,
  max_depth = ceiling(log2(sample_size)),
  ncols_per_tree = ncol(data),
  prob_pick_pooled_gain = 0,
  prob_pick_avg_gain = 0,
  prob_pick_full_gain = 0,
  prob_pick_dens = 0,
  prob_pick_col_by_range = 0,
  prob_pick_col_by_var = 0,
  prob_pick_col_by_kurt = 0,
  min_gain = 0,
  missing_action = ifelse(ndim > 1, "impute", "divide"),
  new_categ_action = ifelse(ndim > 1, "impute", "weighted"),
  categ_split_type = ifelse(ndim > 1, "subset", "single_categ"),
  all_perm = FALSE,
  coef_by_prop = FALSE,
  recode_categ = FALSE,
  weights_as_sample_prob = TRUE,
  sample_with_replacement = FALSE,
  penalize_range = FALSE,
  standardize_data = TRUE,
  scoring_metric = "depth",
  fast_bratio = TRUE,
  weigh_by_kurtosis = FALSE,
  coefs = "uniform",
  assume_full_distr = TRUE,
  build_imputer = FALSE,
  output_imputations = FALSE,
  min_imp_obs = 3,
  depth_imp = "higher",
  weigh_imp_rows = "inverse",
  output_score = FALSE,
  output_dist = FALSE,
  square_dist = FALSE,
  sample_weights = NULL,
  column_weights = NULL,
  seed = 1,
  use_long_double = FALSE,
  nthreads = parallel::detectCores()
)
内容含义补充说明
data用于建模的数据格式要求:data.frame,data.table,tibble
sample_size构建每个二叉树的数据子样本的样本量部分文献推荐值是256,但本算法包创作者的默认值是data(用于建模的数据)的行数。如果设置为NULL,或者0-1之间的数值,会有其他的含义
ntrees建模时二叉树的数量推荐值是100(后面的案例中一般取100,其他资料中也是取100),默认值是10。取值大小与数据的列数、是否存在分类变量、分类变量的分类数量等多个因素有关。取值是否合理,可以查看结果中的分数值分布是否合理
ndim在分叉时考虑的列的数量取1,建立单变量模型(single-variable model)。取值大于1,本文档称为扩展模型(extended model)。有资料推荐值取2或3。如果取NULL,算法认为取全部列。
prob_pick_pooled_gain是否让概率阈值取使a pooled standard deviation gain criterion最大的值取0或1。
prob_pick_avg_gain在根据特征划分数据时,阈值是否是使平均标准差最大化的阈值。取0或1。

5.案例

案例1:检测一个明显的离群值

伪代码:
生成2个特征的(随机值)数据
加入一个明显的离散值(行)
拟合模型
计算结果
显示结果

# 生成2个特征的数据
library(isotree)
set.seed(1)
m <- 100
n <- 2
X <- matrix(rnorm(m * n), nrow = m)

# 加入一个明显的离散值
X <- rbind(X, c(3, 3))

# 拟合模型
iso <- isolation.forest(X, ntrees = 10, nthreads = 1)

# 计算结果
pred <- predict(iso, X)

# 显示结果
cat("Point with highest outlier score: ", 
		X[which.max(pred), ], "\n")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值