Линейное ядро ​​положительно определено?

Во многих статьях линейное ядро ​​(внутреннее произведение двух матриц) указывается как положительно определенное, однако, когда я пробую его с набором игрушечных данных, тест положительной определенности возвращает отрицательный результат. Я проверил функцию Matlab SVM для линейного ядра.

Линейная функция ядра - это однострочная команда,

K=(u*v')

однако после этого шага в основной функции svm_train он выполняет другую операцию, используя K,

kx= (kx+kx')/2 + diag(1./boxconstraint) 

где kx это К и diag(1./boxconstraint) это просто диагональная матрица размера kx и результат kx пройти тест положительной определенности. В качестве объяснения этого шага говорится '% ensure function is symmetric.' Я тоже проверил libsvm но я не смог найти эту дополнительную операцию там.

Однако внутреннее произведение уже симметрично, и этот шаг обычно используется для превращения неопределенных матриц в положительно определенные матрицы. Меня немного смущает, почему внутреннее ядро ​​продукта не проходит тест положительной определенности?

2 ответа

Решение

Если u, v оба являются векторными строками (т. Е. K вычисляется как скаляр), K будет только положительно определенным, если K= точка (u,v)>0.

Если u и v являются более общими матрицами (а не векторами строк) и u~=v, то K=u*v'обычно не будет симметричным, не говоря уже о положительно определенном. Даже когда u=v, K будет неотрицательно определенным, но не будет строго положительно определенным, если u не имеет полного ранга строки. Однако дополнительная матрица 1./diag(boxconstraint) строго положительно определена при условии, что все boxconstraint(i)>0. Добавление неотрицательно определенной матрицы к строго положительно определенной матрице всегда дает строго положительно определенный результат.

Хорошо, то, что вы говорите, имеет смысл на самом деле, когда я создаю игрушечный набор данных с полным рангом строки, внутренняя матрица продуктов становится положительно определенной. Если есть даже две линейно зависимые строки, то это больше не является положительно определенным. Я приму ваш ответ. Благодарю.

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