IsolationForest-孤立森林
IsolationForest-孤立森林 的真实核心主要位于:
IsolationForest-孤立森林
1. 方法概述
IsolationForest-孤立森林 的真实核心主要位于:
core/calculator.py
从当前源码看,这个模块直接基于 sklearn 的 IsolationForest,但外围额外实现了:
- ID 列 / 标签列 / 特征列识别;
- 缺失值处理与缩放;
decision_function/score_samples/ 自定义anomaly_score三套输出;- PCA 二维嵌入;
- 图表、Excel 与复现脚本导出。
2. 数据预处理
2.1 输入结构
设处理后的特征矩阵为
$$ X=(x_{ij})_{n\times d} \tag{1} $$
标签列若存在,仅用于评估,不参与建模。
2.2 缺失值处理
代码支持:
drop_rowsfill_meanfill_medianfill_zero
2.3 缩放
支持:
nonestandardmin_max
标准化形式为
$$ z_{ij}=\frac{x_{ij}-\mu_j}{\sigma_j} \tag{2} $$
3. Isolation Forest 理论与代码输出
3.1 理论异常度
孤立森林的经典理论分数可写为
$$ s(x,n)=2^{-\frac{\mathbb{E}[h(x)]}{c(n)}} \tag{3} $$
其中 \(\mathbb{E}[h(x)]\) 是样本在随机孤立树中的平均路径长度,\(c(n)\) 是样本规模归一化常数。
3.2 当前代码实际使用的判别量
尽管理论基础来自路径长度,但项目在结果层面直接保留 sklearn 的:
score_samplesdecision_functionpredicted_label
并定义
$$ \mathrm{anomaly\_score}_i=-\,\mathrm{decision\_function}_i \tag{4} $$
因此当前模块的判别规则是
$$ \hat y_i= \begin{cases} -1,& \mathrm{decision\_function}_i<0\\ 1,& \mathrm{otherwise} \end{cases} \tag{5} $$
也就是说,代码实际阈值是 decision_function = 0。
3.3 offset_
源码同时记录
$$ \mathrm{score\_samples\ threshold}=\mathrm{offset\_} \tag{6} $$
这是 score_samples 那一侧与 decision_function=0 对应的阈值。
4. 评估指标
若提供真实标签列,代码会将其转换为“1=异常,0=正常”,然后计算:
$$ \mathrm{Accuracy}=\frac{TP+TN}{TP+TN+FP+FN} \tag{7} $$
$$ \mathrm{Precision}=\frac{TP}{TP+FP} \tag{8} $$
$$ \mathrm{Recall}=\frac{TP}{TP+FN} \tag{9} $$
$$ \mathrm{F1}=\frac{2PR}{P+R} \tag{10} $$
并在条件满足时追加:
roc_aucpr_auc
这些排序指标都是基于 anomaly_score 计算的。
5. 输出结果与论文应用
5.1 Excel 工作表
当前模块会导出:
参数原始数据处理后特征得分与标签Top异常混淆矩阵ROC曲线数据PR曲线数据图表清单预处理信息
5.2 复现脚本
模块还会自动生成:
repro_isolation_forest.py
并将原始输入另存到 repro_inputs,方便把整个结果目录整体迁移或复现实验。
5.3 论文写作表述建议
可以写成:
- 采用 Isolation Forest 对样本进行无监督异常检测;
- 以
decision_function<0作为异常判定规则,并将-decision_function作为异常强度分数; - 在有标签情形下,使用 Accuracy、Precision、Recall、F1、ROC-AUC 和 PR-AUC 评价检测性能。
6. 实现说明与注意事项
6.1 结果解释应以 decision_function 为主
虽然孤立森林底层来源于路径长度,但当前软件实际展示和阈值判定直接围绕 decision_function 展开,因此论文写法最好也与导出结果保持一致。
6.2 首列可能被自动识别为 ID
若用户未显式指定 ID 列,而首列又是“非数值且唯一”,代码会自动把它当成样本 ID。
6.3 top_n 不影响训练,只影响展示
Top异常 工作表只展示分数最高的若干样本,不改变模型本身的预测标签。
7. 论文写作模板
7.1 方法描述模板
“本文采用 Isolation Forest 异常检测方法,通过随机选择特征与分裂阈值构建多棵孤立树,并利用样本在随机划分过程中的隔离难易程度刻画异常性。依据项目当前实现,软件同步输出 score_samples、decision_function 与 anomaly_score=-decision_function,其中异常判定规则采用 decision_function<0。因此,论文写作时宜以 decision_function 及其派生异常分数为中心解释模型结果,而不必回到平均路径长度的底层数值口径。”
7.2 结果解释模板
结果部分可写为:异常分数越大,说明样本越容易在随机分裂过程中被较短路径孤立,因此越可能属于异常点。若得分分布图中右尾样本与 PCA 散点图外围样本高度重合,可认为模型识别出的异常具有较好的空间一致性。对于带标签场景,建议优先报告 ROC-AUC 与 PR-AUC,以体现异常排序能力;同时可结合 Precision、Recall 与 F1 评价阈值判别效果。
7.3 表格标题模板
- 表 1 Isolation Forest 参数与预处理设置表
- 表 2 样本异常分数与排序结果表
- 表 3 Top 异常样本判别结果表
- 表 4 带标签场景下 Isolation Forest 检测性能指标表
7.4 图表题注模板
- 图 1 Isolation Forest 异常分数分布图。
- 图 2 Isolation Forest 异常样本 PCA 二维散点图。
- 图 3 Isolation Forest 带标签检测效果对比图。
7.5 表格示例
表 1 Isolation Forest 异常排序结果表示例
| 样本编号 | anomaly_score |
decision_function |
预测标签 | 排名 |
|---|---|---|---|---|
| \(i_1\) | ||||
| \(i_2\) |
表注:异常判定规则采用 decision_function<0;anomaly_score 为便于论文展示而引入的正向异常强度分数。
8. 单篇终审补充
8.1 图题与表题对齐建议
参数表可写为:表X Isolation Forest 参数设置表。原始数据表可写为:表X Isolation Forest 原始数据表。处理后特征表可写为:表X Isolation Forest 处理后特征表。得分与标签表可写为:表X Isolation Forest 异常得分与预测标签结果表。Top异常表可写为:表X Isolation Forest Top 异常样本排序表。混淆矩阵表可写为:表X Isolation Forest 混淆矩阵表。ROC曲线数据表可写为:表X Isolation Forest ROC 曲线数据表。PR曲线数据表可写为:表X Isolation Forest PR 曲线数据表。图表清单表可写为:表X Isolation Forest 图表索引与路径清单。预处理信息表可写为:表X Isolation Forest 预处理信息表。anomaly_score_hist.png建议写为:图X Isolation Forest 异常分数分布图。decision_function_hist.png建议写为:图X Isolation Forest 决策函数分布图。pca_embedding.png建议写为:图X Isolation Forest PCA 二维嵌入图。roc_curve.png建议写为:图X Isolation Forest ROC 曲线图。pr_curve.png建议写为:图X Isolation Forest PR 曲线图。
8.2 终审说明
- 当前代表性结果目录中的真实主工作簿为
isolation_forest_baseline.xlsx,复现输出为isolation_forest_repro.xlsx。论文若列实验输出文件,应把基线导出与 repro 导出区分开。 - 当前真实工作表全部采用中文命名,如
得分与标签、Top异常、预处理信息等,因此终稿表题不能沿用英文模板名。 - 当前实体图文件位于
charts/子目录下,真实图名包括anomaly_score_hist.png、decision_function_hist.png、pca_embedding.png、roc_curve.png、pr_curve.png。若论文只展示一部分图,建议优先保留得分分布图与 ROC/PR 曲线图。 - 真实 repro 脚本为
repro_isolation_forest.py,并通过INPUT_FILE = 'repro_inputs/isolation_forest_input.csv'读取输入副本。附录复现实验说明应保持这一相对路径口径。 - 当前结果解释应围绕
decision_function<0与anomaly_score=-decision_function两套并行口径展开,不应把路径长度公式重新写成工作簿直接输出值。
8.3 全量强化补充
本篇终审补充绑定的真实算法目录为 具体的算法3/异常检测/IsolationForest-孤立森林,本次采用的代表性结果目录为 具体的算法3/异常检测/IsolationForest-孤立森林/results/__enhanced_isolation_forest_baseline_20260310。
当前目录中真实存在两份工作簿:
isolation_forest_baseline.xlsxisolation_forest_repro.xlsx
两者实测工作表一致,均包含:
参数原始数据处理后特征得分与标签Top异常混淆矩阵ROC曲线数据PR曲线数据图表清单预处理信息
因此这一轮应把 isolation_forest_baseline.xlsx 视为主结果,把 isolation_forest_repro.xlsx 视为复现输出。中文 sheet 体系已经完整覆盖异常得分、阈值评价与预处理信息,正文不需要再套用英文模板名。
当前目录中的真实图文件位于 charts/ 子目录:
charts/anomaly_score_hist.pngcharts/decision_function_hist.pngcharts/pca_embedding.pngcharts/roc_curve.pngcharts/pr_curve.png
这说明该轮真实图证据同时覆盖异常分数分布、决策函数分布、PCA 嵌入与 ROC/PR 曲线。论文如果只保留核心图,建议优先选择 anomaly_score_hist.png、pca_embedding.png 与 ROC/PR 曲线。
复现实物方面,该目录实际包含:
具体的算法3/异常检测/IsolationForest-孤立森林/results/__enhanced_isolation_forest_baseline_20260310/repro_isolation_forest.py具体的算法3/异常检测/IsolationForest-孤立森林/results/__enhanced_isolation_forest_baseline_20260310/repro_inputs/isolation_forest_input.csv
脚本中明确写成 INPUT_FILE = 'repro_inputs/isolation_forest_input.csv'、OUTPUT_FILE = 'isolation_forest_repro.xlsx'。因此这一篇当前的代表性结果目录已经是目录内相对输入副本复现口径。
9. 软件实现核查补充(2026-07)
- 当前主结果目录应写作
具体的算法3/异常检测/IsolationForest-孤立森林/results/__enhanced_isolation_forest_baseline_20260310。 - 正文应围绕
异常分数、阈值评价、ROC曲线数据、PR曲线数据、图表清单、预处理信息来写。 - 图证应对应
anomaly_score_hist.png、decision_function_hist.png、pca_embedding.png、roc_curve.png、pr_curve.png。 - 复现脚本应按
repro_isolation_forest.py + repro_inputs/isolation_forest_input.csv的口径说明。