Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Nessa formula da regressão logistica usando numpy, eu entendi certo?

Num curso aqui da alura "Data Science: modelos de regressão por baixo dos panos", na parte da regressão logistica multivariavel, o professor citou essa formula para estimar os valores de Y e criou ela em python usando numpy, e ela na realidade é a aplicação da função sigmoide.

Formula da reta da regressao logistica para estimar o valor de Y

E no código python, professor implementou essa formula dessa forma abaixo usando numpy:

Formula para estimar o Y na regressao logistica em python usando numpy

Na regressão linear nós temos entradas X(atributos da amostra), e para cada entrada X temos um coeficiente theta associado a ela. Por exemplo, se tivesse 4 entradas, então eu teria 4 coeficientes sendo eles: theta1 para a entrada X1, o theta2 para entrada X2, theta 3 para entrada X3 e theta4 para a entrada X4, e mais um coeficiente extra adicional chamado de theta0, que não esta associado a nenhuma entrada. Pelo menos isso foi o que eu entendi até agora observando as formulas

Pelo que vi nesse código, a variavel Z recebe o resultado da operação matricial np.dot do numpy, passando X e theta como argumentos. X é uma matriz(com linhas e colunas), e theta é apenas um vetor. Pelo menos é o que parece ser e faria sentido ser por conta do conceito da regressão linear.

Mais por conta da notação matricial usada do numpy, eu ainda fico meio na duvida. Por favor, poderiam me explicar o np.dot nesse contexto? tenho algumas perguntas que gostaria de fazer.

Perguntas:

(1) - essa linha "Z = np.dot(X, theta)" está fazendo o que na realidade? isso parece ser uma soma ponderada, mais como? como ela opera? o que a função np.dot faz nesse contexto, com esses parametros? por favor, poderia me explicar em detalhes?

(2) - o resultado de Z seria um vetor ou uma matriz?

(3) - Ultima pergunta: Eu entendi isso certo?: Por exemplo, focando apenas na primeira amostra, se ela tivesse 2 atributos, então nessa linha do np.dot, ele iria pegar o atributo X1 da amostra e multiplicar pelo coeficiente theta1, gerando assim um resultado. Depois ele iria pegar o atributo X2 da amostra e multiplicar pelo coeficiente theta2, gerando assim outro resultado. Depois de terminar essas 2 multiplicações, com esses 2 resultados já obtidos, ele iria somar o resultado das duas, e assim obter o potencial de ativação Z, ou seja, ele iria pegar o resultado da multiplicação de X1 com theta1 e somar com a multiplicação de X2 com theta2. Ou seja, matematicamente essa formula sem usar notação matricial seria simplismente Z = (X1 * theta1) + (X2 * theta2). Eu entendi corretamente a aplicação da formula? sem usar operações matriciais seria exatamente isso: Z = (X1 * theta1) + (X2 * theta2) ? eu entendi corretamente?

2 respostas
solução!

Olá, William! Tudo bem?

A linha "Z = np.dot(X, theta)" faz uma multiplicação entre a matriz X e o vetor theta, somando os resultados. Isso basicamente pondera os atributos de cada amostra com os pesos em theta, resultando em um valor único para cada amostra.

Z é um vetor com um valor para cada amostra em X. Se X tem m amostras e n atributos, e theta tem n elementos, Z terá m elementos.

Para uma amostra com dois atributos, np.dot multiplica cada atributo pelos pesos correspondentes e soma os resultados para obter Z. Matematicamente, sem notação matricial, seria como Z = (X1 * theta1) + (X2 * theta2).

Espero que isso esclareça suas dúvidas.

Abraços!

Obrigado por explicar Monalisa