gpt4 book ai didi

machine-learning - 支持向量机: Feature Transformation

转载 作者:行者123 更新时间:2023-11-30 09:11:37 25 4
gpt4 key购买 nike

当我手头有经过训练的 SVM 模型时,如何对测试数据进行转换?我正在尝试模拟数学方程和经过训练的 SVM 模型(使用 RBF 内核)的 SVM 输出。我该怎么做?

在SVM中,使用的一些常见内核是:

enter image description here

这里xixj代表两个样本。现在,如果数据有 5 个样本,则此转换是否包括两个样本的所有组合以生成转换后的特征空间,例如 x1 和 x1、x1 和 x2、x1 和 x3、...、x4 和 x5、x5和 x5。

如果数据有两个特征,则 2 阶多项式变换会将输入变换为 3 维,正如她在幻灯片 15 http://www.robots.ox.ac.uk/~az/lectures/ml/lect3.pdf 中所解释的那样

现在如何使用 RBF 核找到类似的变换解释?我正在尝试编写一段代码来转换测试数据,以便我可以在其上应用经过训练的 SVM 模型。

最佳答案

这比那要复杂得多。简而言之 - 您将数据直接映射到特征空间。您只需将点积更改为由内核导出的点积即可。当您使用多项式内核时,SVM“内部”会发生什么,每个点实际上(间接)转换为 O(d^p)维空间(其中 d-输入数据维度,p-多项式核的次数)。从数学角度来看,您使用一些(通常未知的)投影 phi_K(x)它具有 K(x, y) = <phi_K(x), phi_K(y)> 的属性,仅此而已。在 SVM 实现中,您不需要实际的数据表示(因为 phi_K(x) 通常很大,有时甚至是无限的,就像在 RBF 情况下一样),但它需要您的点与训练集的每个元素的点积向量。

因此,您所做的(在实现中,而不是从数学角度来看)是提供:

  • 在训练整个 Gram 矩阵期间,G定义为G_ij = K(x_i, x_j)哪里x_i是第 i 个训练样本
  • 在测试过程中,当您获得新点 y您将其作为点积向量 H 提供给 SVM这样H_i = K(y, x_i) ,又在哪里x_i是你的训练点(事实上,你只需要支持向量的值,但许多实现,如 libsvm,实际上需要训练集大小的向量 - 如果 K(y, x_j) 不是训练,你可以简单地为 x_j 输入 0矢量)

请记住,这与在上述表示的“顶部”训练线性 SVM 不同。这只是实现通常接受数据的一种方式,因为它们需要点积(函数)的定义,并且传递数字通常比传递函数更容易(但其中一些,如 scikit-learn SVC 模块,实际上接受函数作为内核参数)。

那么什么是RBF核呢?它实际上是从点到正态分布的函数空间的映射,其均值为训练点。那么点积就是这两个函数的乘积从 -inf 到 +inf 的积分。听起来很复杂?乍一看,这是一个非常好的技巧,值得理解!

关于machine-learning - 支持向量机: Feature Transformation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35290574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com