2017-03-23 1 views
1

현재 어떤 데이터가 최상의 것인지 판단하기 위해 여러 알고리즘을 사용하고 있습니다. 또한 내가 알고리즘을 사용자 정의하고 CrossValidator 객체를 사용하여 이러한 매개 변수를 테스트 할 수있는 방법을 살펴 봅니다.Spark mllib - NaiveBayes weightcol 매개 변수의 영향 및 형식

나는 NaiveBayesWeightCol 매개 변수를 고수했습니다.

나는 그것에 대한 정보, 작동 원리 및 설정 방법을 찾을 수 없습니다. 코드에서 "이 값이 설정되어 있지 않거나 비어 있으면 모든 인스턴스 가중치를 1.0으로 처리하므로"mycolumn = 1.0, myothercol = 2.0 "과 같은 값을 사용할 수 있다고 생각했지만 시도한 것은 항상 오류가 발생했습니다.

오류가없는 유일한 시간은 "mycolumn"을 값으로 사용하지만 그 효과가 무엇인지 전혀 알지 못하는 경우입니다.

누구든지이 매개 변수를 사용하면 감사 할 것입니다.

감사

답변

0

weightParam해야 이중와 왜곡 된 라벨 분배를 수정하기 위해 예를 들어 샘플의 중요성을 결정하는 데 사용됩니다.

의는이 같은 데이터가 있다고 가정 해 봅시다 :

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을 사용하십시오.

관련 문제