我在AWS Elastic Map Reduce(EMR)上安装了Spark,并使用MLLib中的包运行了SVM。但是,在构建模型时没有选择参数的选项,比如核选择和误分类成本(就像R中的e1071包一样)。请问有人能告诉我如何在构建模型时设置这些参数吗?
回答:
摘要 / 简短版本:
SVMWithSGD的硬编码方法是:
private val gradient = new HingeGradient()
private val updater new SquaredL2Updater()
由于这些是硬编码的 – 你无法像在R中那样配置它们。
详细信息:
在“裸机”级别,mllib的SVMWithSGD支持以下参数:
- 为每个特征计算的权重。
- 为此模型计算的截距。
- 正/负预测之间的阈值(默认为0.0)
还有其他便利方法允许你定义:
- 正则化类型(L1 vs L2)
- 正则化参数(lambda)
- 用于每次训练批次的输入数据的比例
- 初始步长(用于梯度下降)
你会注意到你提到的两个项目:
- 核选择
- 误分类成本
不包括在这些可配置参数中
在底层,这些是由调用GradientDescent类定义的,如下所示:
* @param gradient 要使用的梯度函数。* @param updater 用于在每次迭代后更新权重的更新器。GradientDescent(gradient: Gradient, private var updater: Updater)
使用以下设置