Redes neurais roots #3 — Show me the code

Como já explicado no artigo sobre redes neurais #1 e #2 vamos implementar em Python o que seria equivalente a UM(1) neurônio.

Detalhando um pouco sobre nosso problema

Somos um e-commerce online e temos uma base histórica do comportamento do nosso cliente dentro da nossa plataforma e também temos a informação se o nosso cliente comprou ou não um produto.

Bem, vamos dar uma olhada nesses dados:

Temos aqui duas informações sobre nossos usuários, onde cada linha é um “comprador” e cada coluna corresponde a: se ele entrou na página do produto, se ele entrou na página de carrinho e se ele comprou.

Note que temos uma padrão ali, onde dependendo das ações do usuário, eu posso dizer se ele vai comprar ou não algo na loja!

Vamos codar isso então u.u

Vamos começar definindo alguns parâmetros para a nossa rede

obs: não vamos usar o valor e bias aqui pois ele é opcional (mas MUITO importante) e para simplificar o exemplo, vamos sem ele, apenas para contruir o mindset de como funciona um neuronio mesmo, veremos mais sobre ele quando formos trabalhar com multiplos neuronios =D

Importamos a biblioteca numpy para manipular de forma fácil algumas listas/matrizes.

Definimos nosso dados de entrada(x) e nossos dados de saída(y) onde x=comportamento do usuário, que é o que eu vou usar para saber se ele vai comprar ou não, e y=dados de saída de pessoas que já passaram pela nossa plataforma e que nós vamos usar isso para verificar se nossos dados de classificação estão corretos.

Definimos nossos pesos para cada característica que vai entrar dentro do nosso neurônio e também escolhemos uma taxa de aprendizado que será responsável pela velocidade de convergência do nosso neurônio, ou seja, o quão rápido ele treina.

Feito isso, podemos começar a codificar o nosso neuronio de fato, vamos começar pela nossa função de ativaçao, que é a ultima etapa do nosso neurônio.

Como explicado no nosso artigo sobre redes neurais #1 (ou dois) nós usamos uma função de ativação para converter o resultado da nossa regressão (ax+b ou wx+b) em uma saída binária ou percentual(0.0, 0.1, 0.2…0.9), nesse caso vamos usar a função step que dado uma somatória das entradas pelos pesos, ele nos dá um valor de 0 ou 1.

Vamos agora codificar o próprio neuronio.

Note que estamos usando uma função chamada “.dot()” dessa variavel registro, basicamente vamos receber um array do numpy como parametro no metodo calculaSaida( ) e todo array numpy tem o metodo “.dot()” que recebe um outro array ou matriz e é responsável pela multiplicação desses dois arrays/matrizes, no fim ele retorna a soma de todo mundo. Essa soma nós passamos para a função Step que nos retorna um valor de 0 ou 1, onde 0 significa que nosso cliente não vai comprar nosso produto e 1 significa que nosso usuário irá comprar.

Mas para que nossas classificação saiam corretas, antes precisamos dos nossos pesos corretos, mas como vamos achar esses pesos ? falamos disso no artigo sobre treinamento, da uma conferida =D

Depois de termos nossos pesos ajustados, é só fazer a classficação dos seus usuários.

O código completo se encontra aqui: https://github.com/italojs/one-neuron-perceptron/blob/master/python-implementation/perceptron-stepFunction.py

Obrigado!

No próximo artigos falaremos sobre multiplus neurônios conectados :D