Juliana de Oliveira Gomes Cristóvão
Uso de Redes Neurais Artificiais como Ferramenta de Otimização de Vendas
Niterói - RJ, Brasil
Data 2018
Juliana de Oliveira Gomes Cristóvão
Uso de Redes Neurais Artificiais como Ferramenta de Otimização de Vendas
Trabalho de Conclusão de Curso
Monografia apresentada para obtenção do grau de Bacharel em Estatística pela Universidade Federal Fluminense
Orientador: Professor Marco Aurélio Sanfins
Niterói - RJ, Brasil
11 de julho de 2018
Juliana de Oliveira Gomes Cristóvão
Uso de Redes Neurais Artificiais como Ferramenta de Otimização de Vendas
Monografia de Projeto Final de Graduação sob o título “Uso de Redes Neurais
Artificiais como Ferramenta de Otimização de Vendas", defendida por Juliana de
Oliveira Gomes Cristóvão e aprovada em Data 2018, na cidade de Niterói, no Estado
do Rio de Janeiro, pela banca examinadora constituída pelos professores:
___________________________________
Prof Dr Marco Aurélio Sanfins
Departamento de Estatística - UFF
___________________________________
Prof Dr Alex Laier Bordignon
Departamento de Geometria - UFF
___________________________________
Raphael Oliveira Lourenço
UFRJ – Universidade Federal do Rio de Janeiro
Niterói, 11 de julho 2018
RESUMO
Com o crescimento da internet e das redes sociais nos últimos anos, a geração de
dados se torna cada vez maior. Com essa massa de informações disponíveis,
diversas empresas, dos mais variados setores, têm investido muito em tentar utilizar
esses dados para melhorar os resultados de seus negócios. Dentro do processo de
uso de dados com foco em melhorias na tomada de decisão, os métodos conhecidos
como Redes Neurais Artificiais se destacam pela capacidade de lidar com grandes
bases de dados e por sua habilidade de aprender com os dados, gerando sistemas
computacionais que podem ser implementados para fazer trabalhos automatizados.
Neste trabalho, os esforços serão concentrados em entender o comportamento dos
usuários de um site no que diz respeito ao processo de compra de um produto. Redes
neurais são utilizadas para desenvolver um modelo capaz de identificar, com base no
rastro de dados deixado pelo usuário, o momento em que este está pronto para fazer
uma compra. Através de um sistema inteligente, os usuários serão impactados de
forma personalizada garantindo uma maximização das vendas.
SUMÁRIO
LISTA DE FIGURAS ........................................................................................................................... 8
LISTA DE TABELAS ........................................................................................................................... 9
1. INTRODUÇÃO ............................................................................................................................ 10
2. OBJETIVOS ................................................................................................................................ 13
3. MATERIAIS E MÉTODOS ........................................................................................................ 14
3.1. Bibliotecas Utilizadas do R ............................................................................................ 14
3.1.1. data.table .................................................................................................................... 14
3.1.2. neuralnet ..................................................................................................................... 14
3.2. Banco de Dados................................................................................................................ 15
3.3. Data Driven Marketing ..................................................................................................... 16
3.4. Redes Neurais Artificiais ................................................................................................ 17
3.4.1. Redes Neurais Biológicas ...................................................................................... 17
3.4.2. Redes Neurais Artificiais ........................................................................................ 19
3.4.3. Modelo de um Neurônio ......................................................................................... 21
3.4.4. Estrutura de Redes Neurais................................................................................... 23
3.4.5. Processos de Aprendizado .................................................................................... 25
3.4.6. Algoritmo de Aprendizado ..................................................................................... 29
3.4.7. Reconhecimento e Classificação de Padrões .................................................. 30
3.4.8. Notas Históricas ....................................................................................................... 31
4. ANÁLISE DOS RESULTADOS ............................................................................................... 34
4.1. Análise Descritiva dos Dados ....................................................................................... 34
4.2. Treinamento da Rede Neural ......................................................................................... 36
4.2.1. Treinamento Base Completa ................................................................................. 37
4.2.2. Treinamento Dado Balanceado ............................................................................ 39
4.3. Rede Neural selecionada ...................................................................................................... 43
4.4. Validação Cruzada ........................................................................................................... 43
5. CONCLUSÃO ............................................................................................................................. 45
6. REFERÊNCIAS BIBLIOGRÁFICAS ....................................................................................... 46
ANEXO - Algoritmo Backpropagation ........................................................................................ 48
LISTA DE FIGURAS
Figura 1: Representação simplificada de um neurônio ............................................. 18
Figura 2: Representação em diagrama de blocos do sistema nervoso ..................... 19
Figura 3: Modelo não-linear de um neurônio ............................................................. 22
Figura 4: Rede alimentada adiante com uma camada .............................................. 23
Figura 5: Rede alimentada adiante totalmente conectada com múltiplas camadas .. 24
Figura 6: Rede recorrente com neurônios ocultos ..................................................... 25
Figura 7: Resumo de aplicações técnicas supervisionadas e não supervisionadas . 27
Figura 8: Fase 1 - aprendizagem supervisionada ..................................................... 28
Figura 9: Fase 2 - aprendizagem supervisionada ..................................................... 28
Figura 10: Diagrama em blocos da aprendizagem não supervisionada .................... 28
Figura 11: Processos do algoritmo Backpropagation ................................................ 30
Figura 12: Estrutura rede neural selecionada ........................................................... 43
9
LISTA DE TABELAS
Tabela 1: Média de interações para cada trigger e ação disponível na plataforma... 34
Tabela 2: Proporção de usuários que interagiram com os triggers e ações .............. 35
Tabela 3: Resultados treinamento base completa - algoritmo rprop+ ....................... 39
Tabela 4: Resultados treinamento dado balanceado - algoritmo rprop+ ................... 40
Tabela 5: Resultados treinamento dado balanceado - algoritmo backpropagation ... 42
10
1. INTRODUÇÃO
Com o decorrer do tempo, o desenvolvimento tecnológico permitiu que diversas
invenções ocorressem na área da computação, como por exemplo o desenvolvimento
de sistemas inteligentes e automatizados, que trouxeram grandes mudanças na
maneira como pessoas e empresas se relacionam com a tecnologia e com o modo de
funcionamento das coisas. Por meio deles, é possível fazer com que uma máquina
possua a capacidade de aprender tarefas com erros e acertos, de pensar como seres
humanos, tendo o poder de raciocinar, aplicando regras lógicas a um conjunto de
dados, de reconhecer padrões e de decidir de forma racional e inteligente, como
ocorre em aplicações de Machine Learning ou aprendizado de máquina.
Estudos sobre aprendizado de máquina já existem há muito tempo. Porém a
tecnologia daquela época não era desenvolvida o suficiente e não possuía um valor
acessível. Os computadores necessitavam de bons modelos de dados para processar
e analisá-los de forma eficiente, precisavam ter acesso a um banco de dados grande
o suficiente para poder alimentar os modelos.
Nos dias atuais, a evolução nos processamentos de dados faz com que as
máquinas se tornem muito mais ágeis e eficazes ao coletar, manipular e gerar dados
de informação. Tal fato implicou no aumento da capacidade de armazenamento de
informações possibilitando o acesso a bancos de dados cada vez maiores e
completos. Devido a esses progressos, tornou-se possível realizar e aplicar processos
de Machine Learning pois com um processamento rápido e uma gama de
informações, é possível alimentar modelos já desenvolvidos e implementar outros,
mais completos e robustos.
Diante disso, alguns estudos sobre Redes Neurais Artificiais, desenvolvidos
em décadas passadas, puderam ser aplicados atualmente. Para uma (RNA) ser bem
estruturada, são necessários computadores com um bom processamento, visto que
para executar uma rede neural é necessário criar um modelo robusto que deverá ser
treinado para realizar e aprender a tarefa de classificar ou prever os dados. Para isso,
é preciso ter uma grande quantidade de dados, a fim de que uma parte seja utilizada
no processo de aprendizado e outra para testes, onde é feita a averiguação do
11
modelo, verificando se o mesmo foi bem construído para a resolução de um
determinado problema.
Redes Neurais Artificiais são implementadas em diversas áreas, seja no setor
financeiro, para realizar previsões econômicas, na área da saúde, para previsões de
certas doenças como hepatites, diabetes, por exemplo. Elas podem ser utilizadas para
gerar previsões e para realizar classificações. Neste trabalho objetiva-se usar as redes
para realizar a classificação de usuários de uma plataforma digital em dois grupos
(aptos e não aptos a comprar o produto oferecido).
A plataforma em questão é focada para o público de estudantes. Nela encontra-
se uma variedade de materiais compartilhados pela própria comunidade e uma
quantidade de materiais próprios, criados por especialistas do conteúdo. Todos os
usuários podem realizar diferentes ações no site: Consumir e fazer uploads de
materiais de estudo, avaliar a qualidade dos mesmos por meio de like ou deslike, criar
e responder perguntas para serem ajudados ou para ajudar outros estudantes e salvar
materiais para acessá-los novamente. Todas essas interações fazem parte da versão
não paga da plataforma.
Já na versão paga, além do usuário poder realizar todas as ações citadas
anteriormente, ele possui acesso aos conteúdos desenvolvidos por especialistas.
Com isso, eles têm acesso a diversas vantagens e benefícios que auxiliam ainda mais
nos estudos. Exercícios resolvidos passo a passo, videoaulas dos principais assuntos
de cada disciplina, resumos de cada matéria para facilitar o estudo e ferramentas de
organização dos materiais mais utilizados compõem os conteúdos a mais disponíveis
na versão paga, também chamada de versão premium. Usuários que não são
assinantes, isto é, não compraram o produto, ao tentar interagir com os conteúdos
desta versão, são bloqueados. Todas as interações são mapeadas por meio de dados.
Uma rede neural artificial será implementada tendo como dados de entrada,
todos os rastros deixados pelos usuários ao longo de todo seu contato com os
conteúdos disponíveis na plataforma e irá gerar como saída o evento de assinatura
premium. Isto é, se o indivíduo possuir um comportamento de consumo e ações
parecidas com os dos assinantes, eles serão classificados como pagantes, tendo
assim, uma propensão maior de efetuar a compra.
12
Sabe-se que o comportamento dos usuários na versão não paga possui
correlação com o evento de assinatura, visto que quanto mais interações são
realizadas na versão não paga, maior é a chance de o mesmo efetuar a compra para
ter acesso aos outros conteúdos bloqueados. Além disso, o evento de interação com
os conteúdos da parte premium também está relacionado com a compra, pois é mais
provável que indivíduos que interagem mais com o conteúdo pago tenham uma
chance maior de efetuar a assinatura.
A ideia é que a RNA estruturada seja capaz de realizar a classificação dos
usuários em dois grupos, os que estão e os que não estão propensos à compra, para
que os primeiros sejam impactados de forma diferenciada, ganhando alguns
incentivos, como por exemplo um desconto na assinatura. A finalidade é fazer com
que os mesmos sejam influenciados a realizar a compra, causando o aumento no
número de vendas.
O texto desta monografia está dividido em 6 capítulos. Além desta introdução,
apresentam-se os objetivos, onde está exposto os propósitos da realização deste
estudo, os materiais e métodos, apresentando todas as metodologias e ferramentas
utilizadas para o desenvolvimento do projeto, os resultados e a conclusão. Ao final,
estão relacionadas as referências bibliográficas utilizadas para a realização da
pesquisa.
13
2. OBJETIVOS
O objetivo central desta pesquisa é realizar a maximização no número de
vendas em uma plataforma digital, fazendo com que os usuários que mostraram
interesse nos conteúdos livres e nos produzidos por especialistas, da versão paga,
sejam impactados de forma diferenciadas.
Para realizar este propósito, será necessário treinar uma rede neural que
melhor se encaixe no problema, para que possa executar a classificação dos
indivíduos em dois grupos: os que possuem ou não a chance de comprar a versão
paga. Após essa classificação, serão realizadas ações personalizadas para os
usuários que possuem uma chance de aquisição do produto, com o intuito de gerar
impactos positivos no número de vendas.
A maioria dos usuários desiste de efetuar a compra por causa do valor cobrado
na assinatura, sendo assim, a ideia de impactar de forma diferenciada, seria oferecer
um desconto para os que foram classificados, pela rede, no grupo com a chance de
efetuar a compra e com isso fazer com que a probabilidade do evento de compra seja
aumentada e as vendas sejam maximizadas.
14
3. MATERIAIS E MÉTODOS
3.1. Bibliotecas Utilizadas do R
Para realizar o presente trabalho utiliza-se o software R1, onde são estruturados
os códigos para manipulação de dados e treinamento da rede.
3.1.1. data.table
Para tratar os dados, utiliza-se o pacote data.table, que fornece uma versão
mais aprimorada de data.frames. Neste projeto, ele é usado para ler e gravar arquivos
de forma mais eficiente e para as operações de manipulação de dados, agregando e
selecionando-os em subconjuntos, grupos. No exemplo abaixo será possível analisar
como essa biblioteca é utilizada.
Dados = fread(‘DadosExemplo.csv’)
#Lendo os dados e importando para o R em formato de data.table
Dados2 = Dados[Universidade == ‘Universidade1’]
#Agrupando apenas os alunos da universidade 1 na variável Dados2
Dados3 = Dados[Universidade == ‘Universidade2’ & Idade > 21]
#Agrupando apenas os alunos da universidade 2 com idade maior que 21 anos
Dados4 = Dados[Idade = 21 | Idade == 22]
#Agrupando apenas os alunos com 21 ou 22 anos
3.1.2. neuralnet
A função neuralnet do pacote de mesmo nome é utilizada no processo de
treinamento da rede neural. A função permite configurações flexíveis através de
escolhas personalizadas para estruturar a RNA que mais se adequa ao problema.
Nela, definimos o algoritmo de treinamento que será implementado, a quantidade de
neurônios ocultos que deverão existir na rede, a função de ativação, os pesos que
serão atribuídos inicialmente, se a rede será utilizada para previsão ou classificação,
1 Software R: R é uma linguagem e também um ambiente de desenvolvimento integrado para cálculos
estatísticos e gráficos
15
entre outras adaptações mais específicas. Abaixo podem ser visualizados a
implementação da função e alguns argumentos importantes da mesma.
Net = neuralnet(formula = y ~ a + b + c, data, hidden = 3,
linear.output = F, rep = 4, algorithm = ‘backprop’)
• formula: Descrição do modelo que será montado
• data: Dados de treinamento (70 ou 80% da base de dados)
• hidden: Vetor com a quantidade de camadas ocultas
• rep: Número de repetições para o treinamento da rede
• threshol: Valor numérico especificando o valor do erro definido como critério de
parada
• startweights: Vetor com os pesos atribuídos inicialmente
• algorithm: String que contém o algoritmo de aprendizado
• linear.output: especificar se queremos fazer regressão linear.output = TRUE ou
classificação linear.output = FALSE
Após o treinamento da RNA é feita a previsão dos dados. No caso em que a
rede é treinada para realizar classificações, a previsão é feita para distribuir novos
elementos nas classes que estes se enquadram. Para efetuar a seguinte tarefa, é
utilizada a função compute, apresentada no exemplo abaixo.
Previsão = compute(x = Net, dadosTeste)
• x: Objeto da classe nn
• covariate: Um data frame ou matriz contendo as variáveis que foram usadas
para treinar a rede neural
• rep: Um inteiro indicando a repetição da rede neural que deve ser usada, para
gerar uma quantidade de previsões.
3.2. Banco de Dados
O banco de dados utilizado neste trabalho armazena informações de quantas
vezes o usuário passou por cada trigger. Chamam-se de trigger as seguintes
16
variáveis: CR, Anotações, Seguir disciplina, Filtros Avançados, TBS, VL, Saves, Likes
e Uploads. Sendo CR o limitador de conteúdo, isto é, se um usuário não premium
acessar 3 conteúdos, no quarto ele é bloqueado, porém a tentativa de acesso continua
sendo registrada. As anotações são resumos feitos pelos estudantes, seguir disciplina
é a possibilidade de seguir uma matéria em específico, para ter acesso a todos os
tipos de conteúdo pertencentes a ela, os filtros avançados servem para filtrar materiais
de interesse, o TBS são exercícios resolvidos por especialistas de conteúdo e VL são
videoaulas. Saves, likes e uploads são ações que os usuários podem realizar na
plataforma, o primeiro refere-se ao ato de salvar um material para consultas futuras,
o segundo avaliar um material de forma positiva ou negativa e o último, realizar o
upload de materiais no site, para outros utilizadores terem acesso.
Há também, um número identificador para cada usuário e uma variável binária
onde 0 representa os estudantes que não são premium e 1 os que são. Uma
observação importante, é que a contabilização da quantidade de vezes que ocorre
interação é feita antes do indivíduo se tornar pagante, no caso dos premium.
3.3. Data Driven Marketing
O data-driven marketing (marketing orientado a dados) é uma estratégia na
qual os profissionais de marketing obtêm informações e tendências ao analisar dados
gerados pela empresa ou pelo mercado, transformando essas ideias em decisões
acionáveis (RABELO, 2017). No geral, é tomar decisões mais objetivas sobre a
estratégia de marketing ao se basear em dados. Os dados e rastros de uso coletados,
por meio de interações e compromissos do consumidor com o produto, possibilitam
realizar previsões sobre comportamentos futuros desses clientes.
Por meio dessa estratégia tem-se um entendimento mais profundo do perfil do
cliente e com isso é possível realizar ações personalizadas, transmitindo a mensagem
certa, para o público certo e na hora certa. Isso ocorre devido a riqueza de informações
no banco de dados. Desse modo, podem ser feitos filtros de informações mais
precisas e acionáveis sobre os consumidores e possíveis consumidores. Com as
estratégias sendo tomadas em cima do conjunto de informações, fica mais fácil atingir
o público-alvo, por meio de suas experiências.
17
O aumento na quantidade de dados e na qualidade dos mesmos trouxe à tona
um crescimento nas tecnologias de produção criativa e automação. Tal fato,
impulsionou a criação de metodologias que possibilitam realizar essas ações
personalizadas de acordo com a experiência do cliente.
3.4. Redes Neurais Artificiais
Para entender os processos de uma RNA, é importante conhecer como o
funcionamento das redes neurais biológicas.
3.4.1. Redes Neurais Biológicas
O cérebro humano possui, pelo que se conhece, cerca de 10 bilhões de
neurônios. São eles as células mais diferenciadas do organismo, pois apresentam a
maior complexidade estrutural e funcional. Um neurônio é capaz de criar até 10.000
sinapses, ou seja, até 10.000 conexões com neurônios adjacentes. (TAFNER, XEREZ
e RODRIGUES FILHO, 1995). São células que tem como principal característica ter a
capacidade de gerar e conduzir impulsos nervosos.
Um neurônio tem quatro componentes principais: dendritos, corpo celular
(soma), axônio e terminais sinápticos, representados na Figura 1. Os dendritos são
mecanismos responsáveis por receber impulsos nervosos de neurônios vizinhos e
conduzir esses impulsos até o corpo celular. O corpo celular é também um local de
recepção de estímulos, através de contatos sinápticos. O axônio é muito longo e fino,
é especializado em transmitir impulsos, como cargas elétricas, que emergem dos
neurônios, gerando potenciais de ação. Por esse motivo, este componente possui
uma alta resistência elétrica e uma capacitância grande. Por último, os terminais
sinápticos são locais de contato com a célula vizinha, podendo ser outro neurônio ou
uma célula muscular. É o ponto de contato entre a terminação axônica de um neurônio
e o dendrito de outro, onde ocorrem as sinapses.
18
Figura 1: Representação simplificada de um neurônio
Sinapse é uma ligação em que o terminal do axônio faz contato com outro
neurônio. Por meio das sinapses são feitas as transferências de informação de um
neurônio para outro, que se dão por meio de moléculas de íons. Esse processo é
chamado de transmissão sináptica. Segundo BEAR (2007), “O lado pré-sináptico
geralmente consiste de um axônio terminal, enquanto que o lado pós-sináptico pode
ser o dendrito ou o soma de outro neurônio.”.
Os neurônios não realizam divisão celular, sendo assim, quando um neurônio
é destruído, sua perda é permanente. Por outro lado, seus prolongamentos podem se
regenerar e podem se modificar. O sistema nervoso possui plasticidade, isto é, possui
capacidade de se remodelar em função de novas experiências ou lesões,
reformulando suas conexões para se adaptar ao meio ambiente. Em um cérebro
adulto, a plasticidade pode ser atribuída a dois mecanismos: a criação de novas
conexões sinápticas entre neurônios e a modificação das sinapses existentes. Logo,
a plasticidade pode estar relacionada a um processo de aprendizado.
De forma resumida, conforme HAYKIN (2009) apresentou, o sistema nervoso
pode ser visto como um sistema de três estágios, conforme se observa na Figura 2.
O cérebro é o centro do sistema (rede neural): ele recebe as informações, as interpreta
e toma decisões apropriadas. As informações são transmitidas pelos receptores, que
transformam estímulos do corpo humano ou do ambiente externo em impulsos
elétricos. Já os atuadores convertem impulsos gerados pela rede neural em respostas,
como saídas do sistema.
Dois conjuntos de setas são mostrados na figura abaixo, as pontilhadas indicam
a transmissão da informação e a outra mostra a realimentação do sistema. Ele
19
também é realimentado, isto é, com base nas informações resultantes, há o
aperfeiçoamento da próxima tentativa, como um processo de aprendizagem. Sendo
assim, os atuadores enviam informações que são captadas pela rede neural que gera
impulsos que são captados pelos receptores.
Figura 2: Representação em diagrama de blocos do sistema nervoso
3.4.2. Redes Neurais Artificiais
Uma Rede Neural Artificial é construída por meio de modelos computacionais
que tentam realizar tarefas ou funções de interesse de forma semelhante ao sistema
nervoso central (cérebro), sendo capazes de armazenar conhecimentos, realizando
aprendizado de máquina bem como reconhecendo padrões. RNAs em geral são
apresentadas como um sistema de neurônios que captam valores de entrada e geram
valores de saída, simulando assim, o comportamento de uma rede neural natural
biológica.
Segundo (HAYKIN, 2009), uma rede neural é um processador paralelamente
distribuído e se assemelha ao cérebro em dois aspectos: o conhecimento é adquirido
por ela a partir de seu ambiente por um processo de aprendizagem e as ligações entre
os neurônios, chamados de pesos sinápticos, são utilizadas para armazenar o
conhecimento adquirido. Para o processo de aprendizagem é realizado um método
chamado de algoritmo de aprendizagem, que modifica os pesos sinápticos da rede,
de forma ordenada, para que assim, um objetivo específico seja alcançado.
HAYKIN (2009) assinala que as RNAs possuem características muito úteis e
que são muito relevantes, são elas:
20
• Não-linearidade: Um neurônio artificial pode ser linear ou não-linear. Se a rede
é constituída de neurônios que não são lineares, então a rede como um todo
será não-linear. A não-linearidade possibilita considerar o comportamento não-
linear dos fenômenos físicos responsáveis pela geração dos dados de entrada.
• Capacidade de aprendizagem que é atingida com sessões de treinamento: Os
pesos sinápticos de uma rede neural podem ser modificados para reduzir a
diferença entre a resposta desejada e a resposta real da rede. Esse
procedimento é denominado aprendizagem supervisionada ou aprendizagem
obtida por meio de um tutor. A modificação desses pesos é feita por meio da
aplicação de amostras de treino, que possuem respostas de saída previamente
desejadas. O treinamento é repetido para muitos conjuntos até que a rede
neural se estabilize e não haja mais diferenças significativas nos pesos
sinápticos. Para o conjunto de amostras utilizadas no treinamento, não são
feitas suposições prévias sobre o modelo estatístico desses dados, pois se
houver uma relação implícita entre os dados, mesmo que não seja conhecida
sua distribuição, as redes são capazes de apresentar um bom desempenho.
• Adaptabilidade: As redes neurais possuem a capacidade de adaptar seus
pesos sinápticos em ambientes dinâmicos. Elas aprendem, de forma rápida,
padrões complexos e possíveis tendências presentes nos dados. Uma RNA
treinada para operar em um ambiente específico pode ser facilmente
“retreinada” para lidar com alterações nesse meio. Quando operam em um
ambiente onde as estatísticas mudam com o tempo (não-estacionário), uma
rede neural pode ser planejada para alterar seus pesos em tempo real.
• Generalização: O processo de generalização está relacionado ao fato da rede
neural produzir saídas (respostas) adequadas para valores de entradas que
não estavam presentes durante o treinamento.
• Tolerância às falhas: Uma RNA é capaz de realizar computação robusta,
apresentando resultados aceitáveis, no caso de falhas de alguns neurônios. O
21
dano nesses neurônios deve ser extenso para que a resposta global da rede
seja danificada seriamente.
• Informação contextual: Um neurônio é potencialmente afetado pela atividade
de todos os outros neurônios da rede neural.
• Implementação em VLSI: A rede neural é um processador paralelamente
distribuído e essa natureza a faz ser rápida na computação de certas tarefas.
Esta característica torna a rede adequada para implementações utilizando
tecnologia de integração em grande escala (VLSI: very-large-scale-integration).
3.4.3. Modelo de um Neurônio
O neurônio artificial é uma estrutura lógico-matemática que simula a forma, o
comportamento e as funções de um neurônio biológico. Na Figura 3, pode ser visto
um exemplo de um neurônio artificial, composto por seis elementos principais, sendo
eles:
I. Sinais de Entrada: Os sinais de entrada representam os dendritos. Eles têm por
função realizar a captação das informações para identificá-las.
II. Pesos Sinápticos: Os dados de entrada se ligam ao corpo celular artificial por
meio de pesos sinápticos, que como o próprio nome indica, simulam as
sinapses. Em específico, um sinal xj na entrada da sinapse j e conectado a um
neurônio k é multiplicado pelo peso sináptico wi. Os pesos sinápticos são
atribuídos por meio da relevância dada a cada entrada. Tal fato irá influenciar
na decisão da classificação do objeto.
III. Função Soma: Os estímulos captados pelas entradas são processados pela
função soma ou junção aditiva. Elas somam os sinais de entrada, ponderados
pelas respectivas sinapses do neurônio.
IV. Bias: Um valor de reajuste que é feito. Não é necessário para o funcionamento
do neurônio.
22
V. Função de ativação: O disparo do neurônio biológico foi substituído pela função
de ativação, que determina se o valor de saída da função aditiva será o
suficiente para ativar o neurônio. Geralmente, é utilizado um valor limite
(threshold) para essa decisão que define a saída de um neurônio.
VI. Saída: Um valor binário que indica se o neurônio foi ativado (1) o não (0).
Figura 3: Modelo não-linear de um neurônio
Um neurônio artificial 𝑘 pode ser escrito da seguinte maneira:
𝑢𝑘 = ∑ 𝑤𝑘𝑗𝑥𝑗
𝑛
𝑗=1
𝑦𝑘 = 𝜑 (𝑢𝑘 + 𝑏𝑘)
onde, 𝑥1, ..., 𝑥𝑚 são os sinais de entrada do neurônio, 𝑤𝑘1, ..., 𝑤𝑘𝑚 são os pesos
sinápticos, 𝑢𝑘 é a saída do combinador linear, 𝑏𝑘 é o bias, 𝜑 é a função de ativação e
𝑦𝑘 é o sinal de saída do neurônio.
23
3.4.4. Estrutura de Redes Neurais
Um neurônio artificial, em unidade, possui desempenho limitado. Por outro lado,
quando é realizada a integração de vários neurônios, por meio de interconexões, esse
problema pode ser resolvido. Eles são dispostos em camadas, e os que se localizam
na mesma camada, em geral, se comportam da mesma maneira. A disposição dos
neurônios e o padrão de conexão entre estas definem a estrutura da RNA.
Fazem parte da definição da arquitetura da rede os seguintes parâmetros:
número de camadas da rede, número de nodos em cada camada, tipo de conexão
entre os nodos e topologia da rede (BRAGA, CARVALHO e LUDERMIR, 2000). Em
geral, são identificadas três classes de estruturas de redes neurais:
I. Redes Feedforward Alimentadas Adiante com Camada Única: É a estrutura
mais simples de uma rede, visto que possui uma camada de entrada, com nós
de fonte (entrada de dados), que se projeta a uma camada de saída de
neurônios, mas não vice e versa, como pode ser visto na Figura 4. Logo, essa
rede é dita ser do tipo alimentada adiante ou acíclica. Ela é chamada de rede
de camada única devido à presença de uma única camada de saída de
neurônios.
Figura 4: Rede alimentada adiante com uma camada
24
II. Redes Feedforward Alimentadas Diretamente com Múltiplas Camadas: A
estrutura de uma rede neural de múltiplas camadas está relacionada à
presença de uma ou mais camadas de neurônios ocultos ou também chamadas
de unidades ocultas. A camada oculta é definida por um nível adicional de
interação entre a entrada e a saída da rede de forma útil. A adição de mais
camadas possibilita a resolução de trabalhos mais complexos e torna a rede
capaz de extrair estatísticas de ordem elevada, quando o tamanho da camada
de entrada é grande. Cada nó de fonte presente na camada de entrada possui
os respectivos vetores de entrada da informação, que são constituídos de
sinais de entrada que são aplicados aos neurônios na segunda camada
(primeira camada oculta). Os sinais de saída da segunda camada são
utilizados como sinais de entrada na terceira camada, e assim sucessivamente
até o fim da rede. O conjunto de sinais de saída, encontrado na camada final,
constitui a resposta global da rede para as informações fornecidas na camada
de entrada. Uma rede neural pode ser classificada como totalmente conectada,
quando todos os nós de uma camada estão conectados a todos os nós da
camada seguinte, ou parcialmente conectada, quando algumas conexões
sinápticas estiverem faltando na rede. Na Figura 5, pode ser observada uma
rede de duas camadas, com oito neurônios de entrada global, quatro neurônios
ocultos e dois neurônios de saída. Esta estrutura também pode ser chamada
de rede 8-4-2.
Figura 5: Rede alimentada adiante totalmente conectada com múltiplas camadas
25
III. Redes Recorrentes: De forma resumida, uma rede neural recorrente se
diferencia de uma rede alimentada adiante por ter pelo menos um processo de
realimentação. Os loops (realimentação) presentes nesses tipos de rede fazem
com que ela possa armazenar informações ao processar novas entradas, logo,
entradas anteriores devem ser consideradas (como dados de séries
temporais). Sendo assim, a presença de laços de realimentação está
associada a capacidade de aprendizado que a rede neural possui, que será
explicado de forma mais detalhada no tópico seguinte.
Figura 6: Rede recorrente com neurônios ocultos
3.4.5. Processos de Aprendizado
O processo de aprendizado de uma rede neural é um fator de extrema
importância. Nesse processo a rede possui a capacidade de aprender com as
mudanças ocorridas no seu meio e com isso, ela melhora seu desempenho, visto que
se adequa a essas alterações, passando a funcionar da forma mais atualizada
possível. Uma RNA aprende sobre seu meio através de um processo de ajustes
aplicados em seus pesos sinápticos e essa técnica pode ser vista como uma forma
de treinamento atribuído à rede. O aprendizado só ocorre quando a rede neural atinge
uma solução generalizada para uma classe de problemas.
26
De acordo com HAYKIN (2009), a aprendizagem é um processo pelo qual os
parâmetros livres de uma rede neural são adaptados através de uma prática de
estimulação pelo ambiente no qual a rede está inserida. O tipo de aprendizagem é
determinado pela maneira pela qual a modificação dos parâmetros ocorre.
Esse processo ocorre da seguinte maneira: a rede é estimulada pelo ambiente;
depois, sofre alterações nos seus parâmetros livres, como resultado da estimulação
ocasionada; por fim, a rede neural responde de uma outra forma ao ambiente, devido
às alterações ocorridas na sua estrutura interna. O procedimento de alteração dos
pesos, ou dos parâmetros livres, ocorre diversas vezes, pois no processo de
aprendizagem a rede precisa passar por diversas iterações. Desse modo, após o
estímulo inicial, são gerados pesos sinápticos iniciais, seguidos de novas
estimulações, que geram novas mudanças nos pesos, até chegar em um ponto
aceitável e o modelo conseguir se tornar generalizado.
Todo processo de aprendizagem está relacionado aos dados. Logo, a rede se
fundamenta nos mesmos para extrair um modelo geral. A fase de aprendizado deve
ser rigorosa e verdadeira, para que não surjam modelos falsos e a rede não consiga
entender e aprender sobre o meio em que está inserida. Desse modo, de 50% a 90%
dos dados devem ser separados para serem utilizados no treinamento da rede, para
que assim a mesma aprenda, de fato, as regras. Os dados que sobram são utilizados
para teste, tendo a finalidade de verificar se a rede se ajustou de forma correta para
aquele meio.
Existem diversas formas de aplicar o aprendizado em uma RNA. Denomina-se
algoritmo de aprendizado um conjunto de regras bem definidas para a solução de um
problema de aprendizado. Existem muitos tipos de algoritmos específicos para
determinados modelos de redes neurais, eles diferem entre si principalmente pelo
modo como os pesos são modificados.
Serão apresentados dois paradigmas de aprendizado: o aprendizado
supervisionado ou aprendizado com um professor e o aprendizado não
supervisionado. Abaixo, na Figura 7, segue um diagrama explicando para quais
finalidades cada tipo de aprendizado é útil.
27
Figura 7: Resumo de aplicações técnicas supervisionadas e não supervisionadas
Na aprendizagem supervisionada, ocorrem duas fases. Na primeira, a rede
neural é treinada para retornar valores desejados, por um professor que já conhece o
ambiente, ela recebe exemplos de valores de entrada e saída. Em virtude do seu
conhecimento, o professor consegue fornecer respostas desejadas (saída) após
receber um vetor de treinamento retirado do meio em que a rede está inserida
(entrada). A resposta desejada representa a ótima ação realizada pela rede, que
retornará respostas que o professor acha adequadas para o problema.
Os parâmetros da rede são ajustados levando em consideração o vetor de
treinamento e o sinal de erro, que é representado pela diferença entre a resposta
desejada e a resposta real retornada pela rede. O sinal de erro é realimentado no
sistema. Esse procedimento é realizado até que a rede neural consiga simular o
professor, isto é, consiga gerar respostas que sejam adequadas, ajustando seus
parâmetros de forma correta.
28
Após a rede concluir seu treinamento, o professor é dispensado e ela por si só
lida com o ambiente, representando a segunda fase. Nas Figuras 8 e 9, é possível ver
as etapas desse processo.
Figura 8: Fase 1 - aprendizagem supervisionada
Figura 9: Fase 2 - aprendizagem supervisionada
No aprendizado não supervisionado não existe um professor ou uma
supervisão. Nesse tipo de aprendizagem, a rede descobre sozinha relações, padrões
nos dados que são apresentados. O objetivo desse método é fazer com que a rede
detecte padrões e ajuste seus parâmetros a partir de diversas iterações feitas com os
dados de entrada, provenientes do ambiente. Sendo assim, após realizar o
aprendizado, a rede será capaz de codificar as entradas e realizar as classificações
conforme vai percebendo novos padrões, como pode ser visto na Figura 10.
Figura 10: Diagrama em blocos da aprendizagem não supervisionada
29
3.4.6. Algoritmo de Aprendizado
Como as redes de neurais artificiais de única camada eram estruturas muito
simples, elas se tornaram limitadas com o passar do tempo, tanto em relação a
sua funcionalidade quanto a sua representatividade, pois problemas mais
complexos não conseguiam ser representados por tais redes neurais. Diante
disso, com a implementação das redes de múltiplas camadas muitos problemas
conseguiram ser estruturados e para tais tipos de rede e foram desenvolvidos
alguns algoritmos capazes de treiná-las, como por exemplo, o Backpropagation.
O algoritmo, proposto por Werbos, Parker e Rummelhart, foi um dos
principais responsáveis pelo ressurgimento do interesse em redes neurais
artificiais, sendo o algoritmo de aprendizado mais conhecido para redes com
múltiplas camadas.
O backpropagation é um algoritmo de aprendizado supervisionado que
reduz continuamente o erro até um determinado valor aceitável.
Em um primeiro momento, um determinado padrão de entrada é
apresentado à rede neural e propagado camada por camada até que a resposta
seja gerada pela camada de saída. Nessa etapa, os pesos sinápticos se mantêm
inalterados. Após os valores obtidos são comparados com os desejados, se a
saída não estiver com resultados corretos/esperados, um erro (𝑒𝑗) é calculado pela
diferença entre o valor desejado (𝑑𝑗) e o valor obtido na saída (𝑦𝑗), como
apresentado na fórmula abaixo. Cada unidade tem seus pesos ajustados conforme
o erro é retropropagado, com a finalidade de minimizar este erro.
𝑒𝑗(𝑛) = 𝑑𝑗(𝑛) − 𝑦𝑗(𝑛)
Depois que a rede está treinada, o erro estará em um nível aceitável e ela
poderá ser utilizada para a classificação de novos dados. Nesse caso, os novos dados
são apresentados à camada de entrada, ocorre o processamento nas camadas
intermediárias e os resultados são apresentados na camada de saída, como ocorreu
no treinamento da rede. Porém, neste caso, não há a etapa de retropropagação.
Sendo assim, as redes são utilizadas apenas no modo progressivo, onde todas as
30
conexões têm a mesma direção, partindo da camada de entrada rumo à camada de
saída, sem a realimentação.
Abaixo, é possível ver pela Figura 11, como ocorre o processo de treinamento
pelo algoritmo de backpropagation.
Figura 11: Processos do algoritmo Backpropagation
3.4.7. Reconhecimento e Classificação de Padrões
O objetivo do reconhecimento de padrões é realizar uma classificação em
categorias ou classes. Sendo assim, a ideia é conseguir agrupar indivíduos que
possuam características em comum em um mesmo grupo.
Após um treinamento supervisionado, onde a RNA é submetida a um conjunto
de dados que contém exemplos de padrões de todas as classes existentes no sistema,
ela consegue tomar decisões, reconhecer determinados padrões e realizar as
classificações. No modelo de múltiplas camadas cada uma tem uma função
específica, “a camada de saída recebe os estímulos da camada intermediária e
constrói o padrão que será a resposta. As camadas intermediárias funcionam como
31
extratoras de características (classificação), seus pesos são uma codificação de
características apresentadas nos padrões de entrada e permitem que a rede crie sua
própria representação (reconhecimento), mais rica e complexa, do problema” ORRU
(2018).
3.4.8. Notas Históricas
O estudo sobre redes neurais artificiais começou com o trabalho de McCulloch
e Pitts, em 1943. McCulloch era um psiquiatra e neuroanatomista, que há muito tempo
estudava sobre a representação do sistema nervoso, e Pitts um matemático. Juntos
publicaram um artigo denominado “A Logical Calculus of Ideas Immanent in Nervous
Activity”, no qual eles apresentavam cálculo lógico das redes neurais que reunia os
estudos de neurofisiologia e da parte matemática. Eles assumiram que seu modelo
de neurônio seguia uma lei “tudo ou nada”, que com números suficientes de neurônios
e com conexões sinápticas ajustadas de forma adequada, a rede neural seria capaz
de realizar qualquer função computável.
Atualmente, os estudos realizados buscam por métodos de treinamento das
redes artificiais, porém na época, o foco era em encontrar um modelo representativo
de um neurônio e descrever suas capacidades computacionais.
Em 1949, Donald Hebb publicou “The Organization of Behavior”, onde foi
apresentada pela primeira vez uma formulação explícita de uma regra de
aprendizagem fisiológica para a modificação sináptica. Hebb propôs que a
conectividade do cérebro é continuamente modificada conforme um organismo vai
aprendendo tarefas funcionais diferentes e que agrupamentos neurais são criados por
tais modificações (HAYKIN, 2009). Ele assume que a aprendizagem do conhecimento
é alcançada por meio de conexões entre neurônios adjacentes sempre que os
mesmos estiverem excitados.
Outro avanço histórico foi o trabalho de Frank Rosenblatt, em 1958, que
apresenta seu novo modelo “Perceptron”, um modelo inovador de aprendizagem
supervisionada, que era composto de unidades sensoriais conectadas a uma única
camada de neurônios de McCulloch e Pitts, que seria capaz de aprender tudo o que
pudesse representar. Rosemblatt mostrou que, acrescendo sinapses ajustadas
corretamente, as redes neurais de McCulloch e Pitts teriam a possibilidade de serem
32
treinadas para classificar tipos de padrões, um tipo de tarefa que os seres humanos
fazem sem nenhum esforço aparente e de forma quase instantânea. Porém, é um dos
problemas mais difíceis de serem resolvidos por uma máquina.
O Perceptron simples descrito por Rossenblatt possui três camadas: a primeira
recebe as entradas do exterior e possui conexões fixas (retina); a segunda recebe
impulsos da primeira através de conexões cuja eficiência de transmissão (peso) é
ajustável e, por sua vez, envia saída para a terceira camada (resposta).
Nos anos 60, Windrow e Hoff desenvolveram o ADALAINE (Adaptative linear
Element) e o MADALAINE (Many Adalaine) para o reconhecimento de padrões. A
diferença entre essas duas estruturas e o perceptron está no procedimento de
aprendizagem, denominado de Regra Delta, conhecido também como LMS (least
mean square), Gradiente Descendente ou Mínimos Quadrados.
Em 1969, Minsky e Papert chamaram a atenção para algumas tarefas que o
Perceptron não era capaz de executar, já que este só resolve problemas lineares
separáveis, ou seja, problemas cuja solução pode ser obtida dividindo-se o espaço de
entrada em duas regiões através de uma reta. O Perceptron, por exemplo, não
consegue detectar paridade, conectividade e simetria, que são problemas não lineares
separáveis. O principal argumento de Minsky e Papert era de que o problema do
crescimento explosivo, tanto de espaço ocupado como do tempo requerido para
solução de problemas complexos afetaria, cedo ou tarde, as RNA’s, inclusive os
Perceptrons (BRAGA, CARVALHO e LUDERMIR, 2000). O impacto desta publicação
foi devastador, praticamente desaparecendo o interesse em redes neurais artificiais
nos anos seguintes.
O interesse por redes neurais artificiais retornou apenas na década de 80, com
o trabalho de Hopfield, por exemplo. Por meio de seus estudos foi possível esclarecer
boa parte das dúvidas existentes em relação ao processo executado por certas redes
neurais. Ele elaborou um algoritmo que estabiliza uma rede neural binária, simétrica
e com realimentação (FERNANDES, 2003). Uma rede de Hopfield é capaz de
estabilizar um conjunto de padrões de treinamento e também de realizar
autoassociação semelhante a uma memória endereçada por conteúdo
(FERNANDES, 2003).
Em 1986, Rumelhart, Hinton e Williams aperfeiçoaram a ideia de Perceptron,
criando o algoritmo de retropropagação, Backpropagation, levando a uma explosão
33
de interesse em redes neurais. O sucesso desse algoritmo estimulou o
desenvolvimento de muitas pesquisas em redes neurais artificiais e de uma variedade
de modelos cognitivos.
34
4. ANÁLISE DOS RESULTADOS
4.1. Análise Descritiva dos Dados
Realizando uma análise descritiva, foi possível verificar que há um
desbalanceamento dos dados, isto é, há muito mais usuários não premium na base.
Trazendo essa diferença em números, tem-se, 99,3% de estudantes não premium e
apenas 0,7% premium, tal fato pode acarretar problemas no processo de treinamento
da rede neural.
Com base nos dados da tabela 1, observa-se que os usuários premium
interagiram mais com a plataforma, possuem uma média maior que a média geral,
quando são englobados todos os usuários. Pode ser afirmado que este grupo, é muito
mais ativo e engajado na plataforma, e isso aumenta a chance de conversão, visto
que a experiência do usuário com os conteúdos, e ferramentas disponíveis são
maiores, fazendo com que o mesmo entenda o valor daquele produto para sua vida
acadêmica.
Por outro lado, a média de interação dos não premium é sempre inferior quando
comparado aos pagantes. Entretanto, quando é feito o confronto com o geral, em
alguns casos o valor é menor, em outros são muito próximos. Isso pode ser explicado
pelo fato de que este grupo está em maioria na base de dados, sendo assim, a média
geral de interação é influenciada pelo comportamento dos estudantes não premium.
Triggers/Ações Geral Premium Não premium
CR 1,256 1,789 1,252
Anotações 0,001 0,001 0,001
Seguis Disciplina 0,035 0,056 0,035
Filtros Avançados 0,003 0,01 0,003
TBS 0,035 0,076 0,034
Videoaula 0,006 0,009 0,006
Saves 0,948 1.561 0,944
Likes 0,205 0,388 0,204
Uploads 0,103 0,185 0,103
Tabela 1: Média de interações para cada trigger e ação disponível na plataforma
35
Na tabela 2, é possível analisar o percentual de usuários que tiveram contato
com cada trigger ou ação.
O CR é o trigger que os usuários mais interagem, principalmente dos premium.
Com isso, pode ser retirado a informação de que os usuários desse grupo, antes de
virarem premium, batiam muitas vezes no CR, mostrando que o limitador de conteúdo
é um trigger importante no processo de conversão, já que o estudante fica bloqueado
de acessar mais conteúdos para poder estudar e precisa efetuar a compra para voltar
a ter acesso ilimitado.
Os triggers anotações, seguir disciplina, filtros avançados, TBS e VL, possuem
um percentual pequeno de indivíduos tendo contato, principalmente anotações, filtros
avançados e videoaulas, sendo estes os que os estudantes menos veem relevância
para serem utilizados nos estudos. Um ponto importante, é que esse a proporção é
também, sempre maior no grupo premium comparado aos outros, logo, estes se
interessam mais por esses conteúdos disponíveis antes de virarem pagantes.
Das ações disponíveis, o salvar é a mais utilizada pelos estudantes, seguido
pela avaliação do material (like) e uploads. Quando é observado os uploads, os
premiums possuem o dobro do percentual do geral e dos não pagantes. Quando é
analisado as ações realizadas, continua havendo uma maior participação dos usuários
premium comparado aos outros grupos.
Trigger/Ação Geral Premium Não premium
CR 61,69% 80,48% 61,56%
Anotações 0,09% 0,11% 0,01%
Seguir disciplina 3,17% 4,94% 3,15%
Filtros avançados 0,32% 0,98% 0,32%
TBS 2,72% 5,05% 2,71%
VL 0,62% 0,89% 0,62%
Saves 58,93% 68,52% 58,86%
Likes 13,73% 23,51% 13,66%
Uploads 7,67% 14,39% 7,62%
Tabela 2: Proporção de usuários que interagiram com os triggers e ações
Após, foi realizado uma limpeza nos dados, retirando possíveis outliers. A
análise de outliers foi feita apenas nos usuários não premium, visto que a quantidade
36
de pagantes é muito menor e retirando mais possíveis indivíduos outliers reduzirá
ainda mais minha representatividade de usuário premium no processo de
classificação de dados, reduzindo um pouco mais o desbalanceamento. Com esse
processo de limpeza, a distribuição de indivíduos premium e não premium foi,
respectivamente, 1% e 99%.
4.2. Treinamento da Rede Neural
Em um primeiro momento, o treinamento foi realizado utilizando-se a base de
dados por completo, isto é, sem realizar o balanceamento de dados. Sendo assim, os
dados estavam mal distribuídos, existiam majoritariamente não premium.
No segundo momento, aplicou-se um treinamento no banco de dados
balanceado, com distribuição de 50% de usuários premium e 50% não premium, para
ver se a ausência de desproporção dos dados iria melhorar o processo de
classificação, visto que tendo a maioria de usuários não pagantes, a classificação
poderia ficar viesada para este grupo em específico.
Antes de executar o treinamento da rede, tanto no caso dos dados completos
quanto nos balanceados, foram executadas duas técnicas. Em primeiro lugar, foi feito
a normalização dos dados por meio da normalização standard, por meio deste
procedimento, garantimos que a rede não erre na hora de atribuir os pesos devido as
variáveis que possuam valores muito discrepantes, dando um grau de importância
maior que uma do que para outra. Em segundo, foram retiradas variáveis com pouca
relevância explicativa, essa análise foi feita observando a correlação das variáveis
explicativas do modelo da rede neural com a variável resposta, neste caso a variável
“Premium” que indica se o usuário é ou não assinante.
Um outro estágio importante feito, foi a separação de amostras de treinamento,
representado por 80% dos dados, e amostras de teste, constando os outros 20%
restante. No conjunto de treinamento foi feito, como o próprio nome remete, o
processo de treinar a rede, para em seguida aplicar os dados de teste para verificar a
classificação real e comparar com que o modelo de RNA gerou.
37
Por fim, foi feito uma acurácia dos resultados de classificação, onde é possível
identificar qual modelo de rede neural gerou um percentual de acerto maior no
processo de classificar indivíduos premium e não premium corretamente.
Para os treinamentos que serão detalhados mais à frente no trabalho, foram
propostas as seguintes estruturas de rede neural:
• 1 camada intermediária com 3 neurônios
• 1 camada intermediária com 8 neurônios
• 2 camadas intermediárias com 5 neurônios
• 2 camadas intermediárias com 8 neurônios
• 3 camadas intermediárias com 5 neurônios
• 3 camadas intermediárias com 8 neurônios
A quantidade de camadas intermediárias possíveis variou de 1 até 3, nesse
caso. Em geral, utiliza-se no máximo 2 camadas, entretanto como será possível ver
mais a frente, os dados do problema em questão são mais complexos, nesse caso,
ter mais camadas, por mais que torne o processo mais lento, faz com que a rede tenha
uma capacidade de processamento de dados maior, podendo trazer resultados mais
efetivos.
A escolha da quantidade de neurônios foi feita pensando no processamento de
dados da rede. Quanto mais neurônios, maior é a capacidade de processamento.
Entretanto, a escolha do número de neurônios foi deita tendo o cuidado de evitar os
processos de Underfitting, onde se tem poucos neurônios que não conseguem
detectar adequadamente os sinais em um conjunto complicado de dados e processos
de Overfitting, onde há muitos neurônios a serem treinados por um número limitado
de informação contida no conjunto de dados, tornando o processo muito demorado.
A seguir será apresentado os resultados dos treinamentos feitos para o banco
de dados completo e para a base balanceada.
4.2.1. Treinamento Base Completa
Foi feito o treinamento com a base completa e utilizando o algoritmo de
treinamento backpropagation resiliente com retrocesso de peso (rprop+).
38
Antes de treinar a rede, foi feito o processo de análise de variáveis relevantes
para o modelo avaliado por meio da correlação. Com isso, as variáveis Anotações,
Filtros avançados e VL (vídeoaulas) foram retiradas do banco de dados, pois
mostraram-se irrelevantes para o modelo, visto que a correlação dessas variáveis com
a variável resposta “Premium” retornou valores muito pequenos, menor que 0,1. Após,
foi feita a normalização dos dados, seguindo para a separação das amostras de
treinamento e teste, para por fim, realizar o treinamento da rede neural.
Para todas as estruturas de RNA, desde as mais simples com 1 camada
intermediária e 3 neurônios até as mais complexas com 2 camadas e 8 neurônios, foi
obtido o mesmo resultado de acurácia do modelo, isto é, deixar a rede com uma
capacidade de processamento de dados maior não melhorou o resultado de
classificação. A “assertividade” foi medida de forma geral, isto é, vendo o quanto o
modelo acertou como um todo, pegando o total de acertos de premium e não premium
do modelo e de forma específica, analisando o quanto o modelo acertou para cada
grupo.
Conforme pode ser visto na tabela 3, para todas as estruturas de rede, os
acertos foram os mesmos, uma explicação para isso é o fato de que pelos dados
estarem muito desbalanceados, a rede por mais camadas e neurônios que possua,
não consegue classificar corretamente os dados, pois de tanto processar dados de
usuários não pagantes, que estão em grande maioria, a rede fica viciada e não
consegue distinguir bem a diferença de comportamento com a plataforma de usuários
premium para não premium.
Estrutura da RNA “Assertividade” % de acerto
1 camada 3 neurônios
Geral 99,52%
Não premium 100%
Premium 51,40%
1 camada 8 neurônios
Geral 99,52%
Não premium 100%
Premium 51,40%
2 camadas 5 neurônios
Geral 99,52%
Não premium 100%
Premium 51,40%
39
2 camadas 8 neurônios
Geral 99,52%
Não premium 100%
Premium 51,40%
Tabela 3: Resultados treinamento base completa - algoritmo rprop+
Com essas informações, observa-se que utilizar a base completa gera uma
“assertividade” geral alta, de 99,52%. Porém, esse percentual está alto devido ao
acerto de 100% dos usuários não premium, que por estarem em maioria na base de
dados influenciaram o processo de classificação. Por outro lado, quando é visto o
resultado da acurácia para os indivíduos pagantes, apenas 51,4% da classificação
ocorre de forma correta, um percentual ruim de “assertividade”.
Logo, utilizar esses dados não trarão resultados bons para a classificação e
com isso, os projetos de data driven marketing seriam pouco efetivos, visto que
abrangeriam apenas metade dos usuários premium, pois os outros quase 50%
estariam sendo classificados incorretamente como não pagantes e não receberiam as
ações personalizadas para impulsionar o processo de compra da assinatura.
Diante disso, uma solução para esse problema, podendo ocasionar uma
classificação melhor, seria realizar o balanceamento dos dados. Colocando de forma
proporcional e mais equilibrada, a quantidade de usuários premium e não premium. O
balanceamento proposto será trabalhar com um banco de dados onde 50% dos
usuários são pagantes e 50% não.
4.2.2. Treinamento Dado Balanceado
4.2.2.1. Algoritmo rprop+
Após ser feito o treinamento com os dados completos, onde observa-se uma
grande discrepância na distribuição de pagantes e não pagantes, foi realizado um
processo de balanceamento, neste caso, tem-se a mesma quantidade de usuários
premium e não premium na base de dados.
A mesma etapa foi utilizada nesse caso, isto é, primeiro foram retirados do
banco de dados variáveis que não eram relevantes para o modelo, avaliadas por meio
40
de correlações. Com isso, foram excluídas as seguintes variáveis: Anotações, Filtros
avançados e VL. Após, foi feita a normalização dos dados e separadas as amostras
de treino e teste.
Implementando o treinamento nas diferentes estruturas de rede neural,
utilizando nesse caso o algoritmo de treinamento rprop+, foram obtidos os seguintes
resultados para os percentuais de acerto, disponíveis na tabela 4.
Estrutura “Assertividade” % acerto
1 camada 3 neurônios
Geral 75,30%
Não premium 96,40%
Premium 54,90%
1 camada 8 neurônios
Geral 75,30%
Não premium 92,00%
Premium 59,30%
2 camadas 5 neurônios
Geral 75,50%
Não premium 92,60%
Premium 59,00%
2 camadas 8 neurônios
Geral 75,50%
Não premium 92,60%
Premium 59,00%
3 camadas 5 neurônios
Geral 75,47%
Não premium 85,27%
Premium 65,04%
3 camadas 8 neurônios
Geral 75,47%
Não premium 85,27%
Premium 65,04%
Tabela 4: Resultados treinamento dado balanceado - algoritmo rprop+
Realizando a análise da tabela com os resultados, é possível verificar que o
acerto geral foi de aproximadamente 75% para todas as estruturas de rede neural,
porém, a “assertividade” da classe não premium diminuiu com a implementação de
mais camadas, entretanto essa queda não prejudica a boa classificação que o modelo
gera para esse grupo, visto que o menor percentual de acerto é de 85,27%, o que
ainda continua sendo um valor adequado. Por outro lado, o percentual de acerto dos
usuários premium aumentou, passando de 54,9% na estrutura mais simples com 1
camada e 3 neurônios, para 65,04% com 3 camadas e 5 neurônios.
41
Sendo assim, a melhor opção nesse caso, já que o acerto geral não varia, e a
“assertividade” dos não premium continua alta independente da estrutura da rede
escolhida, é escolher o modelo de rede neural que trás o melhor resultado de acerto
para a classe de usuários premium. Com isso, a melhor opção seria a estrutura de
rede com 3 camadas intermediárias e 5 neurônios em cada e com ela tem-se que o
modelo está acertando 75,47% dos usuários em geral, a maioria dos não premium
(85,27%) e mais da metade dos premium (65,04%).
Esse modelo de rede não gerou o resultado ideal, mas quando comparado ao
caso anterior, onde se tinha a base completa, observa-se um resultado muito melhor,
pois há mais equilíbrio no acerto das classes. Nessa situação, será feito um novo
treino, como uma tentativa de melhorar a acurácia propondo outro algoritmo de
treinamento, que será também implementado em dados balanceados, pois eles até
agora trouxeram um resultado mais harmônico.
4.2.2.2. Algoritmo backpropagation
Para realizar esse novo treinamento, foram realizados os mesmos processos
de balancear os dados colocando a mesma quantidade de indivíduos premium e não
premium na base, seguido de retirar variáveis irrelevantes para o modelo por meio de
análise de correlação, nesse caso foram tiradas as variáveis Filtros avançados,
Anotações e VL, como nos casos anteriores, após executar a normalização dos dados
e por fim separar as amostras de treino e teste para começar o processo de
treinamento da rede neural.
Aplicando o algoritmo backpropagation, a rede neural apresentou os seguintes
resultados listados abaixo na Tabela 5.
Estrutura “Assertividade” % acerto
1 camada 3 neurônios
Geral 64,70%
Não premium 97,20%
Premium 31,00%
1 camada 5 neurônios
Geral 74,60%
Não premium 95,70%
Premium 53,00%
42
1 camada 8 neurônios
Geral Rede não convergiu
Não premium
Premium
2 camadas 5 neurônios
Geral Rede não convergiu
Não premium
Premium
3 camadas 5 neurônios
Geral Rede não convergiu
Não premium
Premium
Tabela 5: Resultados treinamento dado balanceado - algoritmo backpropagation
Por meio da análise dos resultados, é possível perceber que utilizando o
algoritmo backpropagation, os resultados não foram muito satisfatórios. Para as duas
primeiras estruturas de RNA, foi possível observar que o % de acerto dos usuários
premium está muito baixo, apenas 31% de acerto na estrutura de 1 camada
intermediária com 3 neurônios e 53% de acerto na rede com 1 camada intermediária
e 5 neurônios. Com esses resultados teríamos a maioria dos usuários não premium
sendo classificados corretamente, porém, os usuários pagantes, que nesse caso são
de nosso interesse, estariam classificados incorretamente.
Um outro ponto importante observado é que o algoritmo de treinamento não
conseguia convergir conforme a estrutura da rede se tornava mais complexa, no caso,
quando se tinha mais de 1 camada e 8 neurônios.
Diante deste problema, diversos ajustes nos parâmetros da função de
treinamento foram feitos para tentar melhorar o processo da classificação, porém
nenhum deles resolveu. Entre essas adaptações estão: reduzir a taxa de aprendizado
da rede, pois com essa taxa baixa, a rede consegue retornar valores mais adequados
para o sistema em questão, pois ela tem mais tempo para realizar os ajustes de forma
mais coerente e foi proposto também o aumento do parâmetro stepmax. A ideia de
realizar essas alterações nos parâmetros seria fazer com que o algoritmo de
treinamento tivesse mais tempo para conseguir ser cuidadoso ao realizar os ajustes
dos pesos, afim de trazer classificações mais coerentes e assertivas, entretanto isto
não aconteceu.
43
4.3. Rede Neural selecionada
A RNA que trouxe melhor resultado foi a aplicada nos dados balanceados
utilizando o algoritmo rprop+, utilizando a estrutura de 3 camadas intermediárias com
5 neurônios. Ela retornou uma acurácia geral de 75,47% e avaliando entre os grupos,
a “assertividade” de usuários premium foi de 65,04% e de não premium de 85,27%.
Na figura 12, é possível identificar a estrutura final da rede escolhida.
Figura 12: Estrutura rede neural selecionada
Após a escolha da RNA que proporcionou a melhor classificação dos grupos, é
necessário realizar a técnica de validação cruzada, para verificar se para diferentes
amostras de treinamento e teste, a acurácia média geral e para as classes premium e
não premium continuarão trazendo um percentual de acerto coerente para a solução
do problema.
4.4. Validação Cruzada
Para realizar a validação cruzada dos dados foram feitas 10 rodadas de
treinamento para 10 amostras distintas de treino e teste, selecionados do banco de
dados balanceado. Após serem feitas as 10 rodadas, é calculado a média do
44
percentual de acerto geral e entre os grupos premium e não premium. A ideia nesse
caso, é ver se para diferentes amostras, a rede continuará trazendo bons resultados,
isto é, a validação cruzada é uma técnica para avaliar a capacidade de generalização
de um modelo, a partir de um conjunto de dados.
Foram feitos treinamentos em diferentes conjuntos de amostras para verificar
se o modelo tinha uma boa capacidade classificatória para qualquer novo conjunto de
dados que fosse apresentado a ele. Diante disso, o resultado da validação cruzada foi
bom, com uma “assertividade” média geral de 77%, na classe não premium 82% de
acerto e na premium, 71% de acerto. Com isso, tem-se que a maioria dos usuários
premium e não premium conseguem ser classificados corretamente e que o modelo
acerta em geral 77% dos casos.
45
5. CONCLUSÃO
Após ser feita a análise de todos os resultados de treinamentos propostos, foi
possível identificar que ao utilizar o banco de dados completo, isto é, com
desbalanceamento entre usuários premium e não premium, foi obtido um percentual
de acerto geral muito alto, entretanto, este valor estava sendo puxado para cima
devido ao grande acerto que a classe não premium estava tendo, visto que estes
estavam em grande maioria na base de dados. Sendo assim, utilizar o dado completo
não iria trazer bons resultados para o processo de classificação dos estudantes e por
consequência não impactaria a venda de assinatura.
Utilizar o treinamento backpropagation para os dados balanceados também
não trouxe uma predição satisfatória, visto que para treinamentos convergentes os
resultados foram ruins, já que o acerto na classe premium era baixo, logo o nosso
grupo de interesse não iria conseguir ser impactado corretamente pelas ações
personalizadas de impulsionamento de compra.
Logo, a rede neural que trouxe o melhor resultado foi a feita em dados
balanceados utilizando o algoritmo de treinamento “rprop+”. Nesse caso foi escolhido
a estrutura com 3 camadas intermediárias e 5 neurônios em cada uma delas, pois
essa RNA trouxe a melhor acurácia, trouxe uma “assertividade” geral e entre grupos
boa, sendo legitimada por meio do processo de validação cruzada.
Dessa forma, 71% dos usuários que não são premium, mas que possuírem um
comportamento de consumo e interação com a plataforma parecido com de
assinantes, serão atingidos pela ação personalizada de atribuição de desconto no
plano de assinatura, para que assim, eles consigam ser impulsionados a realizar a
compra e se tornarem premium. Tal ação impactará a receita positivamente, fazendo
com que a mesma cresça tendo em vista ao aumento de chance de compra desses
usuários impactados pelas ações de data driven marketing.
46
6. REFERÊNCIAS BIBLIOGRÁFICAS
BEAR, F.; CONNORS, B.; PARADISO, M. Neuroscience: Exploring the Brain. 3rd ed.
China: Lippincott Williams & Wilkins, 2007.
BISHOP, C. Neural Networks for Pattern Recognition. Nova York: Oxford University
Press, 1995.
BISHOP, C. Pattern Recognition and Machine Learning. Singapura: Springer, 2006.
BRAGA, A.; CARVALHO, A.; LUDERMIR, T. Redes neurais artificiais: teoria e
aplicações. Rio de Janeiro: Livros Técnicos e Científicos, 2000.
CORTES, C.; VAPNIK, V. Support-Vector Networks. Kluwer Academic Publishers-
Plenum Publishers, Nova York, v.20, n.3, p. 273-297, set.1995.
FALQUETO, D. Rede Neural Artificial para Reconhecimento de Tabela de Horários
de Arme/Desarme no Sistema Sigma. 2007. 45f. Trabalho de Conclusão de Curso –
Universidade do Vale do Itajaí, Santa Catarina, 2007.
FERNANDES, A. Inteligência Artificial Noções Gerais. Florianópolis, Visual Books,
2003
HAYKIN, S. Neural Networks and Learning Machines. 3rd ed. Ontario: Prentice Hall,
2009.
KOHONEN, T. Self-organized formation of topologically correct feature maps.
Springer-Verlag, Berlim, v.43, n.1, p.59-69, jan.1982.
MATHIAS, V. Aplicação de uma rede neural artificial para otimização de CPC
máximo em Google AdWords. 2016. 47f. Trabalho de Conclusão de Curso – USP,
São Paulo, 2016.
47
MCCULLOCH, W.; PITTS, W. A Logical Calculus of the Ideas Immanent in Nervous Activity. The bulletin of mathematical biophysics, Grã-Bretanha, v. 5, n.4, p.115-133, dec.1943.
MICHIELS, I. Data Driven Marketing. 2009. Disponível em:
<http://viewer.media.bitpipe.com/1033409397_523/1268757993_85/IBMDataDriven
MarketingAberdeen.pdf>. Acesso em: 10 junho de 2018.
MUELLER, A. Uma Aplicação de Redes Neurais Artificiais na Previsao do Mercado
Acionário. 1996. 100f. Dissertação de Mestrado – UFSC, Santa Catarina, 1996.
NIA, M. Social Big Data Analytics of Consumer Choices: A Two Sided Online
Platform Perspective. 2016. 270f. Tese de Doutorado - University of Texas at Dallas,
Texas, 2016.
ORRÚ, T. Redes Neurais Artificiais para Reconhecimento e Classificação de
Padrões. Disponível em: <https://pt.scribd.com/document/284263241/RNA-Aplicada-
a-Reconhecimento-de-Padroes>. Acesso em: 25 de maio de 2018.
RABELO, A. Data-driven marketing: O que é essa estratégia e qual será o seu
futuro?. Disponível em: <https://inteligencia.rockcontent.com/data-driven-
marketing/>. Acesso em: 25 de maio de 2018
ROSENBLATT, F. The Perceptron: A Probabilistic Model for Information Storage and
Organization in the Brain. Cornell Aeronautical Laboratory, Nova York, v.65, n.6,
p.386-408, nov.1958.
SILVA, R. Reconhecimento de ambientes em fotos do Instagram com deep learning.
2016. 41f. Trabalho de Conclusão de Curso – UFP, Pernambuco, 2016.
TAFNER, M.; XEREZ M.; RODRIGUES FILHO I. Redes Neurais Artificiais:
Introdução e princípios de neurocomputação. Blumenau: EKO, 1995.
TAN, P.; STEINBACH, M.; HUMAR, V. Introduction to Data Mining. Estados Unidos:
Pearson Education, Inc., 2006.
48
ANEXO - Algoritmo Backpropagation
# Algoritmo será aplicado para o operador lógico XOR,no qual a resposta da operação é verdade (1) quando as variáveis assumirem valores diferentes entre si.
#Dados
entradas = matrix(c(0, 0, 0, 1, 1, 0, 1, 1), nrow = 4, ncol = 2, byrow = T)
saidas = matrix(c(0, 1, 1, 0))
operadorXOR = cbind(entradas,saidas)
#Função de ativação sigmoide
sigmoide = function(soma) {
return (1 / (1 + exp(-soma)))
}
#Gradiente: Para achar pesos que gerem o menor erro possível (mínimo global)
#Derivadas parciais são usadas para calcular os declives da curva, dando a direção correta para encontrar o mínimo global.
sigmoideDerivada = function(sig) {
return (sig * (1 - sig))
}
#Parâmetros estabelecidos para o treinamento da rede
#Peso: Valor atribuído para cada variável por grau de relevância
pesos0 = matrix(runif(6, min = -1, max = 1), nrow = 2, ncol = 3, byrow = T)
pesos1 = matrix(runif(3, min = -1, max = 1), nrow = 3, ncol = 1, byrow = T)
#Épocas: Quantidade de vezes que são apresentadas uma amostra para ajustes dos pesos sinápticos.
epocas = 100000
#Momento: Efeito das mudanças passadas dos pesos na direção atual do movimento no espaço de pesos.
momento = 1
#Taxa de aprendizagem: O quão rápido o algoritmo vai aprender
taxaAprendizagem = 0.5
49
#Implementação do algoritmo
for (j in 1:epocas) {
camadaEntrada = entradas
#Camada intermediária
somaSinapse0 = camadaEntrada %*% pesos0 #ponderação pelos pesos
camadaOculta = sigmoide(somaSinapse0) #Aplicando a função de ativação
#Camada de saída
somaSinapse1 = camadaOculta %*% pesos1
camadaSaida = sigmoide(somaSinapse1)
#erros
erroCamadaSaida = saidas - camadaSaida #valor real - valor gerado pela rede
mediaAbsoluta = mean(abs(erroCamadaSaida)) #Média de erro gerado
print(paste('Erro: ', mediaAbsoluta))
#Aplicando o gradiente: Tentando encontrar mínimo global - menor erro possível
derivadaSaida = sigmoideDerivada(camadaSaida)
deltaSaida = erroCamadaSaida * derivadaSaida
#erro ajustado para ser reduzido a um mínimo global
#Ajustando o peso, que será retropropagado, após o erro ser ajustado pela aplicação do gradiente
pesos1Transposta = t(pesos1)
deltaSaidaXPeso = deltaSaida %*% pesos1Transposta #Ajuste na camada de saída
deltaCamadaOculta = deltaSaidaXPeso * sigmoideDerivada(camadaOculta) #Ajuste na camada intermediária
#Atualização dos pesos camada intermediária
camadaOcultaTransposta = t(camadaOculta)
pesosNovo1 = camadaOcultaTransposta %*% deltaSaida
pesos1 = (pesos1 * momento) + (pesosNovo1 * taxaAprendizagem)
#Atualização dos pesos valores de entrada
camadaEntradaTransposta = t(camadaEntrada)
50
pesosNovo0 = camadaEntradaTransposta %*% deltaCamadaOculta
pesos0 = (pesos0 * momento) + (pesosNovo0 * taxaAprendizagem)
}
51