2010-07-19 4 views
1

Salut J'essaie de classification pour jeu de données déséquilibré dans R en utilisant kernlab package, comme la distribution de classe n'est pas 1: 1 J'utilise l'option de classe.weights dans l'appel de fonction ksvm() mais je ne reçois aucune différence dans la classification scénario lorsque j'ajoute des poids ou supprimer des poids? Donc, la question est de savoir quelle est la syntaxe correcte pour déclarer les poids de classe?Syntaxe de poids de classe dans Kernlab?

J'utilise la fonction suivante appelle:

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) 

Quelqu'un peut-il s'il vous plaît commentaires à ce sujet, que je suivais la bonne syntaxe d'ajouter des poids? Aussi, j'ai découvert que si nous utilisons les poids avec prob.model=T la fonction ksvm renvoie une erreur!

Répondre

0

Votre syntaxe est correcte, mais le problème de l'absence de classe ouvrière est assez commun dans l'apprentissage automatique. d'une certaine manière, la suppression de certains objets de la classe supérieure est une méthode unique qui fonctionne, mais elle peut être une source d'erreur et il faut faire attention de le faire de manière intelligente (en SVM, les vecteurs de soutien potentiels devrait avoir la priorité - bien sûr maintenant il y a une question comment les localiser).
Vous pouvez également essayer d'augmenter le poids sur le rapport de longueur simple, disons dix fois, et vérifier si cela a aidé même un peu ou heureusement plutôt dépasser le déséquilibre de l'autre côté.

+0

D'accord avec votre solution fournie! Je vais essayer cette approche. –