正在加载中...

展开本页目录
算法教程EllipticEnvelope-椭圆包络、鲁棒协方差

EllipticEnvelope-椭圆包络、鲁棒协方差

No.161 · 在线教程

EllipticEnvelope-椭圆包络、鲁棒协方差 的真实核心主要位于:

EllipticEnvelope-椭圆包络、鲁棒协方差

1. 方法概述

EllipticEnvelope-椭圆包络、鲁棒协方差 的真实核心主要位于:

  • core/calculator.py
  • utils/elliptic_envelope_exporter.py
  • ui/elliptic_envelope_params_widget.py

从当前项目代码看,这个模块直接调用的是 sklearn 的 EllipticEnvelope,但外围又补了:

  1. 特征列与标签列选择;
  2. 缺失值处理与缩放;
  3. 二维嵌入可视化(PCA / t-SNE);
  4. Top-N 异常样本输出;
  5. Excel 与图表导出。

它适合处理“多数样本近似服从椭圆分布,异常点偏离鲁棒协方差结构”的场景。

2. 数据输入与预处理

2.1 输入结构

设特征矩阵为

$$ X=(x_{ij})_{n\times d},\qquad x_i\in\mathbb{R}^d \tag{1} $$

代码允许额外指定:

  • id_column
  • label_column
  • outlier_label_value

其中标签列只用于评估,不参与模型拟合。

2.2 缺失值处理

当前实现支持:

  1. drop
  2. median
  3. mean
  4. zero

若采用均值或中位数填补,则对第 \(j\) 个特征有

$$ x_{ij}^{(\text{fill})}= \begin{cases} \bar x_j, & \text{mean}\\ \mathrm{median}(x_{\cdot j}), & \text{median}\\ 0, & \text{zero} \end{cases} \tag{2} $$

2.3 缩放

代码可选:

  1. standard
  2. robust
  3. minmax
  4. none

其中标准化形式可写为

$$ z_{ij}=\frac{x_{ij}-\mu_j}{\sigma_j} \tag{3} $$

RobustScaler 则对应以中位数和 IQR 为基础的稳健缩放。

3. 椭圆包络模型

3.1 鲁棒协方差与马氏距离

椭圆包络方法本质上依赖一个鲁棒位置向量 \(\hat\mu\) 与鲁棒协方差矩阵 \(\hat\Sigma\)。对样本 \(x_i\),马氏距离可写为

$$ D_i^2=(x_i-\hat\mu)^\top \hat\Sigma^{-1}(x_i-\hat\mu) \tag{4} $$

代码会调用 model.mahalanobis(X) 输出这一量,便于后续报告使用。

3.2 分数与阈值

项目同时保留 sklearn 的三种输出:

  1. score_samples
  2. decision_function
  3. pred_label

并额外定义直观异常分数:

$$ \mathrm{anomaly\_score}_i=-\,\mathrm{decision\_function}_i \tag{5} $$

因此:

  • decision_function < 0 判异常;
  • anomaly_score > 0 越大越异常。

当前代码把阈值固定写成

$$ \hat y_i= \begin{cases} -1, & \mathrm{decision\_function}_i<0\\ 1, & \mathrm{otherwise} \end{cases} \tag{6} $$

threshold_decision_function = 0

3.3 offset_ 的含义

源码还会导出 offset_,它对应 score_samples 这一侧的阈值基准,因此结果表会同时给出:

  • threshold_decision_function = 0
  • offset_(score_samples threshold)

4. 评估与二维嵌入

4.1 有标签时的指标

若提供标签列且能识别出“异常标签值”,代码会计算

$$ \mathrm{Precision}=\frac{TP}{TP+FP} \tag{7} $$

$$ \mathrm{Recall}=\frac{TP}{TP+FN} \tag{8} $$

$$ \mathrm{F1}=\frac{2\cdot \mathrm{Precision}\cdot \mathrm{Recall}}{\mathrm{Precision}+\mathrm{Recall}} \tag{9} $$

并在二分类标签有效时追加:

  • roc_auc
  • average_precision

这些指标都是基于 anomaly_score 计算的。

4.2 二维嵌入

当前 UI 支持:

  1. pca
  2. tsne
  3. none

t-SNE 模式下,若样本数过大,代码会随机下采样到 embedding_max_samples 后再嵌入,因此导出的二维散点图不一定覆盖全部样本。

5. 输出结果与论文应用

5.1 Excel 工作表

导出器会保存:

  • 参数
  • 处理信息
  • 原始数据预览
  • 原始数据
  • 异常得分
  • 阈值
  • 异常Top
  • 指标
  • PR曲线
  • 二维嵌入
  • 标签对照
  • 图表清单

