Вопрос или проблема
Заголовок.
У меня есть набор данных, который сильно несбалансирован, скажем, выходная переменная, которую я хочу предсказать, ограничена диапазоном от 0 до 1, но почти все точки данных находятся в диапазоне от 0,7 до 0,9, тогда как мой набор предсказаний в основном содержит значения от 0 до 0,4.
Я вижу, что есть огромный разрыв. На текущий момент мое предсказание полностью ошибочно. Я думал, что это вызвано несбалансированным набором данных, но из-за природы моих данных я не могу добавить больше точек. Я пробовал несколько стратегий расширения данных, но это не сработало очень хорошо. Я также знаю о методах увеличения выборки, таких как ADASYN и SMOTE, но поскольку мой набор данных чисто числовой, эти методы не применимы.
Есть ли способ справиться с этой дилеммой, или мне нужно признать, что из-за распределения моего набора данных такая регрессионная проблема неразрешима?
обновление 2024-06-07
Я использую алгоритм случайного леса из пакета Scikit-learn. Я пробовал некоторые базовые модели, такие как линейная регрессия, но результат еще хуже (x-реальность, y-прогноз):
Ниже показаны мои результаты предсказания против реальности, используя случайный лес; как вы можете видеть, большинство предсказаний далек от правильного. R2 меньше 0, RMSE около 0,5.
“Когда вы говорите о наборе предсказаний, вы имеете в виду, что ваши предсказания находятся между 0 и 0,4 или что истинные значения находятся между 0 и 0,4?”
Я имел в виду, что истинные значения находятся между 0 и 0,4.
Ваша настройка ставит вас в позицию, когда вы пытаетесь предсказать что-то, что не моделируете. Когда вы обучаетесь на одной группе, а затем тестируете на существенно другой группе, предсказания, конечно, будут ужасными, если вы не обучались находить связи для этой группы.
Вам нужно смоделировать вашу целевую группу. Поскольку вы провели эксперименты для сбора данных для этой группы, у вас есть информация, доступная для предсказаний о вашей целевой группе. Также имеет смысл включить текущую обучающую группу, так как это дает модели больше данных и ставит вас в позицию, чтобы предсказывать более высокие результаты.
Ваш менеджер, желающий исключить целевую группу из обучения, допустил ошибку с условной вероятностью. Вы сталкиваетесь с проблемой предсказания, не зная, каков результат, поэтому аргумент вашего менеджера имеет неявное условие на неизвестном. Это проблема, когда вся суть заключается в разработке системы для предсказания того, будут ли результаты химической реакции высокими или нет. Настало время спорить с менеджером и выиграть этот спор.
Ответ или решение
Вопрос: Возможно ли с помощью регрессионной модели точно предсказать "выбросы" на основе сильно несбалансированного набора данных?
Введение
Ваша ситуация с сильно несбалансированным набором данных действительно представляет собой сложную задачу в области предсказательной аналитики. Как было указано в вашем описании проблемы, основная затрудненность заключается в том, что целевые значения в большинстве своем распределены в диапазоне от 0,7 до 0,9, в то время как набор для предсказания включает значения от 0 до 0,4. Это создает значительный разрыв, из-за чего точность предсказаний значительно ухудшается. Давайте глубже рассмотрим, как можно справиться с этой проблемой.
Проблема дисбаланса
Дисбаланс классов в наборах данных может привести к тому, что регрессионные модели не будут способны извлекать значимые закономерности для низкочастотных классов. Это происходит потому, что модель будет «заучивать» подмножество данных, более характерное для большинства, что приведёт к систематическим ошибкам при предсказании значений, лежащих вне этого диапазона.
Варианты решения
Несмотря на то, что вы упомянули, что не можете добавлять дополнительные данные или эффективно применять методы увеличения данных, вот несколько альтернативных подходов, которые могут помочь:
-
Трансформация целевой переменной: Попробуйте использовать преобразования, которые сделают распределение более симметричным. Например, логарифмическое преобразование может помочь сократить разницу между группами данных.
-
Моделирование подмножества: Учитывая, что данные в диапазоне от 0 до 0,4 сильно недопредставлены, можно рассмотреть возможность тренировки модели только на этой подгруппе. Это позволит вашей модели сосредоточиться на факторах, влияющих на низкие значения.
-
Увеличение важности низкочастотных классов: При обучении моделей используйте метрики, которые акцентируют внимание на ошибках в предсказании для группы с низкими значениями. Например, вы можете увеличить вес этих примеров в функции потерь.
-
Улучшение модели: Попробуйте использовать более сложные модели, такие как градиентный бустинг или нейронные сети, которые могут выявлять более сложные зависимости между переменными.
-
Использование методов переноса: Если у вас есть доступ к сходным наборам данных, вы можете использовать методы переноса знаний, что позволит повысить точность предсказаний.
Заключение
Ваши текущие результаты с использованием Random Forest и линейной регрессии показывают, что модель не понимает структуры данных. Нельзя однозначно утверждать, что такая регрессия невыполнима из-за расхождения в распределении, но для улучшения предсказаний потребуется более тщательный подход к обработке дисбаланса данных.
Надеюсь, эти стратегии помогут вам в решении вашей задачи. Важно продолжать экспериментировать с различными методами и подходами, анализируя результаты для нахождения наиболее эффективного решения.