Perda de dobradiça com classificador one-vs-all

9

Atualmente, estou olhando para a forma primária irrestrita do classificador one-vs-all

i=1NIk=1,kyiNKL(1+wkxiwyixi)

Onde

NI é o número de instâncias,
NK é o número de classes,
NF é o número de recursos,
X é umamatriz de dadosNK×NF ,
y é um vetor de rótulos de classe,
W é umNK×NI matriz em que cada um corresponde aos pesos do hiperplano que divide uma classe do resto,
L é 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, wkxi deve ser sempre negativo, wyixi 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

max(0,1+wkxiwyixi

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.1+wkxi<wyixixi

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.wkxiwyixi

Em uma nota relacionada, por que existe um 1 no funcional acima? Eu pensaria que isso teria pouco impacto.

brcs
fonte

Respostas:

2

Sua postagem parece estar correta.

A maneira como os classificadores lineares de são configurados é que um exemplo, , é classificado pelo hiperplano que fornece a pontuação mais alta: . Não importa se essas pontuações são positivas ou negativas.xargmaxkwkx

Se a perda de dobradiça para um exemplo específico for zero, isso significa que o exemplo está classificado corretamente. Para ver isso, a perda de dobradiça será zero quando . Esta é uma condição mais forte do que , o que indicaria que o exemplo foi corretamente classificados como .1+wkxi<wyixikwkxi<wyixikiyi

O 1 na perda de dobradiça está relacionado à "margem" do classificador.

A perda de dobradiça incentiva as pontuações da classe correta, não apenas para ser mais alta que a de todas as outras classes, , mas para ser maior que essas pontuações por um fator aditivo.wyixiwkxi

Podemos usar o valor 1 para a margem porque a distância de um ponto de um hiperplano é dimensionada pela magnitude dos pesos lineares: é a distância de do hiperplano com vetor normal . Como os pesos são iguais para todos os pontos do conjunto de dados, é importante apenas que o fator de escala - 1 - seja o mesmo para todos os pontos de dados.w|w|xxw

Além disso, pode facilitar a compreensão das coisas se você parametrizar a função de perda como . Atualmente, você possui as funções de perda em função da margem linear, e esse não é necessariamente o caso.L(x,y;w)

user1149913
fonte
Bem vindo ao site. Você pode usar aqui. Para fazê-lo renderizar corretamente, envolva-o em cifrões simples para matemática embutida (como em um documento ) e cifrões duplos para matemática matemática de exibição. Veja o histórico de revisões se precisar de mais ajuda. LATEXLATEX
cardeal
Além disso, suponho que você pretenda usar em \cdotvez de \dot. Nesse caso, vá em frente e faça essas edições. Felicidades. :)
cardeal
0

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).

Yevgeny
fonte