5.2 论文写作表述建议

可以写成:

  • 采用基于鲁棒协方差估计的 Elliptic Envelope 对样本进行异常检测;
  • decision_function=0 为判别阈值,且将 -decision_function 作为异常强度分数;
  • 当存在真实标签时,使用 Precision、Recall、F1、ROC-AUC 与 AP 评价检测性能。

6. 实现说明与注意事项

6.1 这是“椭圆分布假设”下的异常检测

若数据本身呈复杂非椭圆形状,EllipticEnvelope 的表现可能弱于 LOF、IsolationForest 等方法。

6.2 当前模块允许自动猜测异常标签值

如果用户不给 outlier_label_value,代码会优先尝试从 -1 / 1 / True / 异常 / outlier / anomaly 等常见值中自动推断。

6.3 Top-N 只影响展示,不改变模型判定

top_n_outliers 只决定 异常Top 工作表输出多少条记录,不会改变 pred_label 的实际判别规则。

7. 论文写作模板

7.1 方法描述模板

“本文采用基于鲁棒协方差估计与椭圆分布假设的异常检测方法,通过鲁棒位置向量与协方差矩阵构造样本的马氏距离,并利用 decision_function 判定样本是否偏离正常椭圆区域。依据项目当前实现,软件同时输出 score_samplesdecision_functionanomaly_score=-decision_function 三类分数,其中异常判别以 decision_function<0 为准。因此,论文中应同时说明模型依赖近似椭圆分布假设,以及异常分数与判别阈值的代码口径。”

7.2 结果解释模板

结果部分可写为:anomaly_score 越大,说明样本越偏离鲁棒中心区域;当 decision_function<0 时,样本被判为异常。若二维嵌入图中异常点集中分布在椭圆区域外围,则说明鲁棒协方差模型较好地捕捉了主体样本结构;若异常点在嵌入空间中呈现非椭圆散布,则需要进一步讨论该方法与数据分布假设之间的适配性。对于带标签场景,建议同时报告 Precision、Recall、F1、ROC-AUC 与 AP,以从分类阈值与排序分数两个角度评价检测性能。

7.3 表格标题模板

  1. 表 1 椭圆包络模型参数与预处理设置表
  2. 表 2 样本异常分数与判别结果汇总表
  3. 表 3 Top-N 异常样本排序结果表
  4. 表 4 带标签场景下椭圆包络检测性能指标表

7.4 图表题注模板

  1. 图 1 椭圆包络异常分数分布图。
  2. 图 2 椭圆包络异常检测的 PCA 或 t-SNE 二维嵌入散点图。
  3. 图 3 椭圆包络模型带标签检测效果对比图。

7.5 表格示例

表 1 椭圆包络异常检测结果表示例

样本编号 anomaly_score decision_function pred_label 是否异常
\(i_1\)
\(i_2\)

表注:异常判别规则为 decision_function<0anomaly_score=-decision_function 仅用于更直观地展示异常强度。

8. 单篇终审补充

8.1 图题与表题对齐建议

  • 参数 表可写为:表X 椭圆包络模型参数与预处理设置表。
  • 处理信息 表可写为:表X 椭圆包络数据处理信息表。
  • 原始数据预览 表可写为:表X 原始数据预览表。
  • 原始数据 表可写为:表X 椭圆包络原始样本表。
  • 异常得分 表可写为:表X 样本异常得分结果表。
  • 阈值 表可写为:表X 椭圆包络判别阈值表。
  • 异常Top 表可写为:表X Top-N 异常样本排序表。
  • 指标 表可写为:表X 椭圆包络检测性能指标汇总表。
  • PR曲线 表可写为:表X 椭圆包络 PR 曲线数据表。
  • 二维嵌入 表可写为:表X 椭圆包络二维嵌入结果表。
  • 标签对照 表可写为:表X 椭圆包络预测标签与真实标签对照表。
  • 图表清单 表可写为:表X 椭圆包络图表索引与路径清单。
  • score_hist.png 建议写为:图X 椭圆包络异常分数分布图。
  • pr_curve.png 建议写为:图X 椭圆包络 PR 曲线图。
  • embedding_2d.png 建议写为:图X 椭圆包络二维嵌入散点图。

