Estou tendo problemas para entender (e implementar) a regressão logística para classificar em três classes


7

(Para referência, eu estou usando o livro "Aprendizado de máquina: uma perspectiva probabilística" de Kevin P Murphy e implementando com o MATLAN - sem caixas de ferramentas)

Eu tenho um conjunto de dados com 392 amostras (linhas), cada amostra possui 8 recursos (colunas), um dos quais define a classe (ou seja, a coluna 1 dos recursos é dividida em três caixas iguais que definem as três classes - baixa, média e alta )

Estou com muita dificuldade para entender como criar um modelo de regressão logística para classificar uma amostra em uma dessas três classes.

Acabei de aprender e criar um modelo de regressão linear, onde aprendi sobre a solução de mínimos quadrados ordinários (formulário fechado) para o vetor de peso e também a solução de descida de gradiente (formulário aberto). Mas nunca implementei descida de gradiente porque meus dados foram ajustados perfeitamente com a solução OLS para vetor de peso.

Estou extremamente confuso sobre como criar um vetor de peso para a regressão logística; entendo que ele requer o uso de Gradient Descent porque não há uma solução de formulário fechado. Também li sobre o método de Newton para calcular os pesos, mas não o compreendo.

E depois de usar esses métodos para calcular pesos, como você aplica os pesos aos dados da amostra? Na regressão linear, foi simplesmente porque você multiplicou os pesos pelos recursos (e recursos de ordem superior para regressão linear de ordem superior), mas é o mesmo na regressão logística?

Além disso, até agora, meu entendimento é de que esse modelo funciona apenas para classificação binária; então, como eu faria isso em três classes?

Basicamente, minha pergunta se resume a isso:

Como exatamente você encontra o vetor de ponderação para regressão logística (usando o método de descida de gradiente ou newtons, o que for mais fácil) e como você aplica o vetor de ponderação à amostra para obter uma classificação para três classes (não apenas duas) .


Há um curso Coursera sobre aprendizado de máquina que cobre esse material muito melhor do que pode ser feito aqui.
Kyle Jones

Respostas:


7

Como você aplica o vetor de peso à amostra para obter uma classificação para três classes (não apenas duas).

Se você possui classes possíveis, deve treinar classificadores logísticos em seus dados de treinamento, com cada classificador produzindo como saída a probabilidade de que uma determinada amostra seja membro da classe que o classificador é treinado para reconhecer. Após o término do treinamento, para classificar uma nova amostra, todos os classificadores treinados devem tentar reconhecê-lo e aceitar o julgamento do classificador que produz o maior valor de probabilidade. Isso é conhecido como classificação um vs tudo ou um vs resto e é uma maneira padrão de usar classificadores binários para fazer a classificação multiclasse.nn

Os pesos são aplicados da mesma maneira na classificação de novos dados e quando você está treinando o classificador. Você tem um vetor de peso contendo coeficientes que, quando combinados com o vetor de característica de uma amostra produzem um valor de hipótese. Para regressão linear, (expandido: ...) gera o valor da hipótese. Para regressão logística, é usado como expoente na função logística para produzir o valor da hipótese:θxθTxθ0+θ1x1+θ2x2+θTx

hθ(x)=11+eθTx
e é a constante natural usual de log .2.71828

hθ(x) é a probabilidade de que a amostra seja um membro da classe que o classificador reconhece. Calcule para cada classificador e aceite o veredicto do classificador que produz o maior valor de probabilidade.xhθ(x)

Como exatamente você encontra o vetor de peso para a regressão logística (usando o método de descida por gradiente ou newtons, o que for mais fácil)?

A descida em gradiente funciona da mesma maneira para a regressão logística e para a regressão linear. Você ainda está tentando minimizar a função de custo alterando iterativamente os pesos para obter melhores valores usando derivadas parciais da função de custo. A função de hipótese é diferente para a regressão logística, mas a maneira como é usada na descida do gradiente é a mesma. Depois de escrever o código para fazer a descida do gradiente para a regressão linear, você poderá apenas conectar uma função de hipótese diferente e fazê-la funcionar para a regressão logística.

Pseudocódigo para uma iteração de descida de gradiente:

newtheta := theta;
learning_rate := 0.01;                                                        
for k := 1 to n
   sum := 0
   for i := 1 to m
      sum := sum + (hypothesis(x[i], theta) - y[i]) * x[i][k];              
   end
   nudge := sum * learning_rate;                                            
   newtheta[k] := newtheta[k] - nudge;                                      
end
theta := newtheta;                                                          

x é uma matriz que contém seus dados de treinamento, uma amostra por linha.

y é um vetor que contém a previsão de classificação correta para cada amostra, 1 se a amostra estiver na classe, 0 caso contrário.

m é o número de amostras.

n é o número de recursos.

A idéia é que você repita esse processo até atingir algum custo mínimo e aceitável (erro) durante o conjunto de treinamento.


Pode-se estender a regressão logística à regressão logística multinomial e ainda manter a convexidade para a descida do gradiente; no entanto, isso pode estar um pouco além do entendimento do OP, se a descida do gradiente para o binário for difícil.
Nicholas Mancuso
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.