iForest 概述
功能
异常检测
核心思想
随机划分多次,密度越疏的簇,即更有可能是异常值的点会被更快地划分出来
算法
按每次随机选特征、随机选划分值的方式构建多个 iTree,最后统计每个数据在所有 iTree 里的平均深度,深度越小越可能是异常值
异常得分
测试时,对于每个样本计算如下的异常得分:
$$
s(x)=2^{-\frac{\mathbb{E}[h(x)]}{M}},
$$
其中 $\mathbb{E}[h(x)]$ 为样本 $x$ 在所有 iTree 的平均深度,$M$ 为所有样本的平均深度,用于对 $h(x)$ 进行归一化。$s(x)$ 越接近 1,则 $x$ 为异常点的可能性越大。
改进版本
以前是每次随机选一个特征,现在是每次随机定一个特征集成的分布,例如分布为 $(0.5, 0.2, 0.3)$,即:
$$
value=0.5*value_{\text{(特征1)}}+0.2*value_{\text{(特征2)}}+0.3*value_{\text{(特征3)}}
$$
集成后再根据 value 随机选取划分值。