One-Class SVM 如何用于异常检测?
简化版
One-Class SVM 用正常数据在核空间中学习包含大多数样本的边界,把边界外点判异常。ν 控制训练异常比例上界和支持向量比例下界,gamma 控制边界局部性;它依赖正常训练集纯度与缩放。
详细版
-
训练通常只有正常或以正常为主的数据。
-
decision score 正负对应边界内外,但方向需查实现。
-
高 gamma 会形成碎片化正常小岛。
-
ν 不是线上异常率预测。
-
阈值可按验证异常成本再调整。
完整版教学
一、它学习正常支持区域而非两类分界
在特征空间中,One-Class SVM 寻找把数据与原点分开的最大间隔超平面(常见表述),RBF 下对应输入空间非线性包络。
若训练集混入大量异常,边界会把异常也学成正常;无监督不代表无需干净基线。
实际系统还需要用少量真实异常或有代表性的注入异常选择阈值,并持续监控正常分布漂移;模型给出的只是相对训练支持区域的异常程度,不等同于业务事故概率。
二、底层机制与公式
min 0.5||w||²+(1/(nu*n))*sum xi_i-rho
w·phi(x_i)>=rho-xi_i
三、带数字的推演
n=1000、ν=0.05 提供训练异常比例不超过约 5% 的优化直觉,并要求至少约 5% 支持向量;线上真实异常率仍可能完全不同。
四、方案对比
| 方案/对象 | 核心特点 | 代价或边界 |
|---|---|---|
| One-Class SVM | 非线性边界、适合中小数据 | 核扩展差 |
| Isolation Forest | 大规模与高维较方便 | 基于随机切分 |
| Autoencoder | 复杂表示 | 训练/阈值更难 |
五、执行流程
只用历史可得特征 -> scaler fit 正常训练集 -> 搜索 ν/gamma
-> 有标签验证或注入异常 -> 选阈值 -> 监控 score/告警率
六、边界条件与工程代价
维度高时距离集中会让 RBF 边界失效,可先特征选择/PCA,但这些步骤也只在训练集拟合。
合成异常若过于简单会虚高效果,验证应尽量覆盖真实异常类型与困难正常样本。
记忆钩子:One-Class SVM 是“用正常样本画包络”:ν 管允许越界比例,gamma 管包络细碎程度,验证阈值才连接业务异常。
七、常见误区与追问
-
误区:ν 就是线上期望异常率。 它是训练优化约束,不决定未来基率。
-
追问:为何训练集要干净? 污染异常会被包进正常区域。
-
误区:score 小就一定是业务异常。 只表示相对训练支持区域异常。
-
追问:gamma 太大怎样? 正常区域碎片化并过拟合。
-
追问:如何选阈值? 用真实或代表性验证异常按成本选择。
八、加强记忆
One-Class SVM 是“用正常样本画包络”:ν 管允许越界比例,gamma 管包络细碎程度,验证阈值才连接业务异常。
记忆时把训练数据纯度也放进答案:污染会扩大正常包络,高维距离集中会削弱 RBF,因此缩放、特征选择和漂移监控缺一不可。