Atualmente, estou olhando para a forma primária irrestrita do classificador one-vs-all
Onde
é o número de instâncias,
é o número de classes,
é o número de recursos,
é umamatriz de dados ,
é um vetor de rótulos de classe,
é um matriz em que cada um corresponde aos pesos do hiperplano que divide uma classe do resto,
é uma função de perda arbitrária.
Meu entendimento é que o funcional acima tenta encontrar um hiperplano para cada classe que maximize a distância entre as amostras na classe associada e todas as outras amostras. Se os hiperplanos estão correctamente posicionadas em seguida, deve ser sempre negativo, deve ser sempre positivo e nossa função perda deve voltar bastante baixo.
Estou tentando implementar isso usando a perda de dobradiça que acredito que, neste caso, acabará sendo
No entanto, no exemplo acima, não poderíamos terminar com uma situação em que os hiperplanos classificam todas as amostras como pertencentes a todas as classes. Por exemplo, se estivermos observando o hiperplano separando a classe 1 de todas as outras classes, desde que a perda incorrida será 0, apesar de ser classificada como a classe errada.
Onde eu errei? Ou não importa se é negativo ou positivo, desde que uma pontuação mais alta? Sinto que meu uso da função de dobradiça, como descrevi aqui, está incorreto, mas meu uso do Google hoje só causou mais confusão.
Em uma nota relacionada, por que existe um 1 no funcional acima? Eu pensaria que isso teria pouco impacto.
\cdot
vez de\dot
. Nesse caso, vá em frente e faça essas edições. Felicidades. :)Está faltando o resultado / rótulo binário (que pode assumir o valor de +1 e -1 para uma determinada classe) na função de perda: max (0, 1 - y * (w * x)) (veja detalhes abaixo).
No geral, acho que a especificação acima (tanto a função de notação quanto a de perda) complica demais um-contra-todos - em vez disso, é possível pegar uma classe específica, construir o resultado + 1 / -1 y, bem como a matriz de dados correspondente X (com colunas Nf e linhas de Ni) e vetor de parâmetro w para essa classe e escreva a função de perda de dobradiça correspondente para um classificador binário clássico para essa classe: sum (max (0, 1 - y * (w * x))) em que a soma está em todas as instâncias de dados, x é uma linha de X que corresponde a uma instância específica. É necessário "1" na função de perda de dobradiça (uma vez que y * (w * x)> = 1 corresponde à previsão correta do modelo no que diz respeito à função de perda).
fonte