【问题标题】:Spark mllib - NaiveBayes weightcol parameter influence and formatSpark mllib - NaiveBayes weightcol 参数影响和格式
【发布时间】:2017-03-24 00:47:40
【问题描述】:

我目前正在对我的数据尝试几种算法,以确定哪种算法最好。我还研究了如何自定义所述算法并使用CrossValidator 对象来测试这些参数。

我被NaiveBayesWeightCol 参数卡住了。

我找不到任何关于它的信息,它是如何工作的以及如何设置它。 代码中的注释说:“如果未设置或为空,我们将所有实例权重视为 1.0”,所以我认为我可以使用“mycolumn=1.0,myothercol=2.0”之类的值,但无论我尝试什么,我总是有一个错误作为回报。

我唯一没有错误的情况是,例如,如果使用“mycolumn”作为值,但我不知道这样做有什么影响。

如果有人知道使用此参数,我将不胜感激。

谢谢

【问题讨论】:

    标签: apache-spark apache-spark-mllib


    【解决方案1】:

    weight Param 应该是双精度的,用于确定样本的重要性,例如纠正倾斜的标签分布。

    假设您有这样的数据:

    val data = spark.read.format("libsvm").load("data/mllib/sample_libsvm_data.txt")
    
    val skewed = data
      .where($"label" === 0.0).limit(5)
      .union(data.where($"label" === 1.0))
    
    skewed.groupBy($"label").count.show
    
    +-----+-----+
    |label|count|
    +-----+-----+
    |  0.0|    5|
    |  1.0|   57|
    +-----+-----+
    

    我们可以为 label 等于 0.0 的记录添加更高的权重:

    val weighted = skewed
      .withColumn("weight", when($"label" === 0.0, 1.0).otherwise(0.1))
    
    val weightedModel = new NaiveBayes().setWeightCol("weight").fit(weighted)
    
    weightedModel.transform(weighted.where($"label" === 0.0)).show
    
    +-----+--------------------+------+--------------------+-----------+----------+
    |label|            features|weight|       rawPrediction|probability|prediction|
    +-----+--------------------+------+--------------------+-----------+----------+
    |  0.0|(692,[127,128,129...|   1.0|[-165013.81130787...|  [1.0,0.0]|       0.0|
    |  0.0|(692,[129,130,131...|   1.0|[-191959.02863649...|  [1.0,0.0]|       0.0|
    |  0.0|(692,[154,155,156...|   1.0|[-201850.30335886...|  [1.0,0.0]|       0.0|
    |  0.0|(692,[127,128,129...|   1.0|[-202315.73236242...|  [1.0,0.0]|       0.0|
    |  0.0|(692,[153,154,155...|   1.0|[-258710.53340756...|  [1.0,0.0]|       0.0|
    +-----+--------------------+------+--------------------+-----------+----------+
    

    要缩放特征向量,您可以使用ElementwiseProduct

    【讨论】:

      猜你喜欢
      • 2014-09-30
      • 2015-11-05
      • 2016-10-18
      • 1970-01-01
      • 2015-02-23
      • 2017-03-08
      • 2017-11-15
      • 2015-07-09
      • 1970-01-01
      相关资源
      最近更新 更多