Как я могу оценить производительность этого классификатора в выборке?Где находятся показатели точности?
В целом (есть некоторые модели, которые предоставляют некоторую форму сводки), оценка набора обучающих данных - это отдельный шаг в Apache Spark.Это прекрасно вписывается в собственный Pipeline
API.
Фон :
Spark ML Трубопроводы в основном создаются из двух типов объектов:
Transformers
- объекты, которые предоставляют метод transform
, который сопоставляет DataFrame
с обновленным DataFrame
.
Вы можете transform
, используя Transformer
с ml_transform
методом.
Estimators
- объекты, которые предоставляют метод fit
, которые отображают DataFrame
в Transfomer
.По соглашению соответствующие пары Estimator
/ Transformer
называются Foo
/ FooModel
.
. Вы можете fit
Estimator
в sparklyr
, используя ml_fit
модель.
Кроме того, ML Pipelines можно комбинировать с Evaluators
(см. ml_*_evaluator
и ml_*_eval
методы), которые можно использовать для вычисления различных метрик для преобразованных данных на основе столбцов, сгенерированных моделью (обычностолбец вероятности или необработанный прогноз).
Вы можете применить Evaluator
, используя метод ml_evaluate
.
Связанные компоненты включают в себя перекрестный валидатор и разбиения валидации поезда, которые можно использовать для настройки параметров.
Примеры :
sparklyr
PipelineStages
можно оценить с нетерпением (как в вашем собственном коде), передавая данные напрямую или лениво, передавая spark_connection
экземпляр и вызов вышеупомянутых методов (ml_fit
, ml_transform
и т. д.).
Это означает, что вы можете определить Pipeline
следующим образом:
pipeline <- ml_pipeline(
ft_tokenizer(sc, input.col = "text", output.col = "tokens"),
ft_count_vectorizer(sc, input_col = 'tokens', output_col = 'myvocab'),
ml_naive_bayes(sc, label_col = "class",
features_col = "myvocab",
prediction_col = "pcol",
probability_col = "prcol",
raw_prediction_col = "rpcol",
model_type = "multinomial",
smoothing = 0.6,
thresholds = c(0.2, 0.4),
uid = "nb")
)
Fit PipelineModel
:
model <- ml_fit(pipeline, dtrain_spark)
Преобразование и применение одного из доступных Evaluators
:
ml_transform(model, dtrain_spark) %>%
ml_binary_classification_evaluator(
label_col="class", raw_prediction_col= "rpcol",
metric_name = "areaUnderROC")
[1] 1
или
evaluator <- ml_multiclass_classification_evaluator(
sc,
label_col="class", prediction_col= "pcol",
metric_name = "f1")
ml_evaluate(evaluator, ml_transform(model, dtrain_spark))
[1] 1
Еще более важно, как я могу использовать эту обученную модель для прогнозирования новых значений, скажем, в следующем фрейме данных искрового теста?
Используйте либо ml_transform
, либо ml_predict
(последний является убедительной оболочкой, которая применяет дальнейшие преобразования к выходу):
ml_transform(model, dtest_spark)
# Source: table<sparklyr_tmp_cc651477ec7> [?? x 6]
# Database: spark_connection
text tokens myvocab rpcol prcol pcol
<chr> <list> <list> <list> <list> <dbl>
1 Chinese Chinese Chinese Tokyo Japan <list [5]> <dbl [6]> <dbl [… <dbl … 0
2 random stuff <list [2]> <dbl [6]> <dbl [… <dbl … 1
Перекрестная проверка :
В примере недостаточно данных, но вы проверяете и подгоняете гиперпараметры, как показано ниже:
# dontrun
ml_cross_validator(
dtrain_spark,
pipeline,
list(nb=list(smoothing=list(0.8, 1.0))), # Note that name matches UID
evaluator=evaluator)
Примечания :