Наказывать за ложные срабатывания на тренировках СВМ
Я пытаюсь обучить бинарный положительный / отрицательный классификатор, используя SVM внутри Encog. В этом конкретном случае набор данных является крайне несбалансированным, причем отрицательные примеры превосходят числовые положительные примеры примерно 30:1.
При обучении модели я намеренно занижаю выборку негативных случаев, чтобы примерно уравновесить положительные / отрицательные случаи, заданные для модели, подход, который хорошо сработал для меня в отношении других проблем. В этом случае, однако, конечная модель заканчивается с недопустимо высоким уровнем ложных срабатываний, причем число ложных срабатываний перевешивает количество истинных положительных результатов при тестировании на несбалансированном тестовом наборе.
Любые предложения о том, как тренироваться, чтобы уменьшить количество ложных срабатываний? Тренировка с несбалансированными данными (или с более близким к наблюдаемому балансу) уменьшит количество общих положительных прогнозов, но, по-видимому, не увеличит истинное положительное / ложное положительное соотношение
1 ответ
Похоже, ваш набор данных не отделим. в этом случае несбалансированный набор может привести к снижению производительности. в libsvm вы можете назначить больший вес меткам с небольшим представлением.
Во-первых, я бы предложил сохранить все негативы, так как пространство признаков для негативов, вероятно, намного больше и будет более вероятно покрыто, если будут сохранены все образцы. во-вторых, вы должны решить, что оптимизировать, например (TP+TN)/(TP+TN+FP+FN). теперь вы проводите тренировку / оценку с различными значениями веса для ваших положительных ярлыков, чтобы найти максимальную производительность в соответствии с вашим определением. конечная производительность зависит от разделяемости ваших данных.