使用线性 SVM 混合连续和二进制数据?

机器算法验证 分类数据 支持向量机 特征选择 线性模型 特征工程
2022-02-07 01:14:43

所以我一直在玩 SVM,我想知道这是否是一件好事:

我有一组连续特征(0 到 1)和一组转换为虚拟变量的分类特征。在这种特殊情况下,我将测量日期编码为一个虚拟变量:

我有 3 个时期的数据,我为它们保留了 3 个特征编号:

20:21:22:

因此,根据数据来自哪个时期,不同的特征将被分配 1;其他人将得到 0。

SVM 是否可以正常工作,或者这是一件坏事?

我使用 SVMLight 和线性内核。

2个回答

从http://www.quora.com/Machine-Learning/What-are-good-ways-to-handle-discrete-and-continuous-inputs-together/answer/Arun-Iyer-1复制我的答案

  • 重新缩放有界连续特征:所有有界的连续输入,将它们重新缩放为[1,1]通过x=2xmaxminmaxmin.
  • 标准化所有连续特征:所有连续输入都应该标准化,我的意思是,对于每个连续特征,计算其平均值()和标准差()并执行μσx=xμσ
  • 二值化分类/离散特征:对于所有分类特征,将它们表示为多个布尔特征。例如,不是有一个名为marriage_status的特征,而是有3个布尔特征——married_status_single、married_status_married、married_status_divorced,并将这些特征适当地设置为1或-1。如您所见,对于每个分类特征,您都添加了 k 个二元特征,其中 k 是分类特征所采用的值的数量。

现在,您可以在单个向量中表示所有特征,我们可以假设这些特征嵌入在中,并开始使用现成的包进行分类/回归等。Rn

附录:如果您使用基于内核的方法,您可以避免这种显式嵌入到并专注于为您的特征向量设计自定义内核。您甚至可以将内核拆分为多个内核,并使用 MKL 模型来学习它们的权重。但是,您可能希望确保内核的半正定性,以便求解器没有任何问题。但是,如果您不确定是否可以设计自定义内核,您可以按照早期的嵌入方法。Rn

只要您进行一些预处理,SVM 就会同时处理二进制和连续变量:所有特征都应该被缩放或标准化。在那一步之后,从算法的角度来看,特征是连续的还是二元的并不重要:对于二元,它看到的样本要么“远”,要么非常相似;对于连续值,也有中间值。内核与变量的类型无关。