类别

版本

支持向量机(RapidMiner Studio Core)

剧情简介

该算子是一个支持向量机(SVM)学习者。的内部Java实现mySVM斯特凡·鲁平著。

描述

这个学习器使用Java实现的支持向量机mySVM斯特凡·鲁平著。这种学习方法可以同时用于回归和分类,对许多学习任务提供了快速的算法和良好的结果。mySVM适用于线性或二次甚至非对称损失函数。

该操作符支持各种内核类型,包括点,径向,多项式,神经,方差分析,伊帕契涅尼科夫,高斯组合multiquadric。这些内核类型的解释在参数部分给出。

下面是支持向量机的基本描述。标准支持向量机接受一组输入数据,并对每个给定的输入预测两种可能的类别中哪一种包含输入,使支持向量机成为非概率二元线性分类器。给定一组训练示例,每个示例标记为属于两个类别之一,SVM训练算法构建一个模型,将新示例分配到一个类别或另一个类别。SVM模型是将示例表示为空间中的点,通过映射使单独类别的示例被尽可能宽的明显间隙划分。然后,新的例子被映射到相同的空间中,并根据它们落在间隔的哪一边来预测它们属于哪个类别。

更正式地说,支持向量机在高维或无限维空间中构造一个超平面或一组超平面,可用于分类、回归或其他任务。直观地说,一个很好的分离是通过超平面来实现的,这个超平面与任何类中最近的训练数据点之间的距离最大(所谓的功能边界),因为一般来说,边界越大,分类器的泛化误差就越小。虽然原问题可以在有限维空间中表述,但通常情况下,待判别的集合在该空间中不是线性可分的。出于这个原因,有人建议将原来的有限维空间映射到一个更高维的空间中,可能会使该空间中的分离更容易。为了保持合理的计算负荷,支持向量机方案所使用的映射被设计为通过用核函数来定义点积,以确保点积可以很容易地根据原始空间中的变量进行计算乐鱼官网手机版下载K (x, y)选择以适应问题。高维空间中的超平面被定义为与该空间中的向量的内积为常数的点的集合。

输入

  • 训练集(数据表)

    这个输入端口需要一个ExampleSet。此运算符不能处理标称属性;它可以应用于具有数字属性的数据集。因此,在应用此操作符之前,通常必须使用标称到数值操作符。

输出

  • 模型(内核模型)

    SVM模型从该输出端口发送。这个模型现在可以应用于未知的数据集。

  • 榜样(数据表)

    作为输入给出的ExampleSet不会通过该端口更改为输出。这通常用于在进一步的操作符中重用相同的ExampleSet,或者在结果工作区中查看ExampleSet。

  • 估计性能(性能向量)

    该端口提供了SVM模型的性能向量,该向量给出了该模型的统计性能估计。

  • 权重(权重)

    该端口用于下发属性权重。这只有在使用点内核类型时才有可能,而对于其他内核类型则不可能。

