Синтаксис веса класса в Kernlab?

Привет, я пробую классификацию для несбалансированного набора данных в 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 ответ

Решение

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

Другие вопросы по тегам