Подтвердить что ты не робот

Как подойти к проблемам машинного обучения с пространством с высоким размерным пространством?

Как мне подойти к ситутации, когда я пытаюсь применить некоторый алгоритм ML (классификация, если быть более конкретным, SVM в частности) по некоторому высокомерному входу, и результаты, которые я получаю, не совсем удовлетворительны?

1, 2 или 3-мерные данные могут быть визуализированы вместе с результатами алгоритма, поэтому вы можете понять, что происходит, и иметь некоторое представление о том, как подходить к проблеме. Как только данные превышают 3 измерения, кроме интуитивной игры с параметрами, я не совсем уверен, как его атаковать?

4b9b3361

Ответ 1

Что вы делаете с данными? Мой ответ: ничего. SVM предназначены для обработки высокоразмерных данных. Я сейчас работаю над проблемой исследования, которая включает контролируемую классификацию с использованием SVM. Наряду с поиском источников в Интернете я сделал свои собственные эксперименты по влиянию уменьшения размерности до классификации. Предварительная обработка функций с использованием PCA/LDA существенно не повышала точность классификации SVM.

Для меня это полностью имеет смысл в том, как работают SVM. Пусть x - m-мерный вектор признаков. Пусть у = Ах, где у - в R ^ n, а х - в R ^ m для n < т, т.е. у - х, проецируемое на пространство меньшей размерности. Если классы Y1 и Y2 линейно разделяются в R ^ n, то соответствующие классы X1 и X2 линейно отделимы в R ^ m. Поэтому исходные подпространства должны быть "по крайней мере" как отделимые, так как их проекции на более низкие размеры, т.е. СПС не должны помогать теоретически.

Вот одно обсуждение, которое обсуждает использование PCA перед SVM: ссылка

Что вы можете сделать, это изменить параметры SVM. Например, с ссылкой libsvm параметры C и gamma имеют решающее значение для успеха классификации. В libsvm faq, особенно в этой записи ссылка, содержится больше полезных советов. Среди них:

  • Масштабируйте свои функции перед классификацией.
  • Попробуйте получить сбалансированные классы. Если это невозможно, то наказывайте один класс больше, чем другой. См. Больше ссылок на дисбаланс SVM.
  • Проверьте параметры SVM. Попробуйте множество комбинаций, чтобы достичь лучшего.
  • Сначала используйте ядро ​​RBF. Он почти всегда работает лучше всего (с вычислительной точки зрения).
  • Почти забыл... перед тестированием, перекрестите проверку!

EDIT: Позвольте мне добавить эту "точку данных". Недавно я провел еще один крупномасштабный эксперимент с использованием SVM с предварительной обработкой PCA на четырех эксклюзивных наборах данных. PCA не улучшал результаты классификации для любого выбора уменьшенной размерности. Исходные данные с простым диагональным масштабированием (для каждой функции, вычитания среднего значения и деления на стандартное отклонение) выполнялись лучше. Я не делаю широкого заключения - просто поделись этим экспериментом. Может быть, по разным данным, PCA может помочь.

Ответ 2

Некоторые предложения:

  • Данные проекта (только для визуализации) в пространство меньшего размера (с использованием PCA или MDS или что-то, что имеет смысл для ваших данных)

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

Кроме того, если вы сообщите нам, что такое задача, и что такое ваш SVM-вывод, могут быть более конкретные предложения, которые могли бы сделать люди.

Ответ 3

Я бы подошел к проблеме следующим образом:

Что вы подразумеваете под "результатами, которые я получаю, не совсем удовлетворительно"?

Если степень классификации данных обучения неудовлетворительна, это означает, что либо

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

Если уровень классификации в тесте неудовлетворительный, это означает, что ваша модель переопределяет данные:

  • Либо ваша модель слишком сложна (слишком много параметров), и ее нужно еще больше ограничить,
  • Или вы обучили его на тренировочном наборе, который слишком мал, и вам нужно больше данных.

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

Ответ 4

Вы можете попытаться уменьшить размерность проблемы с помощью PCA или аналогичной техники. Помните, что у PCA есть два важных момента. (1) Предполагается, что данные, к которым он применяется, обычно распределяются, и (2) результирующие данные теряют свое естественное значение (в результате получается черный ящик). Если вы можете жить с этим, попробуйте.

Другой вариант - попробовать несколько алгоритмов выбора параметров. Поскольку SVM уже упоминались здесь, вы можете попробовать подход Чанга и Ли ( "Ранжирование функций с использованием линейного SVM" ), в котором они использовали линейный SVM для предварительно выберите "интересные функции" , а затем используйте SVM на основе RBF для выбранных функций. Если вы знакомы с Orange, библиотекой интеллектуального анализа данных python, вы сможете закодировать этот метод менее чем за час. Обратите внимание, что это жадный подход, который из-за его "жадности" может потерпеть неудачу в тех случаях, когда входные переменные сильно коррелированы. В этом случае, и если вы не можете решить эту проблему с помощью PCA (см. Выше), вы можете перейти к эвристическим методам, которые пытаются выбрать наилучшие комбинации предикторов. Основным недостатком такого подхода является высокий потенциал переобучения. Убедитесь, что у вас есть "девственные" данные, которые не были видны во время всего процесса построения модели. Проверяйте свою модель на этих данных только один раз, после того как вы уверены, что модель готова. Если вы терпите неудачу, не используйте эти данные еще раз для проверки другой модели, вам придется найти новый набор данных. В противном случае вы не будете уверены, что не переусердствовали еще раз.

Список выбранных документов по выбору параметров: Выбор функций для высокоразмерных геномных данных микрочипов

О, и еще одна вещь о SVM. SVM - это черный ящик. Вы лучше выясните, каков механизм, который генерирует данные и моделирует механизм, а не данные. С другой стороны, если бы это было возможно, скорее всего, вы бы здесь не задавали этот вопрос (и я не был бы настолько горьким из-за переобучения).

Список выбранных документов по выбору параметров

Ответ 5

Если я не ошибаюсь, вы пытаетесь увидеть, какие параметры для SVM дают наилучший результат. Ваша проблема связана с моделью/кривой. Я работал над аналогичной проблемой пару лет назад. Есть тонны библиотек и альгос, чтобы сделать то же самое. Я использовал алгоритм Ньютона-Рафсона и вариант генетического алгоритма для соответствия кривой.

Создайте/угадайте/получите результат, на который вы надеетесь, через эксперимент реального мира (или если вы делаете простую классификацию, просто сделайте это самостоятельно). Сравните это с результатами вашего SVM. Ранее упомянутые выше algos повторяют этот процесс до тех пор, пока результат вашей модели (SVM в этом случае) не будет соответствовать ожидаемым значениям (обратите внимание, что этот процесс займет некоторое время на основе вашей проблемы/размера данных.. для меня потребовалось около 2 месяцев 140 node кластер Beowulf).

Если вы решите пойти с Newton-Raphson's, этот может быть хорошим местом для начала.