Regularização de coletores usando o gráfico da Lapônia no SVM

8

Estou tentando implementar a regularização múltipla em máquinas de vetores de suporte (SVMs) no Matlab. Estou seguindo as instruções no artigo de Belkin et al. (2006), há a equação:

f=argminfHki=1lV(xi,yi,f)+γAfA2+γIfI2

onde V é alguma função de perda e γA é o peso da norma da função no RHKS (ou norma ambiental), impõe uma condição de suavidade nas possíveis soluções e γI é o peso da norma da função em o coletor de baixa dimensão (ou norma intrínseca), que impõe suavidade ao longo do M. amostrado. O regularizador de ambiente torna o problema bem posicionado, e sua presença pode ser realmente útil do ponto de vista prático quando o pressuposto do coletor se mantém em menor grau .

Foi demonstrado em Belkin et al. (2006) que f admite uma expansão em termos de n pontos de S, f(x)=i=1nαik(xi,x) A função de decisão que discrimina entre as classes +1 e -1 é y(x)=sign(f(x)) .

O problema aqui é: estou tentando treinar SVM usando LIBSVM no MATLAB, mas não quero modificar o código original, por isso encontrei a versão pré-computada do LIBSVM que, em vez de usar os dados de entrada e os grupos de saída como parâmetros , obtém a matriz Kernal computada e os grupos de saída e treina o modelo SVM. Estou tentando alimentá-lo com a matriz regularizada do Kernel (Gram Matrix) e deixo fazer o resto.

Tentei encontrar a fórmula que regulariza o Kernal e cheguei a isso: Definindo como a matriz de identidade com a mesma dimensão da Matriz do Kernel,IK

G=2γAI+2γILKI

Gram=KG

Em que é a matriz gráfica de Laplacian, é a matriz de núcleo e é a matriz de identidade. E é calculado usando multiplicação interior de duas matrizes e .LKIGramKG

Existe alguém que possa me ajudar a descobrir como isso é calculado?

Moh
fonte
1
@Sveltely Nothing
Moh

Respostas:

6

Enquanto eu não testá-lo , a leitura do artigo, o problema de otimização, tanto para SVM e LapSVM , é dado como:

β=maxβRli=1lβi12βTQβ
sujeito a:
i=1lβiyi=00βi1l, with i=1,,l

Para SVM :

QSVM=Y(K2γ)YαSVM=Yβ2γ

Enquanto para o LapSVM , temos o seguinte (parênteses adicionados para tornar o relacionamento mais claro):

QLapSVM=Y(JK(2γAI+2γI(l+u)2LK)1JT)YαLapSVM=(2γAI+2γI(l+u)2LK)1JTYβ

Podemos definir se:

QSVM*QLapSVM

{γSVM*=1/2KSVM*=JKLapSVM(2γAI+2γI(l+u)2LKLapSVM)1JT

Último:

αLapSVM=KLapSVM(2γAI+2γI(l+u)2LKLapSVM)1JTαSVM*

Eu posso confirmar que funciona. Veja este exemplo com um kernel gaussiano e como a classe virginicacomeça a dados não quando comparação com , que é o SVM padrão.γI=2500γI=0

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Firebug
fonte