分类变量是否必须在 SVM 中进行虚拟编码?

机器算法验证 r 分类数据 支持向量机 插入符号
2022-04-14 02:53:13

我将 R 与包kernlab / caret一起使用,并使用 SVM ( ksvm) 进行一些分析。我正在使用基于径向的内核进行分类。

我有一些分类变量被设置为 R 中的因子,因此它们在内部表示为不同的整数。

假设对于具有 3 个级别的分类变量,我可以不理会它,SVM 会自动处理这个问题:级别 1、2、3。或者我是否必须将它们虚拟编码到两列,如下所示:

x0     x1
 0      0          = level 1
 0      1          = level 2
 1      0          = level 3

ETC?

我查看了文档,如果您使用公式接口(我这样做),那么它会自动处理:

“如果预测变量包含因子,则必须使用公式接口才能得到正确的模型矩阵。”

这是否意味着只要我使用公式界面“虚拟编码”就会在幕后发生?

1个回答

实际上,当您查看 model.matrix 文档时,您会发现指定公式的方式会自动对因子变量进行虚拟编码。您可以通过对比选项明确指定如何处理因子变量。

希望有帮助!!