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

Какова связь между количеством поддерживаемых векторов и данными обучения и классификаторами?

Я использую LibSVM для классификации некоторых документов. Документы кажутся немного сложными для классификации, как показывают окончательные результаты. Тем не менее, я кое-что заметил во время обучения своих моделей. и то есть: если мой набор для обучения составляет, например, 1000 из них 800, то они выбираются в качестве векторов поддержки. Я везде искал, чтобы найти, хорошо это или плохо. Я имею в виду, существует ли связь между количеством поддерживающих векторов и производительностью классификаторов? Я прочитал этот пост предыдущий пост. Тем не менее, я выполняю выбор параметров, а также уверен, что атрибуты в векторах объектов упорядочены. Мне просто нужно знать отношение. Благодарю. p.s: Я использую линейное ядро.

4b9b3361

Ответ 1

Поддержка векторных машин - проблема оптимизации. Они пытаются найти гиперплоскость, которая разделяет два класса с наибольшим запасом. Опорными векторами являются точки, которые попадают в этот запас. Легче всего понять, создаете ли вы его от простого до более сложного.

Жесткая линейная линейка SVM

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

Hard-Margin SVM

Все опорные векторы лежат точно на краю. Независимо от количества размеров или размера набора данных количество поддерживающих векторов может быть всего лишь 2.

Линейный SVM с мягкими полями

Но что, если наш набор данных не является линейно сепарабельным? Мы вводим мягкий запас SVM. Мы больше не требуем, чтобы наши точки данных лежали вне поля, мы позволяем некоторым их числам отклоняться по линии на край. Для этого мы используем параметр slack. (nu in nu-SVM) Это дает нам больший запас и большую ошибку в наборе учебных данных, но улучшает обобщение и/или позволяет нам находить линейное разделение данных, которые не являются линейно разделяемыми.

Soft-margin Linear SVM

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

Нелинейный SVM

Это приводит нас к нелинейному SVM. Мы все еще пытаемся линейно делить данные, но теперь мы пытаемся сделать это в более высоком пространстве. Это делается через функцию ядра, которая, конечно же, имеет свой собственный набор параметров. Когда мы переведем это обратно в исходное пространство объектов, результат будет нелинейным:

enter image description here

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

Здесь точность зависит от компромисса между моделью высокой сложности, которая может переполнять данные и большой запас, что неправильно классифицирует некоторые данные обучения в интересах лучшего обобщения. Количество поддерживающих векторов может варьироваться от очень немногих до каждой отдельной точки данных, если вы полностью перегружаете свои данные. Этот компромисс контролируется с помощью C и выбором параметров ядра и ядра.

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

Хороший ресурс: Учебное пособие по поддержке векторных машин для распознавания образов

Ответ 2

800 из 1000 в основном говорит вам, что SVM необходимо использовать почти каждый отдельный образец обучения для кодирования набора тренировок. Это в основном говорит вам о том, что в ваших данных не так много регулярности.

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

Ответ 3

Оба количество образцов и количество атрибутов могут влиять на количество поддерживающих векторов, что делает модель более сложной. Я считаю, что вы используете слова или даже ngrams в качестве атрибутов, поэтому их довольно много, а модели на естественном языке очень сложны. Таким образом, 800 поддерживающих векторов 1000 образцов, похоже, в порядке. (Также обратите внимание на комментарии @karenu о параметрах C/nu, которые также оказывают большое влияние на номер SV).

Чтобы получить интуицию об этом, вспомните основную идею SVM. SVM работает в многомерном пространстве возможностей и пытается найти гиперплоскость, которая разделяет все заданные образцы. Если у вас много образцов и только 2 функции (2 измерения), данные и гиперплоскость могут выглядеть так:

enter image description here

Здесь есть только 3 вектора поддержки, все остальные за ними и, следовательно, не играют никакой роли. Обратите внимание, что эти векторы поддержки определяются только двумя координатами.

Теперь представьте, что у вас есть трехмерное пространство и, следовательно, поддерживающие векторы определяются тремя координатами.

enter image description here

Это означает, что необходимо отрегулировать еще один параметр (координату), и для этой корректировки может потребоваться больше образцов для поиска оптимальной гиперплоскости. Другими словами, в худшем случае SVM находит только 1 координату гиперплоскости на образец.

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

Ответ 4

Классификация SVM является линейной по числу опорных векторов (SVs). Количество SVs в худшем случае равно количеству учебных образцов, поэтому 800/1000 еще не самый худший случай, но он все еще довольно плох.

Кроме того, 1000 учебных документов - это небольшой учебный комплект. Вы должны проверить, что происходит, когда вы масштабируете до 10000 или более документов. Если что-то не улучшится, рассмотрите возможность использования линейных SVM, прошедших обучение с LibLinear, для классификации документов; (масштаб модели и время классификации являются линейными по числу признаков и не зависят от количества учебных образцов).