1

我已经在 AWS Elastic Map Reduce(EMR) 上安装了 spark,并且一直在使用 MLLib 中的包运行 SVM。但是没有选项可以选择用于构建模型的参数,例如内核选择和错误分类成本(如 R 的 e1071 包中)。有人可以告诉我在构建模型时如何设置这些参数吗?

4

2 回答 2

1

摘要/ TL;DR:

SVMWithSGD 的硬编码方法是:

私有 val 梯度 = new HingeGradient ()
私有 val 更新器 new SquaredL2Updater ()

由于这些是硬编码的——你不能像在 R 中那样配置它们。

细节:

在“裸机”级别,mllib SVMWithSGD 支持以下参数:

  • 为每个特征计算的权重。
  • 为此模型计算的截距。
  • 正/负预测之间的阈值(默认为 0.0)

还有其他方便的方法允许您定义:

  • 正则化类型(L1 与 L2)
  • 正则化参数 (lambda)
  • 每个训练批次使用输入数据的哪一部分
  • 初始步长(用于梯度下降)

您会注意到您提到的两个项目:

  • 内核选择
  • 错误分类的成本

不包含在那些可配置的参数中

在幕后,这些是由GradientDescent类的调用定义的,如下所示:

* @param gradient Gradient function to be used.
* @param updater Updater to be used to update weights after every iteration.
GradientDescent(gradient: Gradient, private var updater: Updater)

使用以下设置

于 2015-01-31T00:45:27.413 回答
0

MLLib 的 SVM 实现仅限于线性内核,因此您不会找到任何与内核相关的内容。不过,有一些与此相关的工作,例如Pegasos

于 2015-02-04T23:49:12.370 回答