Должен ли я использовать трюк с ядром, когда это возможно, для нелинейных данных?

13

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

Для линейных данных это, конечно, не полезно, но для нелинейных данных это всегда полезно. Использование линейных классификаторов намного проще, чем нелинейных, с точки зрения времени обучения и масштабируемости.

JDong
источник

Ответы:

8

Для линейных данных это, конечно, не полезно, но для нелинейных данных это всегда полезно. Использование линейных классификаторов намного проще, чем нелинейных, с точки зрения времени обучения и масштабируемости.

@BartoszKP уже объяснил, почему уловка ядра полезна. Однако, чтобы полностью ответить на ваш вопрос, я хотел бы отметить, что ядро не единственная возможность иметь дело с нелинейно разделяемыми данными.

Существует как минимум три хороших, общих варианта для разграничения модели:

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

Подводя итог, можно сказать, что ядро ​​- это отличный метод делинеаризации, и вы можете использовать его, когда проблема не является линейной, но это не должно быть слепой оценкой «если тогда». Это всего лишь один из немногих интересных методов, которые могут привести к различным результатам в зависимости от проблемы и требований. В частности, ELM имеет тенденцию находить решения, очень похожие на те, которые предоставляются SVM с ядрами, и в то же время можно обучать ряды быстрее (поэтому он масштабируется гораздо лучше, чем SVM с ядрами).

lejlot
источник
10

Цена, которую вы платите за уловку ядра в целом, за линейные методы, имеет худшие границы обобщения. Для линейной модели ее размер VC также является линейным с точки зрения количества измерений (например, размерность VC для Перцептрона равна d + 1).

Теперь, если вы будете выполнять сложное нелинейное преобразование в многомерное пространство, размерность VC вашего набора гипотез будет значительно больше, поскольку теперь она линейна с точки зрения количества измерений в новом высокомерном пространстве. И с этим, граница обобщения возрастает.

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

BartoszKP
источник
1
«также является линейным с точки зрения количества весов» с точки зрения измерения пространства, а не количества весов. Вы можете иметь линейный классификатор, параметризованный столько весов, сколько хотите, но его размерность VC по-прежнему равна d + 1 (где d - размерность пространства). «Измерение VC для моделей SVM связано с количеством векторов поддержки». Как точно измеряется измерение VC с числом SV? Я знаю о жесткой границе, но в случае с мягкой границей такого отношения нет. Даже в пределах сложности Радамахера вы не найдете количество SV в качестве переменной.
lejlot
Кроме того, «не имеет значения, насколько« велико »целевое пространство ядра, вы ничего не потеряете в терминах границы обобщения», насколько я знаю, полностью неверно. Пространства большого размера приведут к потере возможностей обобщения даже с такой сильно регуляризованной моделью, как SVM.
lejlot
1
@lejlot Спасибо, исправил первые две ошибки. Мне нужно некоторое время, чтобы соотнести ваши последние два замечания - я постараюсь улучшить ответ и предоставить некоторые источники после того, как перепроверю свою информацию :)
BartoszKP
1
Сейчас это почти правильно, но с чем связано предположение, что размер пространства ядра не имеет значения? Возьмите любой набор данных, запустите SVM с ядром RBF и C-> inf, и вы сильно перегрузитесь. Это не так просто. Количество измерений в пространстве признаков является значимым , но им можно управлять с помощью C (как верхняя граница множителей Лагранжа). В частности - измерение VC для SVM с RBF - это бесконечность, а граница обобщения (Вапника) бесполезна (Радамахер может работать, но это совсем другая история).
lejlot
1
@lejlot Я дал еще одну ссылку - они явно предоставляют границу для мягкого поля, и она не зависит от количества измерений.
BartoszKP
6

Я постараюсь дать нетехнический ответ на ваш вопрос.

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

Если линейная модель не приводит к удовлетворительной производительности, то вы можете попробовать нелинейные решения. Некоторые компромиссы для рассмотрения включают в себя:

  • выбор ядра. Это не очевидно, обычно вам нужно протестировать разные варианты
  • Существует опасность перегрузки тренировочного комплекса. На самом деле это очень легко надеть, если хотите. Чтобы избежать переобучения, вам нужна более сильная система оценки (вам нужно измерить дисперсию / стабильность производительности на невидимых данных), и вам нужно достаточно данных для того, чтобы сделать правильный выбор модели.
  • вы работаете над двойным, и, следовательно, вы не можете интерпретировать окончательную модель, то есть вы не можете утверждать, что функция X важнее функции Y и т. д.
  • время обучения увеличивается с объемом данных (меньше с количеством функций, так как он в двойном)
iliasfl
источник
Это интересный взгляд на «работу с двойным», приводящий к неспособности претендовать на важность функций. Не могли бы вы сослаться на материал, объясняющий дальше?
Джавадба