Вопрос или проблема
Учитывая, что у меня есть модель глубокого обучения (передача от бывшего коллеги). По какой-то причине наборы для обучения и валидации отсутствовали.
В моей ситуации я хочу классифицировать свои данные на 100 категорий. Набор данных крайне несбалансирован. Размер набора данных составляет десятки миллионов.
Прежде всего, я запустил модель и получил предсказания для всего набора данных.
Затем я выбрал 100 записей на категорию (в соответствии с предсказанием) и получил тестовый набор из 10 000 записей.
Далее я обозначил истинные метки для каждой записи в тестовом наборе и вычислил точность, полноту и F1 для каждой категории, получив F1-micro и F1-macro.
Как оценить точность или другие метрики для всего набора данных? Правильно ли я использую взвешенную сумму точности каждой категории (вес – это доля предсказаний по всему набору) для оценки?
Точность имеет конкретное значение в классификации – предсказанные метки данных должны точно соответствовать фактическим меткам по общему количеству точек данных.
Для того чтобы вычислить точность, вам нужны фактические метки для каждой точки данных. Если у вас нет фактических меток для точки данных, эти точки не могут быть использованы в анализе.
Ответ или решение
Ваша ситуация с недостающими данными для обучения и валидации, а также с большим дисбалансом классов, представляет собой интересный вызов. Использовать существующую архитектуру модели для оценки точности на большом наборе данных можно, но важно учитывать несколько ключевых аспектов, на которых мы остановимся в рамках данной статьи.
Подход к оценке точности на большом наборе данных
-
Сбор и отбор данных:
- Вы уже сделали первый шаг, получив предсказания на всем наборе данных и охватив 100 записей по каждой из 100 категорий. Это позволяет вам создать тестовый набор размером 10 000 записей, что является хорошим началом для анализа.
- Убедитесь, что выбранные выборки представляют собой случайную выборку из предсказанных категорий, чтобы избежать несоответствий в оценках.
-
Обработка метрик:
- Расчет точности (accuracy) требует реальных меток для каждого предсказания. Если у вас есть истинные метки для тестового набора, то вы можете рассчитать точность как количество правильных предсказаний, деленное на общее количество предсказаний.
- Более подробно:
[
\text{Accuracy} = \frac{\text{Number of Correct Predictions}}{\text{Total Number of Predictions}}
] - Однако в вашем случае, учитывая, что данные сильно дисбалансированы, использование простого вычисления точности может привести к искажению результатов. Поэтому следует рассмотреть альтернативные метрики.
-
Взвешенные метрики:
- Используйте взвешенные метрики для более справедливой оценки. Как вы предложили, можно использовать взвешенную сумму точности каждой категории, где весом будет доля предсказаний для данной категории на всем тестовом наборе. Это можно сформулировать следующим образом:
[
\text{Weighted Precision} = \sum_{i=1}^{N} w_i \times P_i
]
где (w_i) — это доля класса (i) в предсказаниях, а (P_i) — точность для класса (i).
- Используйте взвешенные метрики для более справедливой оценки. Как вы предложили, можно использовать взвешенную сумму точности каждой категории, где весом будет доля предсказаний для данной категории на всем тестовом наборе. Это можно сформулировать следующим образом:
-
Расчет Recall и F1-метрик:
- Поскольку метрики точности недостаточно для комплексной оценки модели, следует также использовать recall, F1-меру, а также их взвешенные версии. Взвешенная F1-метрика также может дать более справедливое представление о работе модели для несбалансированных данных:
[
\text{Weighted F1} = \sum_{i=1}^{N} w_i \times F1_i
]
- Поскольку метрики точности недостаточно для комплексной оценки модели, следует также использовать recall, F1-меру, а также их взвешенные версии. Взвешенная F1-метрика также может дать более справедливое представление о работе модели для несбалансированных данных:
-
Кросс-валидация:
- Если возможно, выполните кросс-валидацию с помощью вашего тестового набора, это позволит вам оценить обобщающую способность вашего классификатора. Однако с учетом отсутствия исходных обучающих данных вам придется полагаться на случайные подвыборки для этого подхода, чтобы снизить влияние случайности.
Заключение
Ваша попытка оценить производительность модели на большом и несбалансированном наборе данных — это сложная, но выполнимая задача. Использование взвешенных метрик, а также акцент на recall и F1-меру поможет вам получить более реальное представление о производительности модели. Однако, если в дальнейшем будет возможность получить больше данных или заново обучить модель с сбалансированными классами, это даст еще более точные результаты.
В конечном итоге, проведение анализа производительности с осторожностью и вниманием к нюансам данных будет критически важным для понимания возможностей вашей модели.