Прогнозы нейронной регрессии вокруг среднего значения цели

Вопрос или проблема

У меня есть регрессионная модель с трансформером и некоторые данные о последних транзакциях пользователей (категориальные и числовые). Моя целевая переменная имеет экспоненциальное распределение со средним около 10e4 и также имеет избыток нулей, поэтому я написал свою собственную реализацию функции потерь Твиди, которая на самом деле улучшает показатели во время обучения.

#функция потерь выглядит примерно так
tweedie_loss = -1*(y*torch.pow(preds, 1-p)/(1-p)) + torch.pow(preds, 2-p)/(2-p)

Обучение проходит гладко, и моя функция потерь улучшается (пока не достигнет “плато”, но это нормально).

Но при оценке модель предсказывает примерно те же значения вокруг среднего (на самом деле, во время обучения среднее прогнозов постоянно растет, пока не достигнет среднего целевой переменной). Даже если я пытаюсь переобучить модель на данных, я получаю те же результаты.

Я также пытался логарифмически преобразовать свои данные и адаптировать их с помощью другой функции потерь (rmse, smoothl1 и т.д.), но все равно не достигаю успеха.

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

Поэтому я думаю, что мой вопрос заключается в следующем: является ли моя целевая переменная слишком сложной для модели или есть что-то неправильное в моем подходе к решению проблемы?

Это может быть вызвано тем, что задача слишком сложная или модели не хватает данных. Модели, как правило, сначала учатся простым закономерностям в данных (среднему, дисперсии и т.д.). Вам может понадобиться больше данных, чтобы подтолкнуть модель к более сложному рассуждению. Плавное снижение потерь до уровня плато может означать, что модель учится среднему/дисперсии датасета, а затем застревает.

Вам следует создать базовую модель, которая предполагает значение на основе среднего и дисперсии вашей целевой переменной. Сравните потери этой базовой модели с вашей обученной моделью. Если базовая модель хотя бы в той же области, что и обученная модель, то ваша модель застряла в простой гипотезе среднего/дисперсии. Если код обучения работает для других наборов данных, это, вероятно, проблема данных.

Ответ или решение

Предсказания регрессии нейронных сетей вокруг среднего значения целевой величины

Вы сталкиваетесь с проблемой недостаточной производительности вашей модели регрессии на базе трансформеров, что проявляется в том, что предсказания сосредоточены вокруг среднего значения целевой величины. Ваша целевая переменная имеет экспоненциальное распределение с нулевыми значениями и средним, равным примерно 10^4. Вы внедрили свою собственную реализацию функции потерь Твидди, которая улучшает результаты во время обучения, однако при оценке модель выдает схожие значения, сосредоточенные вокруг этого среднего.

Потенциальные причины проблемы

  1. Сложность целевой переменной:
    Целевая переменная с экспоненциальным распределением и нулевыми значениями может действительно представлять собой сложную задачу для модели. Если модель не может уловить закономерности, отличные от простых усреднений или дисперсий, это может указывать на недостаточную сложность модели или ее неспособность справиться с особенностью распределения целевой переменной.

  2. Недостаток данных:
    Недостаточное количество данных может ограничивать способность модели к научению. Модели часто обучаются на простых статистических параметрах, таких как среднее и дисперсия, особенно когда объем выборки мал. Наличие большего количества обучающих примеров может помочь модели обнаружить более сложные зависимости.

  3. Проблема с валидацией:
    Если модель обучается на слишком малом наборе данных или на недостаточно разнообразной выборке, она может не проводить обобщение данных, что приводит к тому, что предсказания сосредотачиваются вокруг среднего. Это может указывать на переобучение модели.

Рекомендации и дальнейшие шаги

  1. Создание базовой модели:
    Постройте базовую модель, которая будет предсказывать целевое значение на основе статистik, таких как среднее и дисперсия. Сравните потери этой базовой модели с вашими предсказаниями. Если базовая модель демонстрирует сопоставимые результаты с вашей моделью, это указывает на то, что она застряла на уровне простых предсказаний.

  2. Анализ данных:
    Проанализируйте свой набор данных на предмет качества и полноты. Проверьте наличие выбросов и пропущенных значений, так как это может повлиять на обучение вашей модели. Возможно, стоит рассмотреть увеличение объема данных за счет сбора более разнообразных примеров.

  3. Эксперименты с архитектурой модели:
    Проведите эксперименты с различными архитектурами модели, которые могут лучше уловить особенности вашего распределения. Рассмотрите возможность увеличения количества слоев или нейронов, а также различных функций активации, чтобы повысить сложность модели.

  4. Тонкая настройка модели:
    Проверяйте гиперпараметры вашей модели, такие как скорость обучения, параметры регуляризации и размер пакета. Эти параметры могут значительно повлиять на обучение и результативность модели.

  5. Использование продвинутых методов предобработки:
    Попробуйте другие методы предобработки, такие как преобразование признаков или использование методов уменьшения размерности, чтобы повысить способность модели к выявлению закономерностей в данных.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...