Для SVM с предварительно вычисленной матрицей Грама нужно ли нормализовать ядра между 0 и 1?

Я использую Scikit-Learn для классификации текста в Python. Мой классификатор в настоящее время делает ложные прогнозы для всего (я был одурачен некоторое время, потому что он сообщил о "точности 75%", когда 75% меток были ложными), поэтому я пытаюсь выяснить, что не так.

В настоящее время я делаю SVC(kernel='precomputed') и вычисление матрицы Грамма вручную, прежде чем передать ее fit() а также predict(), Элемент $G_{ij}$ матрицы Грама - это ядро ​​$K(d_i, d_j)$, где K обозначает функцию ядра, а d_i - i-й документ.

Для моей функции ядра записи матрицы Грама не нормализованы, то есть некоторые больше чем 1. Нужно ли применять нормализацию ядра

$$
K'(d_i, d_j) = \frac{K(d_i, d_j)}{\sqrt{K(d_i, d_i) \times K(d_j, d_j)}}
$$

чтобы получить от 0 до 1? Или SVM не волнует?

1 ответ

Нет, вам не нужно предварительно масштабировать векторы. Процесс моделирования SVM должен быть инвариантен к линейным преобразованиям данных.

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