- 整合全部孤立树的结果
获得 t 个孤立树后 , 单棵树的训练就结束了 。接下来就可以用生成的孤立树来评估测试数据了 , 即计算异常分数 s 。对于每个样本 x , 需要对其综合计算每棵树的结果 , 通过下面的公式计算异常得分:
文章插图
h(x) 为 x 在每棵树的高度 , c(Ψ) 为给定样本数 Ψ 时路径长度的平均值 , 用来对样本 x 的路径长度 h(x) 进行标准化处理 。
文章插图
上图为孤立树的数目与每个样本点的平均高度的关系 , 可以看到数目选取在 10 以内时 , 结果非常不稳定 , 当数目达到 100 后就趋于收敛了 。因此我们在使用过程中 , 树的棵树设置为 100 即可 , 如果棵树过少结果可能不稳定 , 若过多则白白浪费了系统开销 。
- 异常得分
如果异常得分远小于 0.5 , 那么一定不是异常点;
如果异常得分所有点的得分都在 0.5 左右 , 那么样本中很可能不存在异常点 。
文章插图
算法伪代码
文章插图
第一段伪代码为孤立树的创建 。
树的高度限制 l 与子样本数量 ψ 有关 。之所以对树的高度做限制 , 是因为我们只关心路径长度较短的点 , 它们更可能是异常点 , 而并不关心那些路径很长的正常点 。
文章插图
第二段伪代码为每棵孤立树的生长即训练过程 。
文章插图
第三段伪代码为每个样本点的高度整合计算 。
其中 c(size) 是一个 adjustment 项 , 因为有一些样本点还没有被孤立出来 , 树就停止生长了 , 该项对其高度给出修正 。
总结孤立森林算法总共分两步:
- 训练 iForest:从训练集中进行采样 , 构建孤立树 , 对森林中的每棵孤立树进行测试 , 记录路径长度;
- 计算异常分数:根据异常分数计算公式 , 计算每个样本点的 anomaly score 。
- 若训练样本中异常样本的比例较高 , 可能会导致最终结果不理想 , 因为这违背了该算法的理论基础;
- 异常检测跟具体的应用场景紧密相关 , 因此算法检测出的 “异常” 不一定是实际场景中的真正异常 , 所以在特征选择时 , 要尽量过滤不相关的特征 。
因为我比较喜欢武林外传 , 而且这部剧中每个人的特点都很鲜明 , 所以拿过来做例子 。以下是 9 位主要角色的基本数据:
文章插图
接下来 , 我们模拟一棵孤立树的训练过程 , 把这九个人作为一个子样本放入一棵孤立树的根节点:
文章插图
首先随机选择到的维度是 “年龄” , 然后随机选择一个切割点 18 , 小于 18 岁的只有莫小贝一个人 , 所以她最先被 “孤立” 出来了;第二个随机选择的特征是 ”体重“ , 只有大嘴高于 80 公斤 , 所以也被 ”孤立“ 了;第三个选择 ”文化程度“ 这个特征 , 由于只有秀才的文化程度为高 , 于是被 ”孤立“ 出来了 ……
假设我们设定树的高度为 3 , 那么这棵树的训练就结束了 。在这棵树上 , 莫小贝的路径长度为 1 , 大嘴为 2 , 秀才为 3 , 单看这一棵树 , 莫小贝的异常程度最高 。但很显然 , 她之所以最先被孤立出来 , 与特征被随机选择到的顺序有关 , 所以我们通过对多棵树进行训练 , 来去除这种随机性 , 让结果尽量收敛 。
推荐阅读
- 关于茶树的起源地五种说法
- 吃过多瘦肉易长斑 关于吃肉的小禁忌
- 贵州省市场监督管理局关于批准发布《湄潭翠芽(特级)标准样品》...
- 茶叶评审方法关于滋味的评语汇总
- 茶叶评审方法关于汤色的评语汇总
- 茶叶评审方法 关于茶叶底的常用评语汇总
- 关于公寓的一些科普
- 关于容积率,让你容易忽视的误区。
- 关于茶园施肥技术措施介绍
- 学起来!36句古代礼仪名言 关于礼貌的名言