Синтаксис веса класса в Kernlab? - PullRequest
1 голос
/ 19 июля 2010

Привет. Я пробую классификацию для несбалансированного набора данных в R с использованием пакета kernlab, поскольку распределение классов не равно 1: 1. Я использую опцию class.weights в вызове функции ksvm(), однако я не получаю есть ли разница в сценарии классификации, когда я добавляю веса или убираю веса? Итак, вопрос в том, каков правильный синтаксис для объявления весов классов?

Я использую следующие вызовы функций:

model = ksvm(dummy[1:466], lab_tr,type='C-svc',kernel=pre,cross=10,C=10,prob.model=F,class.weights=c("Negative"=0.7,"Positive"=0.3)) 
#this is the function call with class weights 
model = ksvm(dummy[1:466], lab_tr,type='C-svc',kernel=pre,cross=10,C=10,prob.model=F) 

Кто-нибудь может прокомментировать, я придерживаюсь правильного синтаксиса добавления весов? Также я обнаружил, что если мы используем веса с prob.model=T, функция ksvm возвращает ошибку!

1 Ответ

0 голосов
/ 20 июля 2010

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

...