You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言e1071包One-class SVM预测始终返回FALSE问题求助

问题根因

所有预测结果始终返回FALSE的核心原因是径向基核的gamma参数设置严重不合理,附带1个不影响运行的小问题:

  • RBF核参数gamma在e1071的svm函数中定义为1/(特征维度*σ²),你直接设置为128(0.5*256)数值过大:过高的gamma会让任意两个样本的核计算结果趋近于0,模型会判定所有样本都和训练的正常类(数字0)距离过远,全部归为异常,因此返回代表异常的FALSE。
  • 变量名digits.train.bandwith存在拼写错误(正确拼写为bandwidth),但不影响代码运行。

修复方法

调整gamma到合理区间即可,256维特征的常规初始值为1/特征数≈0.0039,你可以将对应代码修改为:

# 替换原gamma参数赋值行
digits.train.gamma <- 1/ncol(digits.train.features)
# 训练模型时传入正确的gamma参数
digits.train.model <- svm(x = digits.train.features, type = 'one-classification', kernel = 'radial', nu = digits.train.nu, gamma = digits.train.gamma)

修改后训练结果会符合nu参数的预期:nu=0.5的设置下,约一半的训练集0样本会被判定为正常(返回TRUE),另一半被判定为异常。如果希望提升正常类的召回率,可以降低nu取值,比如设置nu=0.1,代表最多允许10%的正常训练样本被误判为异常。

内容的提问来源于stack exchange,提问作者tudoroancea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:24:09