Классификация с одним доминирующим предиктором

9

У меня есть проблема классификации ( class) порядка 100 реальных предикторов, один из которых, по-видимому, обладает гораздо большей объяснительной силой, чем любой другой. Я хотел бы углубиться в эффекты других переменных. Однако стандартные методы машинного обучения (случайные леса, SVM и т. Д.) Кажутся одоленными одним сильным предиктором и не дают мне много интересной информации о других.k

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

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

Мартин О'Лири
источник

Ответы:

2

Для задач с двумя классами вы можете использовать пакет GBM в R , который будет итерационно подгонять деревья классификации к остаткам от функции потерь. К сожалению, он еще не поддерживает проблемы с несколькими классами.

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

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

Zach
источник
2
Зак Не уверен, где он находится в стабильности разработки, но GBM на R Forge имеет многочленную логистику как функцию потерь, позволяющую классифицировать несколько категорий.
B_Miner
Спасибо! Я согласен, что повышение, вероятно, будет хорошим способом приблизиться к этому, и я рассмотрю вещи, которые вы предложили. Мне все еще интересно узнать, есть ли хороший способ решить эту проблему путем преобразования проблемы.
Мартин О'Лири
@ Зак Пожалуйста, дайте мне знать, как это работает.
B_Miner