Для 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 должен быть инвариантен к линейным преобразованиям данных.