Вопрос или проблема
Я провожу оценку на наборах данных Hugging Face, таких как hotpot-qa. Но результаты выглядят так:
'precision_at_2/mean': 0.0, 'recall_at_2/mean': 0.0, 'ndcg_at_2/mean':0.0 .........
Я не знаю, почему получаю нули. Вот мой датафрейм. Результаты – это предсказания от langchain llm RAG:
results = mlflow.evaluate( data=eval_data, model_type="retriever", evaluators="default", predictions="results", targets="answer", extra_metrics=[mlflow.metrics.ndcg_at_k(2), mlflow.metrics.recall_at_k(2), mlflow.metrics.precision_at_k(2), mlflow.metrics.latency()], evaluator_config={ "col_mapping": { "inputs": "question", "context": "context", "targets": "answer", } },)
Есть ли проблема со структурой колонок “answer” и “results”?
Вот блокнот
https://colab.research.google.com/drive/1CZ27v9Uf_QvfgtP9UDYWas3yMMpIfZ5y?usp=sharing
Как я могу правильно получить значения для метрик? Пожалуйста, помогите.
Ответ или решение
Проблема, с которой вы столкнулись, когда все метрики показывают нули (например, precision_at_2
, recall_at_2
, ndcg_at_2
), может быть вызвана несколькими причинами, связанными с данными, способом вычисления метрик или ошибками в логике вашего кода. Давайте рассмотрим возможные причины и пути их решения.
-
Проверка структуры данных:
- Убедитесь, что ваши колонки
answer
иresults
правильно заполнены. Код, который вы привели, подразумевает, чтоresults
содержит предсказания, которые должны быть сопоставлены с истинными значениями из колонкиanswer
. - Проверьте, что значения в обеих колонках имеют правильный формат. Например, для задачи HotpotQA
answer
должен содержать правильные ответы, аresults
— это предсказания модели.
- Убедитесь, что ваши колонки
-
Проверьте код на наличие ошибок:
- Убедитесь, что вы правильно сопоставили названия столбцов в
col_mapping
. Например, если ваша колонка с вопросами называется иначе, чем указано в коде, это может привести к неправильной работе модели. - Проверьте, как именно вы формируете предсказания в колонке
results
, и как вы обрабатываете выходные данные вашей модели.
- Убедитесь, что вы правильно сопоставили названия столбцов в
-
Проверка метрик:
- Если вы используете метрики, такие как
precision_at_k
,recall_at_k
иndcg_at_k
, убедитесь, что ваши предсказания содержат хотя бы некоторую степень корреляции с истинными значениями, чтобы метрики могли быть рассчитаны. Еслиresults
не совпадают ни с одним из элементов вanswer
, это приведет к нулевым значениям метрик.
- Если вы используете метрики, такие как
-
Отладка:
- Вы можете вручную просмотреть несколько примеров из ваших данных
eval_data
, чтобы убедиться, что ваши предсказания действительно сопоставляются с истинными ответами. Это можно сделать, например, выбрав случайные строки из вашего датафрейма и распечатав их.
- Вы можете вручную просмотреть несколько примеров из ваших данных
-
Использование дополнительных метрик:
- В случае, если стандартные метрики не дают полезной информации, рассмотрите возможность использования более базовых метрик для диагностики, таких как абсолютное соответствие или просто проверка количества совпадений между
results
иanswer
.
- В случае, если стандартные метрики не дают полезной информации, рассмотрите возможность использования более базовых метрик для диагностики, таких как абсолютное соответствие или просто проверка количества совпадений между
-
Обновление и повторная проверка версий:
- Убедитесь, что вы используете актуальные версии библиотек, таких как
mlflow
,transformers
, и другие, так как возможны изменения в реализациях функций, которые могут повлиять на вашу оценку.
- Убедитесь, что вы используете актуальные версии библиотек, таких как
После того как вы пересмотрите данные, код и вашу внутреннюю логику, вы сможете диагностировать проблему и, надеюсь, получить полезные значения для метрик. Если проблемы сохраняются, рекомендуется задать уточняющий вопрос на форумах по машинному обучению, приложив пример ваших данных и коды.