2012-06-18 2 views
2

Я пытаюсь использовать libsvm классифицировать данные, как показано на следующем рисунке: scatter plot for SVMlibsvm возвращение тривиальное решение

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

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

Я что-то упустил? Есть ли какой-нибудь параметр libsvm, который обрабатывает этот случай?
Или, может быть, SVM не подходит для задачи, и вы можете предложить что-то, что есть?

+0

Не обижайтесь, но все точки черные. –

+0

Укажите, какие значения ядра/параметра вы пробовали. Точки показывают все черные для меня. – karenu

+0

Спасибо за отзыв :) Я пробовал следующие параметры: '-t 0 -c 4 -v 3', '-t 1 -n 0.9 -v 3', '-t 2 -d 4 -v 3 ',' -t 3 -g 1 -v 3 ',' -t 0 -c 0.1 -v 3 ',' -t 0 -c 10 -v 3 ' –

ответ

0

Должно быть возможным получить нетривиальное решение с линейным SVM. Вы должны попробовать разные значения C, а также, поскольку ваши данные не сбалансированы, используйте параметр wi для определения веса каждого класса.

0

Попробуйте выполнить основной анализ компонентов или какой-либо независимый компонентный анализ как предварительную обработку. Это должно помочь вам. Существует множество примеров с базой данных диафрагмы.

Смежные вопросы