Как сделать так, чтобы контрольная функция не проваливалась, если конкретный учащийся не справляется с конкретной задачей? - PullRequest
2 голосов
/ 10 апреля 2019

Мне нужно сравнить разных учеников по нескольким задачам (> 100 000 часовых температурных записей с метеостанций) в контрольном эксперименте.

Поскольку один из моих учеников может иногда терпеть неудачу (и это приемлемо), мне нужно решение (я полагаю, с trycatch() или purrr::possibly()), чтобы mlr возвратил вместо ошибки для целого теста NULL для для инкриминируемый ученик задачи, на которой он не справился.

Позже это позволит мне понять, в каких ситуациях это не удается

Пока я достиг этого:

bmrs = tasks %>%
          purrr::map(possibly(~mlr::benchmark(.,
            learners = my_learners,
            resamplings = mlr::makeResampleDesc("LOO"),
            measures = rmse,
            keep.pred = TRUE,
            models = FALSE), NULL))

Обратите внимание, что я сопоставляю функцию mlr::benchamrk() каждой задаче, а не прохожу все задачи сразу. Это именно потому, что моя цель состоит в том, чтобы получить значение NULL, когда конкретный учащийся, не выполняющий определенную задачу, выдает ошибку. Но при этом будет возвращено значение NULL для всего теста моих учеников по текущему заданию, а не NULL только для инкриминируемого ученика.

Мне удалось достичь того, что я хочу, с помощью функции mlr::resample(), переданной в purrr::map(), где она выполняет итерацию для каждого из учащихся, но тогда у меня нет всех удобных функций bmr mlr::getBMR...(), которые я ' Позже может понадобиться выполнить некоторый пост-анализ производительности, например результаты теста слияния:

   resample_by_task = function(t) {
     learners %>% purrr::map(possibly(
       ~ mlr::resample(.,
         task = t,
         resampling = mlr::makeResampleDesc("LOO"),
         measures = rmse,
         keep.pred = TRUE,
         models = models), NULL))}

   bmrs = purrr::map(tasks, ~resample_by_task(.))

Итак, вы бы посоветовали мне поработать с функцией mlr::benchmark, заключенной в пользовательскую систему перехвата ошибок, или поработать с mlr::resample a, сделать какой-нибудь специальный код для работы с его результатами?

Заранее спасибо за вашу поддержку

1 Ответ

2 голосов
/ 15 апреля 2019

Вы можете установить параметр пакета on.learner.error mlr, см. https://mlr.mlr -org.com / reference / configureMlr.html # arguments .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...