让 AI 推演孤立森林:切点均匀随机,为什么远处样本更容易先被分开

昨天 3阅读

无监督异常检测中,孤立森林通过随机切分来观察样本有多容易被单独分开。所谓随机,并不意味着每个样本第一次就被隔离的机会相同。若某点与其他点之间空隙很大,切点落进这片空隙的机会也更大。四个点就足以量出这种差异。

让 AI 推演孤立森林:切点均匀随机,为什么远处样本更容易先被分开

AI模型生成的概念插图:随机分割可以较早隔离远处点;位置与间距仅作概念示意,不是精确数据图或算法运行截图。

随机抽坐标,不是随机挑一个间隙

原创数据只有一维的四个点[0,1,2,9]。每个节点在当前最小坐标与最大坐标之间均匀抽一个实数切点,左小右大,递归直到每个叶子仅有一个点。不做子采样,也不设树高上限;本文先研究这个完整切分模型。

根节点的范围长度为9。切点落在0到1之间的概率是1/9,落在1到2之间也是1/9,落在2到9之间则是7/9。三段虽然各有一个“间隙”名称,长度却不同,不能把它们都赋成1/3。落在端点的事件在连续抽样中概率为0。

只要第一刀位于2到9之间,点9便立即独处,所以它第一刀被隔离的机会为7/9,约77.78%。点0必须等切点落入0到1之间,机会只有1/9;中间点1不可能靠一条阈值切分立即与左右两边同时分开。

先分不出来,还能继续算后续路径

把根节点到单点叶子经过的切分次数记为路径长度。对点9,若第一刀在大间隙中,长度就是1;若在1到2之间,它与点2留在一起,再切一次便独处,总长2。

若第一刀在0到1之间,剩下[1,2,9]。在这个子节点,2到9的大间隙占7/8,一刀能隔离9;1到2的小间隙占1/8,还要再多一刀。所以从该子节点起的期望长度为(7/8)×1+(1/8)×2=9/8,加上根节点的一刀共17/8。

合并三种根分支,点9的期望长度为(7/9)×1+(1/9)×2+(1/9)×(17/8)=89/72,约1.236111。这里的小数描述所有随机树的平均,不要求某棵树出现“一点二刀”。

用递归精确核对,不靠少量试抽

程序对每个节点的全部相邻间隙计算概率,再递归累计期望,得到点0、1、2、9的期望长度分别为41/18、23/8、5/2、89/72,约2.277778、2.875、2.5、1.236111。点9平均最早被隔离,符合本例的几何位置。

让AI列出当前坐标范围、每个间隙的长度、切分后目标点进入的子集,再逐层相加。若只是给四个点各指定一个随机深度,就没有验证均匀坐标抽样产生的分布。把全部坐标同时平移,不会改变各间隙比例,可作为额外的机制检查。

实际IsolationForest还涉及特征抽样、样本子集、树高限制、叶内剩余样本修正与异常分数归一。这里的完整单点树不等同于某个库的默认配置,因此不报告软件异常分数,也不把1.236111直接当成异常概率。

容易被孤立只是统计上的不寻常信号。它可能来自故障,也可能来自合法的稀有状态;特征表示和业务场景都会影响意义。先用小算例理解切分机制,再在真实任务里检查告警内容与阈值,不能让一条短路径直接代替结论。

资料核对日期:2026年10月2日。算例为原创教学设定,已用独立程序复核,未进行真实模型训练或效果测试。

参考资料

scikit-learn:IsolationForest的随机切分与路径长度

文章版权声明:除非注明,否则均为云鹊BLOG原创文章,转载或复制请以超链接形式并注明出处。