Синтаксис веса класса в 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 потенциальные векторы поддержки должен иметь приоритет - конечно сейчас возникает вопрос, как их найти).
Вы также можете попытаться увеличить вес по сравнению с простым соотношением длины, скажем, в десять раз, и проверить, помогло ли оно хоть немного или, к счастью, скорее перебросить дисбаланс в другую сторону.