В настоящее время я использую SVM с линейным ядром для классификации моих данных. На тренировочном наборе ошибок нет. Я перепробовал несколько значений параметра ( 10 - 5 , … , 10 2 ). Это не изменило ошибку на тестовом наборе.
Теперь я задаюсь вопросом: это ошибка, вызванная привязками ruby, поскольку libsvm
я использую ( rb-libsvm ), или это теоретически объяснимо ?
Должен ли параметр всегда изменять производительность классификатора?
machine-learning
svm
libsvm
альфа
источник
источник
Ответы:
Параметр C сообщает оптимизации SVM, насколько вы хотите избежать неправильной классификации каждого примера обучения. При больших значениях C оптимизация выберет гиперплоскость с меньшим запасом, если эта гиперплоскость лучше справится с правильной классификацией всех тренировочных точек. И наоборот, очень маленькое значение C заставит оптимизатор искать разделительную гиперплоскость с большим запасом, даже если эта гиперплоскость неправильно классифицирует больше точек. Для очень маленьких значений C вы должны получить неправильно классифицированные примеры, часто даже если ваши обучающие данные линейно разделимы.
источник
В SVM вы ищете две вещи: гиперплоскость с наибольшим минимальным полем и гиперплоскость, которая правильно разделяет как можно больше экземпляров. Проблема в том, что вы не всегда сможете получить обе вещи. Параметр c определяет, насколько велико ваше желание для последнего. Я нарисовал небольшой пример ниже, чтобы проиллюстрировать это. Слева у вас низкий c, который дает вам довольно большой минимальный запас (фиолетовый). Однако это требует, чтобы мы пренебрегали синим кругом, который мы не смогли классифицировать правильно. Справа у вас высокий c. Теперь вы не будете пренебрегать выбросом и, следовательно, будете иметь гораздо меньший запас.
Итак, какие из этих классификаторов являются лучшими? Это зависит от того, как будут выглядеть прогнозируемые вами будущие данные, и чаще всего вы, конечно, этого не знаете. Если будущие данные выглядят так:
тогда лучше всего использовать классификатор с большим значением c.
С другой стороны, если будущие данные выглядят так:
тогда классификатор, изученный с использованием низкого значения c, является лучшим.
В зависимости от вашего набора данных изменение c может привести к появлению другой гиперплоскости, а может и нет. Если он действительно производит другую гиперплоскость, это не означает , что ваш классификатор будет выводить различные классы для конкретной информации вы использовали его для классификации. Weka - это хороший инструмент для визуализации данных и работы с различными настройками SVM. Это может помочь вам лучше понять, как выглядят ваши данные и почему изменение значения c не меняет ошибки классификации. В общем, наличие нескольких обучающих экземпляров и множества атрибутов облегчает линейное разделение данных. Кроме того, тот факт, что вы оцениваете свои тренировочные данные, а не новые невидимые данные, облегчает разделение.
Какие данные вы пытаетесь узнать модель? Сколько данных? Можем ли мы увидеть это?
источник
C по существу является параметром регуляризации, который контролирует компромисс между достижением низкой ошибки в обучающих данных и минимизацией нормы весов. Он аналогичен параметру гребня в регрессии гребня (фактически на практике существует небольшая разница в производительности или теории между линейными SVM и регрессией гребня, поэтому я обычно использую последний или регрессию гребня ядра, если имеется больше атрибутов, чем наблюдений).
Правильная настройка C является жизненно важным шагом в передовой практике использования SVM, так как минимизация структурного риска (ключевой принцип базового подхода) выполняется стороной через настройку C. Параметр C устанавливает верхнюю границу нормы веса, что означает, что существует вложенный набор классов гипотез, индексируемых C. Когда мы увеличиваем C, мы увеличиваем сложность класса гипотез (если мы немного увеличим C, мы все еще можем сформировать все линейные модели, которые мы могли до этого а также некоторые, которые мы не могли сделать, прежде чем увеличили верхнюю границу допустимой нормы весов). Таким образом, помимо реализации SRM с помощью классификации максимального запаса, она также реализуется путем ограничения сложности класса гипотез с помощью контроля C.
К сожалению, теория определения того, как установить C, не очень хорошо развита в настоящее время, поэтому большинство людей склонны использовать перекрестную проверку (если они что-то делают).
источник
C - это параметр регуляризации, который контролирует компромисс между достижением низкой ошибки обучения и низкой ошибки тестирования, то есть способностью обобщать ваш классификатор на невидимые данные.
Рассмотрим целевую функцию линейного SVM: min | w | ^ 2 + C∑ξ. Если ваш C слишком велик, алгоритм оптимизации попытается уменьшить | w | в максимально возможной степени приводя к гиперплоскости, которая пытается правильно классифицировать каждый тренировочный пример. Это приведет к потере обобщающих свойств классификатора. С другой стороны, если ваш C слишком мал, вы даете своей целевой функции определенную свободу увеличивать | w | много, что приведет к большой ошибке обучения.
Картинки ниже могут помочь вам визуализировать это.
источник
Ответы выше превосходны. Внимательно прочитав ваши вопросы, я обнаружил, что есть два важных факта, которые мы могли бы упустить из виду.
Учитывая 2 факта, если значения C изменяются в разумных пределах, оптимальная гиперплоскость будет просто случайным образом смещаться на небольшую величину в пределах поля (промежутка, образованного опорными векторами).
Интуитивно, предположим, что запас на обучающих данных невелик, и / или в пределах запаса нет точек тестовых данных, смещение оптимальной гиперплоскости в пределах запаса не повлияет на ошибку классификации тестового набора.
Тем не менее, если вы установите C = 0, то SVM будет игнорировать ошибки и просто попытаться минимизировать сумму квадратов весов (w), возможно, вы можете получить разные результаты на тестовом наборе.
источник
Параметр C используется для контроля выбросов - низкий C означает, что мы разрешаем больше выбросов, высокий C означает, что мы разрешаем меньше выбросов.
источник
Высокий C (стоимость) означает, что стоимость ошибочной классификации увеличивается. Это означает, что гибкое ядро станет более гибким, чтобы избежать неправильной классификации наблюдений в обучающем наборе.
Если ядро будет волнистым, модель не будет хорошо обобщаться при прогнозировании новых данных.
Если ядро будет прямым, модель не будет хорошо обобщаться при прогнозировании новых данных.
источник