SVM Classification - минимальное количество входных наборов для каждого класса - PullRequest
4 голосов
/ 17 февраля 2010

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

Из справки, которую я получил по этому вопросу Stackoverflow , я подумал, что SVM - лучший подход к моей цели.

Итак, я сам кодировал SVM и SMO. Набор данных, который я получил из хранилища данных UCI, имеет 3280 экземпляров ( Ссылка на набор данных ), из которых около 400 относятся к классу, представляющему рекламные изображения, а остальные представляют не рекламные изображения.

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

Так что я могу сделать здесь? О том, сколько входных данных я должен дать SVM для обучения и сколько их для каждого класса?

Спасибо. Приветствия. (По сути, задан новый вопрос, поскольку контекст отличается от моего предыдущего вопроса. Оптимизация входных данных нейронной сети )


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

enter image description here

Или вы можете увидеть версию документа здесь .

Вы можете увидеть график от y1 до y2 здесь enter image description here

и y1 здесь не равно y2 enter image description here

Ответы [ 2 ]

6 голосов
/ 18 февраля 2010

Есть два способа сделать это.Можно было бы сбалансировать обучающие данные , чтобы они включали одинаковое количество рекламных и нерекламных изображений.Это может быть сделано либо избыточной выборкой 400 рекламных изображений, либо занижением выборки тысяч нерекламных изображений.Поскольку время обучения может резко возрасти с увеличением количества используемых точек данных, вам, вероятно, следует сначала попытаться отбирать образцы без рекламы и создать обучающий набор с 400 рекламными изображениями и 400 случайно выбранными не рекламными объявлениями.другое решение - использовать взвешенный SVM , чтобы ошибки полей для рекламных изображений весили больше, чем для не рекламы, для пакета libSVM это делается с флагом -wi.Исходя из вашего описания данных, вы можете попробовать взвешивать рекламные изображения примерно в 7 раз тяжелее, чем не рекламные объявления.

4 голосов
/ 17 февраля 2010

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

О, и если вы не реализуете SVM для спорта, я бы рекомендовал просто использовать libsvm ,

...