关于Scikit-learn中OneClassSVM的两项技术疑问咨询
关于OneClassSVM的两个核心疑问解答
刚好我之前也在无监督异常检测场景里用OneClassSVM做过不少实验,对你的这两个疑问很熟悉,给你明确的解答:
1. 训练时的样本选择
OneClassSVM是专为无监督异常检测设计的算法,训练阶段只需要使用正常样本就足够了。它的核心逻辑是学习正常数据的特征分布,建立一个“边界”来圈定正常样本的范围;当预测阶段遇到不在这个范围内的样本时,就会被判定为异常。
如果训练时混入异常样本,尤其是当异常样本占比不低的情况下,模型会错误地把部分异常数据的分布纳入“正常”范围,反而降低异常检测的准确率。所以建议只使用你确认的正常样本进行训练。
2. 预测标签的含义
在Scikit-learn的OneClassSVM中,predict()方法返回的标签规则很明确:
- 1代表正常样本(符合模型学习到的正常分布)
- -1代表异常样本(偏离了正常分布)
要是怕记混,你可以快速做个小测试:用训练好的模型预测一个明显和训练样本差异很大的样本,会发现它返回的是-1,这样就能直观验证这个规则了。
内容的提问来源于stack exchange,提问作者mousa alsulaimi
相关产品推荐
相关产品推荐

