Создание критерия, который измеряет потерю F1

#python #pytorch

#python #pytorch

Вопрос:

В настоящее время я создаю критерий для измерения функции потерь MSE, используя:

 loss_fcn = torch.nn.MSELoss() 

loss = loss_fcn(logits[getMaskForBatch(subgraph)], labels.float())
  

Теперь мне нужно изменить его на оценку F1, но, похоже, я не могу найти ни одной библиотеки, которую можно было бы использовать для этого

Комментарии:

1. Почему вам нужно использовать оценку F1?

2. Я вычисляю оценку F1 для определения того, насколько хорошо мое приложение может классифицировать лица @prosti

3. используйте это

4. или, может быть, эта функция F1score от scikit learn scikit-learn.org/stable/modules/generated /…

5. Хорошо, но почему оценка F1? Почему не точность?

Ответ №1:

В частности, в зависимости от задачи вам нужно иметь определенную функцию потерь. Функция потерь, также известная как функция цели, стоимости или ошибки, каким-то образом противоположна функции оптимизации. Функция потерь создает потери, функция оптимизации уменьшает потери. :). Эти две функции должны находиться в равновесии, чтобы мы не перенастроили.

Потери при регрессии PyTorch:

  • nn.L1Loss Потеря L1 (MAE)
  • nn.MSELoss Потеря L2 (MSE)
  • nn.SmoothL1Loss Huber

Потери в классификации PyTorch:

  • nn.CrossEntropyLoss
  • nn.KLDivLoss
  • nn.NLLLoss

Обучение PyTorch GAN

  • nn.MarginRankingLoss

Итак, если вы использовали nn.MSELoss , вам, вероятно, нужно придерживаться регрессии, потому что F1 — это классификационный показатель.

Если вам действительно нужен результат в F1 по какой-либо другой причине, вы можете использовать scikit learn.

Ответ №2:

Зачем вам это нужно делать?

Оценка F1 обычно является оценочным показателем, а не функцией потерь. Более того, чтобы использовать оценку F1 в качестве функции потерь, вы должны убедиться, что она дифференцируема и выпукла (что, я думаю, вероятно, не так, иначе это уже было бы в литературе).

Существует множество функций потерь, которые могут помочь с вашей проблемой, таких как кроссэнтропия, вероятность отрицательного логарифма, потеря CTC и т.д.

Комментарии:

1. поскольку мой лектор сказал мне внедрить оценку баллов F1, что я и сделал, мне просто нужно оптимизировать мою модель, используя оценку f1, а не потерю MSE

2. Как вы говорите, оценка F1 предназначена для оценки. Если ваша проблема связана с классификацией, вам не обязательно использовать MSE loss; вместо этого попробуйте один из перечисленных выше. Если ваша проблема связана с регрессией, вы не можете оценить модель с оценкой F1. Вам следует использовать R2 или MAPE.