6

Ho qualche problema a capire la convalida incrociata di Spark. Qualsiasi esempio che ho visto lo usa per la sintonizzazione dei parametri, ma ho pensato che avrebbe fatto anche la normale convalida incrociata K-fold?Spark K-fold Cross Validation

Quello che voglio fare è eseguire la convalida incrociata k-fold, dove k = 5. Voglio ottenere la precisione per ogni risultato e quindi ottenere la precisione media. In scikit imparare questo è come sarebbe stato fatto, dove i punteggi darebbe il risultato per ogni piega, e quindi è possibile utilizzare scores.mean()

scores = cross_val_score(classifier, y, x, cv=5, scoring='accuracy') 

Ecco come sto facendo in Spark, paramGridBuilder è vuoto in quanto non voglio inserire alcun parametro.

val paramGrid = new ParamGridBuilder().build() 
val evaluator = new MulticlassClassificationEvaluator() 
    evaluator.setLabelCol("label") 
    evaluator.setPredictionCol("prediction") 
evaluator.setMetricName("precision") 


val crossval = new CrossValidator() 
crossval.setEstimator(classifier) 
crossval.setEvaluator(evaluator) 
crossval.setEstimatorParamMaps(paramGrid) 
crossval.setNumFolds(5) 


val modelCV = crossval.fit(df4) 
val chk = modelCV.avgMetrics 

È questo che fa lo scikit apprendere l'implementazione? Perché gli esempi utilizzano i dati di addestramento/test quando si effettua la convalida incrociata?

How to cross validate RandomForest model?

https://github.com/apache/spark/blob/master/examples/src/main/scala/org/apache/spark/examples/ml/ModelSelectionViaCrossValidationExample.scala

risposta

1
  1. Quello che stai facendo sembra ok.
  2. Fondamentalmente, sì, funziona come lo grid search CV di sklearn.
    Per ogni EstimatorParamMaps (un set di parametri), l'algoritmo viene testato con CV in modo che avgMetrics sia la metrica/e precisione/precisione media incrociata su tutte le pieghe. Nel caso in cui uno sta usando vuota ParamGridBuilder (nessuna ricerca params), è come avere "regolare" la convalida incrociata" e noi che si tradurrà una precisione di formazione trasversale convalidato.
  3. Ogni iterazione CV comprende K-1 pieghe di formazione e 1 test di piega, quindi perché la maggior parte degli esempi separa i dati dai dati di addestramento/test prima della convalida incrociata? perché le piegature di prova all'interno del CV vengono utilizzate per la ricerca griglia params. Ciò significa che è necessario un set di dati di convalida aggiuntivo per selezione modello. chiamato "set di dati di test" è necessario per valutare il modello finale.Ulteriori informazioni here