2015-10-21 6 views
2

Я пытаюсь реализовать поиск сетки или более сложный поиск гиперпараметра в Vowpal Wabbit. Существует ли относительно простой способ получить значение функции потерь, полученное в наборе валидации (holdout in vw) для этой цели? VW должен был вычислить его, например. для каждого количества проходов, поскольку ранняя остановка происходит в зависимости от ее стоимости.Получить потерю удержания в Vowpal Wabbit

Пока что я объединил это, создав отдельный файл с набором данных валидации, сохраняя предсказания разных моделей в этом наборе данных и сравнивая их производительность на питоне, тем самым вызывая ненужную трату данных. Но, может быть, есть способ явно использовать оценки vw holdout?

+0

См. '--holdout_after' (и' vw -h | grep holdout'). Тем не менее, я также обычно готовлю отдельный набор валидации, поэтому я могу сравнить модели, обученные различным формам обучения, и составить график обучения. Я также вычисляю потерю поезда (ошибка поезда) для оценки количества переобучения. Я могу предоставить некоторые скрипты. –

+0

Спасибо! Я был бы очень признателен, если бы вы использовали сценарии для обучения кривым. Вычисляют ли они прогрессивные потери на каждом этапе обучения? Что касается удержания, я пытался использовать '--holdout_after', но я не знаю, как получить от этого потери, или сохранить предсказания для удержания после каждого прохода. Похоже, что vw '-p' флаг, когда обучение означает сохранение предсказаний по набору поездов, а не по удержанию. – kurtosis

+1

См. Https://github.com/JohnLangford/vowpal_wabbit/pull/841 (мои другие сценарии слишком специфичны для моих собственных экспериментальных установок, что не полезно для кого-либо еще) –

ответ

2

Суммируя комментарии, есть несколько способов, как получить потерю уклоняющиеся от VW (они могут быть объединены):

  1. С обучения за один проход, VW сообщает прогрессирующую потерю проверки, которая (просто сказал) сблизится примерно до того же значения, что и потеря удержания после достаточных примеров.
  2. С несколькими проходами VW сообщает об удержании (если не указано --holdout_off) на основании каждый 10-й пример (не на случайных 1/10 примеров). Используя --holdout_period, можно указать другое число, отличное от 10.
  3. Параметр --holdout_after=N указывает, что первые N примеров входных данных будут использоваться для обучения, а остальная часть файла - как набор ограничений (вместо каждого 10-го примера).
  4. Можно использовать -p predictions.txt и вычислить потери за пределами VW (путем сравнения predictions.txt с входными данными с золотыми наклейками). Когда используются X-проходы, predictions.txt будет содержать X * number_of_input_data_examples. Таким образом, рекомендуется тренировать данные обучения (возможно, с несколькими проходами), сохранять модель в файл, а затем использовать VW только для прогнозирования: vw -i trained.model -t -d test.input -p test.predictions.
  5. В некоторых сценариях --save_per_pass или vw --daemon и saving model on demand могут быть полезны.
  6. Для вычисления потерь на удержание (тест) и потери поезда, удобно из командной строки, можно использовать vw-experiment.
Смежные вопросы