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:
onde V é alguma função de perda e é 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 é 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 admite uma expansão em termos de pontos de S, A função de decisão que discrimina entre as classes +1 e -1 é .
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,
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 .
Existe alguém que possa me ajudar a descobrir como isso é calculado?
Respostas:
Enquanto eu não testá-lo, a leitura do artigo, o problema de otimização, tanto para SVM e LapSVM , é dado como:Para SVM :
Enquanto para o LapSVM , temos o seguinte (parênteses adicionados para tornar o relacionamento mais claro):
Podemos definir se:
Último:
Eu posso confirmar que funciona. Veja este exemplo com um kernel gaussiano e como a classeγI=2500 γI=0
virginica
começa a dados não quando comparação com , que é o SVM padrão.fonte