与实际提供的相比,为啥在 SVM 中排名的特征数量更少?

Posted

技术标签:

【中文标题】与实际提供的相比,为啥在 SVM 中排名的特征数量更少?【英文标题】:Why less number of features being ranked in SVM as compared to actual provided?与实际提供的相比,为什么在 SVM 中排名的特征数量更少? 【发布时间】:2015-02-27 19:49:45 【问题描述】:

我已经训练了一个具有 18881 个特征的 SVM,并且想知道特征的排名。我尝试了SVM equations from e1071 R package?给出的方法,找到了权重向量

w = t(model$coefs) %*% model$SV

在通过str(w) 检查w 时,我得到以下信息:

> str(w)
Formal class 'matrix.csr' [package "SparseM"] with 4 slots
  ..@ ra       : num [1:16725] 1198.1 229 107.5 -22.4 408.3 ...
  ..@ ja       : int [1:16725] 381 396 434 447 3262 4802 9187 10398 11856 13896 ...
  ..@ ia       : int [1:2] 1 16726
  ..@ dimension: int [1:2] 1 18881

我猜@ja 给出了特征的列 id,@ra 给出了相应的权重。在那种情况下,为什么特征数不等于 18881。

我说@ja 是特征的列 ID 是否正确?

正如在提到的 *** 答案中所解释的,我使用了线性内核。我可以对 Radial Kernel 应用相同的方法吗?

【问题讨论】:

你是否已经完成了对包“SparseM”的文档的研究? 这里的实际问题是,为什么不给出所有特征的权重? 谢谢@BondedDust,我明白了。 【参考方案1】:

好的,由于@BondedDust 在 cmets 中提供的帮助,我得到了解释。 sparseM 不存储值为 0 的单元格,因此此处不存储权重为 0 的特征。

ra: Object of class numeric, a real array of nnz elements containing the **non-zero elements** of A.
ja: Object of class integer, an integer array of nnz elements **containing the column indices of the elements stored in ‘ra’**.
ia: Object of class integer, an integer array of nnz elements containing the row indices of the elements stored in ‘ra’.
dimension: Object of class integer, dimension of the matrix

【讨论】:

以上是关于与实际提供的相比,为啥在 SVM 中排名的特征数量更少?的主要内容,如果未能解决你的问题,请参考以下文章

SVM - 训练样本数量与特征数量之间的关系

如何使用 SVM 的权重向量和逻辑回归进行特征重要性?

为啥要对 SVM 特征向量进行余弦归一化?

R中的SVM特征选择

为啥没有参数的函数(与实际函数定义相比)编译?

为啥 classifier.predict() 方法期望测试数据中的特征数量与训练数据中的相同?