参数

  • kernel_type通过此参数选择核函数的类型。支持以下内核类型:点,径向,多项式,神经,方差分析,伊帕契涅尼科夫,高斯组合,多重二次
    • dot:点核定义为k(x,y)=x*y,即它是x与y的内积。
    • radial:径向核由exp(-g ||x-y|| |^2)定义,其中g是伽马,它由内核参数gamma指定。可调参数gamma在内核的性能中起着重要作用,应该仔细地针对手头的问题进行调优。
    • 多项式:多项式核定义为k(x,y)=(x*y+1)^d,其中d为多项式的度数,由核度数参数指定。多项式核非常适合于所有训练数据都归一化的问题。
    • neural:神经核由两层神经网络tanh(a x*y+b)定义,其中a是alpha, b是截距常数。这些参数可以使用内核a和内核b参数进行调整。alpha的一个常见值是1/N,其中N是数据维度。注意,并不是a和b的所有选择都能得到有效的核函数。
    • anova:方差核被定义为对exp(-g (x-y))求和的d次幂,其中g是伽马,d是度。伽玛和度分别由核参数和核度参数调节。
    • epachnenikov: epachnenikov核函数是这个函数(3/4)(1-u2)对于u在-1和1之间,对于u在这个范围之外为0。它有两个可调参数核sigma1和核度。
    • gaussian_combination:这是高斯组合核。它有可调的参数kernel sigma1, kernel sigma2和kernel sigma3。
    • multiquadric: multiquadric核由√(x-y||^2 + c^2)定义。它有可调的参数核sigma1和核sigma移位。
    选择范围:
  • kernel_gamma这是支持向量机的核参数。这仅在内核类型参数设置为径向方差分析。范围:真正的
  • kernel_sigma1这是SVM核参数sigma1。这仅在内核类型参数设置为epachnenikov高斯组合multiquadric。范围:真正的
  • kernel_sigma2这是SVM内核参数sigma2。这仅在内核类型参数设置为高斯组合范围:真正的
  • kernel_sigma3这是SVM核参数sigma3。这仅在内核类型参数设置为高斯组合范围:真正的
  • kernel_shift这是SVM核参数的移位。这仅在内核类型参数设置为multiquadric范围:真正的
  • kernel_degree这是SVM的核参数度。这仅在内核类型参数设置为多项式方差分析epachnenikov范围:真正的
  • kernel_a这是支持向量机内核参数a内核类型参数设置为神经。范围:真正的
  • kernel_b这是SVM核参数b内核类型参数设置为神经。范围:真正的
  • kernel_cache这是一个专家参数。它以兆字节为单位指定内核计算的缓存大小。范围:真正的
  • C这是支持向量机复杂性常数,它设置了错误分类的容忍度,其中较高的C值允许“软”边界,较低的C值创建“硬”边界。复杂度常数太大可能导致过度拟合,而值太小可能导致过度泛化。范围:真正的
  • convergence_epsilon这是一个优化器参数。它指定了KKT条件的精度。范围:
  • max_iterations这是一个优化器参数。它指定在指定次数的迭代之后停止迭代。范围:整数
  • 规模这是一个全局参数。如果选中,则对示例值进行缩放,并为测试集存储缩放参数。范围:布尔
  • L_pos对于正例,支持向量机复杂度常数的一个因子。这个参数是损失函数的一部分。范围:真正的
  • L_neg支持向量机复杂度常数的一个因子。这个参数是损失函数的一部分。范围:真正的
  • ε此参数指定不敏感常数。如果预测值与真实值如此接近,就不会有损失。这个参数是损失函数的一部分。范围:真正的
  • epsilon_plus这个参数是损失函数的一部分。它只指定了正偏差。范围:真正的
  • epsilon_minus这个参数是损失函数的一部分。它只指定了负偏差。范围:真正的
  • balance_cost如果选中,则调整Cpos和Cneg以适应类的相对大小。范围:布尔
  • quadratic_loss pos对正偏差使用二次损失。这个参数是损失函数的一部分。范围:布尔
  • quadratic_loss_neg对负偏差使用二次损失。这个参数是损失函数的一部分。范围:布尔

教程的过程

开始使用SVM

这是一个简单的示例过程,让您开始使用SVM操作符。Retrieve操作符用于加载‘Golf’数据集。将标称到数值运算符应用于其上,以将其标称属性转换为数值形式。这一步是必要的,因为SVM算子不能取标称属性,它只能使用数值属性进行分类。然后将SVM算子生成的模型应用于“Golf-Testset”数据集。对该数据集进行了标称到数值运算。这是必要的,因为测试和训练数据集应该采用相同的格式。该模型的统计性能是使用performance操作符度量的。这是一个非常基本的过程。建议您对SVM有更深入的了解,以便通过此操作符获得更好的结果。 The support vector machine (SVM) is a popular classification technique. However, beginners who are not familiar with SVM often get unsatisfactory results since they miss some easy but significant steps.

建议使用“m”数字来表示m类别属性。m个数字中只有一个是1,其他的都是0。例如,Outlook {overcast, sunny, rain}这样的三类别属性可以表示为(0,0,1)、(0,1,0)和(1,0,0)。这可以通过在标称到数字运算符中将编码类型参数设置为“虚拟编码”来实现。通常,如果属性中的值的数量不是太大,那么这种编码可能比使用单个数字更稳定。

为了从支持向量机中得到更准确的分类模型,建议使用缩放方法。缩放的主要优点是避免较大数值范围内的属性支配较小数值范围内的属性。另一个优点是在计算过程中避免了数值上的困难。由于核值通常依赖于特征向量的内积,例如线性核和多项式核,较大的属性值可能会导致数值问题。乐鱼官网手机版下载应该在训练和测试数据集上执行缩放。在此过程中,对尺度参数进行了校核。取消选中规模参数并再次运行该进程。您将看到,这一次它比缩放所花费的时间要长得多。

为了从这个操作符中获得更好的结果,您应该很好地理解内核类型以及与每种内核类型相关的不同参数。在这个示例过程中使用了高斯组合核。所有参数使用默认值。该模型的准确率仅为35.71%。尝试改变不同的参数来获得更好的结果。如果您将参数C更改为1而不是0,您将看到模型的准确性上升到64.29%。因此,您可以看到对参数进行微小的更改如何对总体结果产生重大影响。因此,在使用中对内核类型参数有一个很好的理解是非常必要的。同样重要的是,要很好地理解不同的内核类型,并为ExampleSet选择最合适的内核类型。尝试在这个示例进程中使用多项式核(也将参数C设置为0); you will see that accuracy is around 71.43% with default values for all parameters. Change the value of the parameter C to 1 instead of 0. Doing this increased the accuracy of model with gaussian combination kernel, but here you will see that accuracy of the model drops.

我们对大多数参数使用默认值。为了得到更准确的结果,应该仔细选择这些值。通常使用交叉验证之类的技术来为所考虑的ExampleSet找到这些参数的最佳值。