Tengo un conjunto de datos donde el número de negativos etiqueta de los valores de 163 veces el número de positivos etiqueta de los valores. Es decir, tengo un desequilibrio en el conjunto de datos. He intentado:
model = svmtrain(trainLabels, trainFeatures, '-h 0 -b 1 -s 0 -c 10 -w1 163 -w-1 1');
[predicted_label, accuracy, prob_estimates] = svmpredict(testLabels, testFeatures,
model, '-b 1');
La precisión fue de casi un 99%. He buscado y encontrado un post (#7) [link muerto?] donde dice:
¿has probado de ponderación en una escala más pequeña (es decir: <1)
He cambiado mi modelo a:
model = svmtrain(trainLabels, trainFeatures, '-h 0 -b 1 -s 0 -c 10 -w1 0.5 -w-1 0.003');
[predicted_label, accuracy, prob_estimates] = svmpredict(testLabels, testFeatures,
model, '-b 1');
Tengo todavía una alta precisión cada vez a causa de desequilibrio en los datos. Alguna idea?
PS: estoy tratando de implementar el primer desafío de la KDD Cup 2008 - el Cáncer de Mama. Quiero clasificar a los candidatos por orden decreciente.