8.2 终审说明

  • 当前代表性结果目录中的真实主工作簿为 EllipticEnvelope-椭圆包络、鲁棒协方差分析结果_20260320_003019_enhanced.xlsx。终稿若引用结果文件名,应直接按这一真实名称书写,不要替换成英文简写版。
  • 当前真实工作表是 参数/处理信息/原始数据预览/原始数据/异常得分/阈值/异常Top/指标/PR曲线/二维嵌入/标签对照/图表清单,与一些其他异常检测算法的英文 sheet 体系不同,论文表题必须按这套中文工作表口径对齐。
  • 当前实体图文件位于 charts/ 子目录下,代表性图为 score_hist.pngpr_curve.pngembedding_2d.png。如果论文中需要展示 ROC 图,应先确认该次结果目录是否真实生成,而不能直接沿用通用模板。
  • 当前代表性目录里未直接列出 repro 脚本,但同算法其他真实结果目录中已有 repro_elliptic_envelope.py,并通过 INPUT_FILE = 'repro_inputs/elliptic_ui_flow_input.csv' 读取输入副本。附录若描述复现实验,应采用这一真实相对路径结构。
  • 二维嵌入 是否覆盖全部样本取决于 embedding_methodembedding_max_samples。若使用 t-SNE 且样本量较大,导出的二维散点图可能只对应下采样结果,正文里应避免把它解释为“全样本空间结构”的严格投影。

8.3 全量强化补充

本篇终审补充绑定的真实算法目录为 具体的算法3/异常检测/EllipticEnvelope-椭圆包络、鲁棒协方差。本次采用两类真实结果证据:主结果目录 具体的算法3/异常检测/EllipticEnvelope-椭圆包络、鲁棒协方差/results/EllipticEnvelope-椭圆包络、鲁棒协方差分析结果_20260320_003019_enhanced,以及含 repro 证据的 ui_flow 目录 具体的算法3/异常检测/EllipticEnvelope-椭圆包络、鲁棒协方差/results/ui_flow_pytest_elliptic/EllipticEnvelope-椭圆包络、鲁棒协方差分析结果_20260329_170101

主结果目录中的工作簿为:

  • EllipticEnvelope-椭圆包络、鲁棒协方差分析结果_20260320_003019_enhanced.xlsx

ui_flow 目录中实际同时保留:

  • EllipticEnvelope-椭圆包络、鲁棒协方差分析结果_20260329_170101.xlsx
  • EllipticEnvelope_results.xlsx

这些工作簿实测工作表一致,均包含:

  • 参数
  • 处理信息
  • 原始数据预览
  • 原始数据
  • 异常得分
  • 阈值
  • 异常Top
  • 指标
  • PR曲线
  • 二维嵌入
  • 标签对照
  • 图表清单

因此这一篇不能简单写成“代表性目录只有一份结果簿”。更准确的口径应是:enhanced 目录给出主结果,ui_flow 目录补充了带 repro 的同构结果簿。

主结果目录中的真实图文件位于:

  • charts/score_hist.png
  • charts/pr_curve.png
  • charts/embedding_2d.png

ui_flow 目录中的同构结果也保留了这三张图。因此本轮真实图证据只有异常分数直方图、PR 曲线图和二维嵌入图三类。

复现实物方面,ui_flow 目录实际包含:

  • 具体的算法3/异常检测/EllipticEnvelope-椭圆包络、鲁棒协方差/results/ui_flow_pytest_elliptic/EllipticEnvelope-椭圆包络、鲁棒协方差分析结果_20260329_170101/repro_elliptic_envelope.py
  • 具体的算法3/异常检测/EllipticEnvelope-椭圆包络、鲁棒协方差/results/ui_flow_pytest_elliptic/EllipticEnvelope-椭圆包络、鲁棒协方差分析结果_20260329_170101/repro_inputs/elliptic_ui_flow_input.csv

脚本中明确写成 INPUT_FILE = 'repro_inputs/elliptic_ui_flow_input.csv'OUTPUT_DIR = '.'。因此该算法的真实可复现性应写成“主 enhanced 目录负责主结果,ui_flow 目录补充相对路径 repro 证据”,而不是说主结果目录本身已经带 repro 脚本。

9. 软件实现核查补充(2026-07)

  • 当前主 enhanced 结果目录应写作 具体的算法3/异常检测/EllipticEnvelope-椭圆包络、鲁棒协方差/results/EllipticEnvelope-椭圆包络、鲁棒协方差分析结果_20260329_170101,ui_flow 复现证据目录应写作 具体的算法3/异常检测/EllipticEnvelope-椭圆包络、鲁棒协方差/results/ui_flow_pytest_elliptic/EllipticEnvelope-椭圆包络、鲁棒协方差分析结果_20260329_170101
  • 正文应围绕 异常分数阈值指标PR曲线二维嵌入标签对照图表清单 来写。
  • 图证应对应 score_hist.pngpr_curve.pngembedding_2d.png,并把主结果图和 ui_flow 同构图分开说明。
  • 复现脚本应按 repro_elliptic_envelope.py + repro_inputs/elliptic_ui_flow_input.csv 的口径说明。