Параметр C не влияет на точность [LibSVM для строковых данных]

#string #validation #classification #svm #libsvm

#строка #проверка #классификация #svm #libsvm

Вопрос:

Я работаю над проблемой классификации белков с svm, поэтому я использую LibSVM для строковых данных. Ядро строки, определенное в LibSVM, является ядром расстояния редактирования, оно зависит от параметра gamma. Во время перекрестной проверки, изменяя параметры C и gamma, я получаю 75% точности во всех отношениях! Более того, также изменяя количество шаблонов обучающего набора, я получаю ту же точность. Я использую базу данных SCOP. Я понятия не имею об этом поведении!

Комментарии:

1. Пожалуйста, не выкрикивайте здесь свои вопросы. С обеих сторон клавиатуры есть клавиши Shift, чтобы облегчить доступ к ним, потому что правильно оформленный текст намного легче читать и понимать. Ввод вашей темы заглавными буквами сложнее для чтения, не поможет вам быстрее получить ответ и, откровенно говоря, довольно раздражает и грубо. Спасибо.

2. Мне очень жаль, но я не понял, что вы сказали мне о клавишах shift. Еще раз извините.

3. Я имею в виду, ПОЖАЛУЙСТА, НЕ ВВОДИТЕ ЗДЕСЬ СВОИ ВОПРОСЫ ЗАГЛАВНЫМИ БУКВАМИ. 🙂 Клавиша Shift позволяет вам правильно использовать регистр текста, потому что его легче читать, когда он правильно обработан. (Используйте верхний регистр там, где это уместно, и не используйте его ТАМ, ГДЕ ЭТО НЕ ТАК.)

Ответ №1:

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

Комментарии:

1. да! очистить! у меня есть 3/4 моего обучающего набора с меткой -1. Итак, мой svm классифицирует все шаблоны в классе -1. Большое спасибо за это предложение.

2. Но если у меня есть эта проблема с ядром edit distance, как я могу ее решить? Единственное решение — изменить ядро? Или, может быть, это проблема с несбалансированными данными?

3. Я, в частности, не знаком с ядром edit distance, но я думаю, что это, скорее всего, проблема с балансом данных. Поскольку ваш дисбаланс не кажется слишком серьезным, взвешенный SVM может помочь. Это легко сделать с помощью libsvm. Если вы используете R, это делается с помощью class.weights параметра svm вызова функции. Если вы используете что-то другое, кроме R, оно не должно сильно отличаться.