У меня есть редкие признаки, которые являются прогнозирующими, также у меня есть некоторые плотные признаки, которые также являются прогнозирующими. Мне нужно объединить эти функции вместе, чтобы улучшить общую производительность классификатора.
Дело в том, что когда я пытаюсь объединить их вместе, плотные функции имеют тенденцию доминировать в большей степени, чем разреженные, что дает улучшение AUC только на 1% по сравнению с моделью с только плотными функциями.
Кто-нибудь сталкивался с подобными проблемами? Действительно ценю вклады, вроде застрял. Я уже перепробовал множество различных классификаторов, комбинацию классификаторов, преобразования функций и обработку с разными алгоритмами.
Заранее спасибо за помощь.
Редактировать :
Я уже попробовал предложения, которые даны в комментариях. Я наблюдал, что для почти 45% данных разреженные функции работают действительно хорошо, я получаю AUC около 0,9 с только разреженными функциями, а для остальных плотные функции хорошо работают с AUC около 0,75. Я как бы пытался отделить эти наборы данных, но я получил AUC 0,6, поэтому я не могу просто обучить модель и решить, какие функции использовать.
Что касается фрагмента кода, я перепробовал так много вещей, что не уверен, чем именно поделиться :(
Ответы:
Это похоже на работу по анализу основных компонентов. В Scikit PCA реализован хорошо, и это мне помогло много раз.
PCA определенным образом объединяет ваши возможности. Ограничивая количество компонентов, вы выбираете модель с бесшумными данными (в лучшем случае). Потому что ваша модель так же хороша, как и ваши данные.
Рассмотрим ниже простой пример.
Почему я выбрал 80? Когда я строю кумулятивную дисперсию, я получаю это ниже, которое говорит мне, что с ~ 80 компонентами я достигаю почти всей дисперсии.
Поэтому я бы сказал, попробуйте, используйте его в своих моделях. Это должно помочь.
источник
Лучший способ объединить функции - это методы ансамбля. В основном есть три различных метода: упаковка, повышение и укладка. Вы можете использовать Adabbost с расширенным набором функций (в этом учитываются как редкие и плотные объекты), так и на основе стеков (случайный объект - случайное подпространство). Я предпочитаю второй вариант, когда вы можете обучать набор базовых учащихся (решения. Деревья), используя случайные подмножества и случайные функции (сохраняйте обучающих базовых учеников, пока вы не охватите весь набор функций). Следующим шагом является тестирование обучающего набора для генерации метаданных. Используйте эти метаданные для обучения мета-классификатора. Мета-классификатор выяснит, какая особенность важнее и какие отношения следует использовать
источник
Группы переменных могут быть мультиколлинеарными, или преобразование между разреженным и плотным может пойти не так. Задумывались ли вы об использовании классификатора голосования / классификации ансамбля? http://scikit-learn.org/stable/modules/ensemble.html Таким образом, вы можете справиться с обеими вышеуказанными проблемами.
источник
В дополнение к некоторым из приведенных выше предложений, я бы рекомендовал использовать двухэтапный подход к моделированию .
источник
Попробуйте PCA только на разреженных функциях и объедините выходные данные PCA с плотными функциями.
Таким образом, вы получите плотный набор (оригинальных) функций + плотный набор функций (которые изначально были редкими).
+1 за вопрос. Пожалуйста, сообщите нам результаты.
источник