【问题标题】:How to configure kernel selection and loss function for Support Vector Machines in Spark MLLib如何在 Spark MLLib 中为支持向量机配置内核选择和损失函数
【发布时间】:2016-04-25 20:40:17
【问题描述】:

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

【问题讨论】:

    标签: amazon-web-services apache-spark machine-learning svm apache-spark-mllib


    【解决方案1】:

    总结/TL;DR:

    SVMWithSGD 的硬编码方法是:

    私有 val 梯度 = 新 HingeGradient()
    私有 val 更新程序新 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)
    

    使用以下设置

    【讨论】:

    • 感谢您的回复!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2018-04-27
      • 2011-08-25
      • 2016-02-20
      • 2013-12-31
      • 2013-12-30
      • 2014-09-24
      • 2020-10-01
      • 2012-10-12
      • 2016-07-16
      相关资源
      最近更新 更多