O (n) время ядра SVM - PullRequest
0 голосов
/ 02 июня 2018

Я не могу понять, как вычислительное ядро, K (x, z), требует только линейного времени, несмотря на работу в O (n ^ d) мерном пространстве.Пожалуйста, объясните мне.Я новичок в ML.enter image description here

1 Ответ

0 голосов
/ 02 июня 2018

Чтобы вычислить K(x, z), вам необходимо:

  • Выполнить O(n) умножения x1 * z1, x2 * x2, ..., xn * zn,
  • Выполните O(n) сложения (x1 * z1) + (x2 * x2) + ... + (xn * zn),
  • Выполните две O(1) операции _ + c и _ ^ d.

Таким образом, вычисление K(x, z) = (dot(x, z) + c)^d занимает O(n) времени.

Совершенно нормально, что пространство пространственных объектов имеет гораздо более высокую размерность, чем время, необходимое для вычисления ядра: в противном случае нам бы не понадобились ядра в первую очередь, потому что мы могли бы просто вычислить векторы объектов напрямую.

Если вы хотите более экстремальный пример, взгляните на K(x, y) = min(x, y) на неотрицательных действительных числах x, y.Требуется постоянное время для оценки min(x, y).Однако пространство признаков равно L^2(R) (функции, интегрируемые в квадрат на вещественной прямой, со стандартным скалярным произведением в гильбертовом пространстве), а отображение признаков равно phi(x) = chi_{[0, x]}, где chi_{[0, x]} обозначает характеристическую функцию интервала [0, x].Таким образом, пространство признаков бесконечномерно, но время, необходимое для оценки ядра, постоянно.

...