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

如何统计R语言LiblineaR包中支持向量的数量?附示例模型

好问题!LiblineaR包不像e1071这类常用SVM包那样直接提供支持向量的数量或索引,但咱们可以通过模型输出的权重结合训练数据手动计算出来。针对你写的这个多分类L1正则L2-loss SVM模型(type=5),我给你一步步拆解怎么操作:

核心思路

在L2-loss SVM中,支持向量是那些松弛变量ξ>0的样本——简单说就是落在间隔边界内侧或者刚好在边界上的样本。对于多分类的one-vs-rest策略(LiblineaR默认用这个),我们需要针对每个类别分别判断样本是否符合支持向量的条件。

具体步骤

1. 准备数据并提取模型权重

你的模型m里的$W属性是权重矩阵:第一行是截距项,后面的行对应每个特征的权重。我们先给缩放后的训练数据加上截距列:

# 给缩放后的训练数据添加截距列(全1的列)
s_with_intercept <- cbind(1, s)
# 获取训练集的类别水平
class_levels <- levels(yTrain)

2. 计算所有样本的决策值

用权重矩阵计算每个样本在每个类别上的决策值:

# 决策值矩阵:行数=训练样本数,列数=类别数
decision_values <- s_with_intercept %*% m$W

3. 标记支持向量

遍历每个类别,判断哪些样本属于支持向量:

  • 对于当前类的正样本:如果决策值 < 1,说明它落在间隔边界内侧,是支持向量
  • 对于当前类的负样本:如果决策值 > -1,同样属于支持向量
# 初始化一个逻辑向量,标记每个样本是否为支持向量
is_sv <- logical(nrow(s))

for (k in seq_along(class_levels)) {
  # 当前类的决策值
  dec_vals <- decision_values[, k]
  # 正样本索引
  pos_idx <- yTrain == class_levels[k]
  # 标记正样本中的支持向量
  is_sv[pos_idx] <- is_sv[pos_idx] | (dec_vals[pos_idx] < 1)
  # 负样本索引
  neg_idx <- yTrain != class_levels[k]
  # 标记负样本中的支持向量
  is_sv[neg_idx] <- is_sv[neg_idx] | (dec_vals[neg_idx] > -1)
}

4. 统计支持向量数量

最后直接统计标记为TRUE的样本数即可:

# 支持向量总数
sv_count <- sum(is_sv)
cat("支持向量数量:", sv_count, "\n")

# 如果需要查看支持向量在训练集中的索引
sv_indices <- which(is_sv)

简化版:用predict函数省步骤

你也可以直接用predict函数获取决策值,省去手动构造截距列的麻烦:

# 对训练集预测,同时获取决策值
train_pred <- predict(m, s, decisionValues = TRUE)
decision_values <- train_pred$decisionValues

# 标记支持向量的逻辑和上面完全一致
is_sv <- logical(nrow(s))
class_levels <- levels(yTrain)

for (k in seq_along(class_levels)) {
  dec_vals <- decision_values[, k]
  pos_idx <- yTrain == class_levels[k]
  is_sv[pos_idx] <- is_sv[pos_idx] | (dec_vals[pos_idx] < 1)
  neg_idx <- yTrain != class_levels[k]
  is_sv[neg_idx] <- is_sv[neg_idx] | (dec_vals[neg_idx] > -1)
}

sv_count <- sum(is_sv)

额外说明

  • 这个逻辑专门适配你用的type=5模型(L1正则L2-loss多分类SVM),如果换其他类型的LiblineaR模型,判断条件可能需要微调,但核心都是基于SVM的间隔原理。
  • 别把L1正则带来的「权重零值」和支持向量混淆哦——前者是特征层面的稀疏性,后者是样本层面的概念,两者没有直接对应关系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:42:44