Você está na página 1de 30

RODRIGO MORAES DE OLIVEIRA

RA 0502007 – 8º SEMESTRE, CIÊNCIA DA COMPUTAÇÃO

INTELIGÊNCIA ARTIFICIAL COM REDES NEURAIS PARA


SISTEMAS DESKTOP

Jaguariúna

2008
RODRIGO MORAES DE OLIVEIRA

RA 0502007 – 8º SEMESTRE, CIÊNCIA DA COMPUTAÇÃO

INTELIGÊNCIA ARTIFICIAL COM REDES NEURAIS PARA


SISTEMAS DESKTOP

Monografia apresentada à disciplina Trabalho


de Conclusão de Curso, do curso de Ciência da
Computação da Faculdade de Jaguariúna, sob
orientação do Prof. Ms. Silvio Petroli Neto, como
exigência parcial para conclusão do curso de
graduação.

Jaguariúna

2008

1
Ao Prof. Silvio Petroli Neto
Pelo entusiasmo e paciência que apresentou nos momentos de aprendizado, orientando sem
imposição e alegrando-se com cada pequena conquista.

2
“A imaginação é o mais importante que o conhecimento”.
(Albert Einstein)

3
OLIVEIRA, Rodrigo Moraes. Inteligência Artificial com Redes Neurais para Sistemas
Web. 2008. Monografia (Bacharelado em Ciência da Computação) – Curso de Ciência da
Computação da Faculdade de Jaguariúna, Jaguariúna.

Prof. Ms. Silvio Petroli Neto


FAJ – Orientador

Profa. Ms. Christiane


FAJ – Bancada

Prof. Ms. Guilherme


Unicamp - Bancada

4
OLIVEIRA, Rodrigo Moraes. Inteligência Artificial com Redes Neurais para Sistemas
Web. 2008. Monografia (Bacharelado em Ciência da Computação) – Curso de Ciência da
Computação da Faculdade de Jaguariúna, Jaguariúna.

RESUMO

Cada vez mais a necessidade de tomadas de decisões se torna fundamental para grandes
empresas, especialmente em setores que têm um banco de histórico. Diante de todas as
informações juntamente com o uso de IA (Inteligência Artificial) se torna um artifício ou
ferramenta de grande utilidade. Através do uso de RNA (Redes Neurais Artificiais) passamos
para o computador todo o processo para a análise das informações e obtenção de retorno. No
entanto, os sistemas atuais não se utilizam dessa ferramenta especialmente na área comercial,
financeiro e etc. Diante do crescimento no desenvolvimento de sistemas se torna interessante
a construção destes com RNA para uso de marketing e tomada de decisão.

PALAVRAS CHAVES: IA, RNA.

5
SUMÁRIO

1. INTRODUÇÃO ................................................................................................................. 6
2. METODOLOGIA .............................................................................................................. 7
2.1 Cronograma ................................................................................................................. 8
3. CONCEITO ....................................................................................................................... 9
3.1 Introdução histórica.......................................................................................................... 9
3.2 Sistema Nervoso ....................................................................................................... 11
3.3 Redes Neurais Artificiais ........................................................................................... 13
3.3.1 Tipos de função de transferência ........................................................................ 13
3.4 Arquiteturas de Rede .................................................................................................. 15
3.4.1 Rede Feedforward com uma única camada .............................................................. 15
3.4.2 MLP – Multiple Layer Perceptron ........................................................................... 15
3.5 Aprendizado ............................................................................................................... 16
3.5.1 Aprendizado Supervisionado ou por Correção Erro ................................................. 16
3.5.2 Aprendizado não-supervisionado ............................................................................. 18
4. PROJETO DA RNA ....................................................................................................... 20
5. ANÁLISE DAS INFORMAÇÕES .................................................................................. 24
5.1 Treinamento .............................................................................................................. 26
5.2 Execução do RNA ...................................................................................................... 27
6. CONCLUSÃO ................................................................................................................. 28
7. REFERÊNCIAS BIBLIOGRÁFICAS .............................................................................. 29

6
1. INTRODUÇÃO

No momento em que vivemos necessitamos cada vez mais de sistemas que


possibilitam obter resultados através de IA. A Rede Neural tem como objetivo criar uma rede
de processamento rápido e eficaz. Através destes sistemas é possível ter a base de
conhecimento de um especialista facilitando a tomada de decisões. Com isso em mente é
primoroso e satisfatório programar uma rede neural para obter informações desejadas que
nenhum sistema comum possa dar. As respostas são baseadas no treino, conhecimento obtido
pela rede por um especialista. A eficiência das respostas para definição de padrões é mais bem
obtido trabalhando com processamento paralelo, algo possível com Redes Neurais Artificiais.
O objetivo consiste em criar um sistema com IA utilizando-se de Redes Neurais
Artificiais. O problema a ser analisado é o perfil de um investidor baseado nas informações do
cliente e a funcionalidade adicional será proporcionada através da RNA. A base para as
entradas das informações da RNA são desde idade, sexo, renda e etc. Tendo as informações e
o treinamento já efetuado na Rede Neural podem-se obter os resultados sobre qual o tipo de
perfil do cliente que possibilite ao funcionário de uma empresa oferecer o pacote de
investimento adequado.

7
2. METODOLOGIA

Levantamento Bibliográfico:
- Preparação para estudos sobre IA baseado em livros e pesquisas.

Estudo de IA:
- A primeira etapa sendo o levantamento bibliográfico, consiste na definição do tipo de
IA será utilizado.

Estudo de Redes Neurais:


- Iniciada com a utilização do livro ‘Redes Neurais – Delphi’ e o site do ‘Laboratório
Virtual em computação natural’. Após a obtenção das informações e estudos, foi decidido
trabalhar com redes neurais.

Análise de Requisitos:
- Tendo decidido o tema e os dados que serão levantados, sendo um sistema de venda
de carros, se iniciará o levantamento, a análise de requisitos para o treinamento da rede
neural.

Projeto do sistema / Implementação:


- Com as informações detalhadas, passará para a fase mais importante, sendo a
implementação. O sistema trabalhado em linguagem C#, orientado a objeto com a utilização
da API NeuronDotNET. Os dados para o treinamento são arquivados num CSV, ou seja, as
informações contidas nas linhas e separadas com ponto e vírgula. Após o desenvolvimento da
RNA concluída, iniciará o treinamento da rede para obtenção dos dados e também a efetuação
dos testes, tornando cada vez mais o sistema apurado.

Teste / Análise dos resultados:


- Finalmente tendo efetuado todos os processos será analisado quão eficiente foi à
criação de um sistema web com inteligência artificial para obtenção das respostas.

8
2.1 Cronograma

Atividade Fev Mar Abr Mai Jun Jul Ago Set Out Nov
Levantamento OK OK
Bibliográfico
Estudo de Conceitos OK OK
sobre IA
Estudo de Redes OK OK
Neurais
Análise de Requisitos OK OK
Projeto do Sistema OK OK
Implementação OK OK OK
Testes / Análise dos OK OK
Resultados

9
3. CONCEITO

3.1 Introdução histórica


“Uma rede neural artificial é um circuito composto por uma grande quantidade
de unidades simples de processamento inspiradas no sistema neural” - Nigrin, 1993.

Apesar de ser algo inovador no século passado, o conceito do uso da máquina para o
auxilio do homem remonta a Antiguidade Clássica. Com o passar dos tempos o interesse leva
aos estudos da mecânica dando ao homem uma nova concepção. Descartes definiu o ser
humano como uma maquina que tem músculos que são controlados pelo cérebro. Baseado
nesse conceito Descartes acreditava em que atividades praticadas pelo homem poderiam ser
executadas por máquinas com certa limitação.
Assim surge o princípio fundamental e problemático de Inteligência Artificial. Um ser
humano é uma máquina capaz de executar um comando resultante de um engenho divino. Um
Autômato é capaz de executar um comando resultante de um engenho humano. O desejo de
ser um ‘criador’ surge às mentes da época.
O avanço primordial foram os estudos matemáticos no século XVII e XIX. Inicia-se
através de Pascal [3] (1623-1662), ao criar a primeira máquina de calcular. Através desse
estudo conclui-se que se uma máquina é executar operações lógicas, também seria capaz de
raciocinar.
Os trabalhos foram retomados por Babbage (1792-1871) projetando uma máquina de
calcular com quatro operações aritméticas básicas e o encadeamento das mesmas. Embora não
foi terminado, o objetivo era trabalhar com tabelas matemáticas para cálculos trigonométricas
e logarítmicas.
No século XIX que surge Alan Turing [3] que propõe o jogo da imitação. Se a
máquina fosse capaz de ganhar, demonstraria a evidencia de máquinas inteligentes. Somente
em 1935 surge a máquina abstrata, cujo objetivo descrever de modo rigoroso um processo
automático, refazendo o comportamento de um ser humano. Nesse período era somente uma
discussão teórica e abstrata sendo posteriormente confirmada com o aparecimento dos
primeiro computadores pós-segunda Guerra Mundial.
A partir de 1956 a Inteligência Artificial é reconhecida com o uso de computadores.
Com o advento dessas maquinas junto com o conceito surge à idéia de maquinas inteligente,
mas ainda existia uma duvida a quanto de podia designar que um sistema é inteligente. O

10
objetivo principal é construir um sistema inteligente capaz de aprender, perceber o seu meio
envolvente, raciocinar baseado em conceitos complexos.

3.2 Sistema Nervoso


O conceito de um sistema de redes neurais consiste em simular o funcionamento de
um cérebro. Mas como funciona o cérebro? Como ele processa as informações? É possível
construir um sistema capaz de raciocinar?
A unidade básica constituinte do cérebro é o neurônio. Com a rede de neurônios e
sinapses se obtém um sistema nervoso. Cada neurônio consiste de um corpo celular, também
designado como soma, o qual contém núcleo. Partindo do corpo da célula, existem um
número de filamentos denominados dendritos e um filamento mais longo que é denominado
de axônio. Os dendritos ligam-se ao redor da célula a outras células e o axônio faz uma
conexão mais longa. A estas conexões dá-se o nome de sinapses. O sinal de uma célula a
outra se faz mediante uma complicada reação eletroquímica. Substâncias químicas
transmissoras são lançadas das sinapses e entram pelos dendritos, aumentando ou baixando o
potencial elétrico do corpo da célula. Quando o potencial chega a um limiar, um pulso elétrico
ou potencial de ação é mandado pelo axônio. O pulso espalha-se ao longo das conexões
existentes pelo axônio, eventualmente, chegando a outras sinapses e lançando transmissores
ao corpo de outras células. Sinapses que incrementam o potencial de outras células são
denominadas inibitórias. Os neurônios podem formar novas conexões com outros neurônios e
é através de tais mecanismos que se forma a base para o aprendizado do cérebro.[2]

O sistema nervoso dá a capacidade de um organismo através de entradas sensórias


conseguirem informações sob o meio que vive. Todas as entradas são processadas sendo
baseadas no aprendizado obtido no passado e se obtêm uma resposta coerente [1].
Um sistema nervoso é organizado em seguintes níveis: moléculas, sinapses, neurônios,
camadas, mapas e sistemas. (veja figura 01).

11
Figura 01 (Organização do sistema nervoso biológico) [2]

Como funciona o processamento das entradas num sistema nervoso? Tudo começa
com a transmissão de sinais de um neurônio para outro juntamente com a efetividade da
transmissão ser modulada possibilitando a adaptação a diferentes situações. A plasticidade
permite a capacidade das sinapses serem modificadas tornando a chave fundamental para o
aprendizado.
A duas categorias de neurônios: pós-sinápticos e pré-sinápticos. Aos pós-sinápticos ou
receptores ficam numa região especializada chamada de sinapse, pois recebem o sinal vindo
de outro neurônio. Quanto aos pré-sinápticos desempenham o papel em enviar o sinal ao
neurônio correto.
O canal que percorre a transmissão do sinal é chamado de sinapses sendo a junção do
axônio de um neurônio pré-sináptico a um dendrito ou neurônio pós-sináptico. (Veja figura
02).

Figura 02 (Neurônio biológico)[2]

12
O objetivo do sinal recebido de cada neurônio consiste na alteração do seu estado
gerando um pulso elétrico chamado de potencial de ação. A mudança ou ativação do neurônio
ocorre apenas quando seu potencial é maior que um dado limiar chamado de threshold. Após
a ativação o sinal é propagado para os neurônios presente no sistema nervoso. A interconexão
destes neurônios gera uma rede neural para uma capacidade de processamento maior com
cada neurônio independente entre todos.
O fator marcante deste é o processamento paralelo e representação distribuída.
Observa-se através da divisão ou organização laminar dos neurônios. Diversas áreas
desempenham a sua função desde camadas de entradas, intermediarias escondida ou camada
de saída. A camada de entrada recebe os sinais sensoriais ou de entrada, a camada de saída
envia sinais para outras partes do cérebro e as camadas intermediárias recebem (enviam)
sinais de (para) outras camadas do córtex. Isso significa que as camadas intermediárias nem
recebem entradas diretamente e nem produzem uma saída do tipo motora, por exemplo.

3.3 Redes Neurais Artificiais


O sistema nervoso é uma poderosa máquina de aprendizado e memória. Tudo ocorre
através de modificações tais como a plasticidade do sistema nervoso. Em geral, a
aprendizagem global é resultado de alterações locais nos neurônios. Existem diversas formas
de modificações possíveis em um neurônio:
• Dendritos podem nascer, assim como também podem ser removidos.
• Alguns dendritos podem se esticar ou serem encolhidos permitindo ou eliminando,
respectivamente, a conexão com outras células.
• Novas sinapses podem ser criadas ou sofrerem alterações.
• Sinapses também podem ser removidas.
• Todo neurônio pode morrer e também se regenerar.

Uma RNA (Rede Neural Artificial) constitui a mesma estrutura de um sistema nervoso
com unidades interconectadas chamadas de neurônios artificiais ou Perceptron [2] como
mostrado na figura 03. O modelo de uma rede neural tem a seguintes características:

• O processamento básico de informação ocorre em diversas unidades simples


denominadas de neurônios artificiais ou simplesmente neurônios (ou nós);

• Os neurônios estão interconectados gerando redes de neurônios, ou redes neurais;

13
• A informação (sinais) é transmitida entre neurônios através de conexões ou sinapses;

• A eficiência de uma sinapse, representada por um peso associado, corresponde à


informação armazenada pelo neurônio e, portanto, pela rede neural; e

• O conhecimento é adquirido do ambiente através de um processo de aprendizagem


que é, basicamente, responsável por adaptar os pesos das conexões aos estímulos
recebidos do ambiente.

Figura 03 (Modelo de neurônio artificial) [2]

O funcionamento de um neurônio consiste na entrada de n valores que serão


calculados juntamente com os pesos da sinapse, ou seja, como na figura acima a entrada x0
será multiplicada pelo peso wj0. A função de soma tem o papel de efetuar a soma de todas as
entradas ponderadas pelos seus pesos respectivos. O limiar ou bias tem o papel de aumentar
ou diminuir a influência do valor da entrada líquida para a ativação do neurônio k. A função
de ativação ou transferência é geralmente utilizada com dois propósitos: limitar a saída do
neurônio e introduzir não-linearidade no modelo.

ou

3.3.1 Tipos de função de transferência


Tipos vários tipos de função para transferência dentre elas:
- Função de Limiar: Função de ativação ou transferência será igual a um se a
saída do neurônio for maior ou igual que zero; ou igual a 0 se a saída for menor que zero.

- Função Sigmóide: A forma mais comum de função de transferência utilizada


na construção de redes neurais artificiais. A função logística é um exemplo onde a é o

14
parâmetro de inclinação da função sigmóide. Variando-se o parâmetro a, obtemos funções
sigmóides com diferentes inclinações. Esta função assume um intervalo continuo de valores
entre zero e um além de se tornar diferençável enquanto a função limiar não é.

3.4 Arquiteturas de Rede

3.4.1 Rede Feedforward com uma única camada


Este caso mais simples de rede em camadas consiste em uma camada de entrada e
uma camada de saída. Geralmente os neurônios de entrada são lineares, ou seja, eles simplesmente
propagam o sinal de entrada para a próxima camada. São também denominados de neurônios
sensoriais. Esta rede é denominada feedforward porque a propagação do sinal ocorre apenas da entrada
para a saída, ou seja, é apenas no sentido positivo.

3.4.2 MLP – Multiple Layer Perceptron


O conjunto de neurônios artificiais resulta numa rede neural. Um padrão de arquitetura
para uma rede neural muito utilizada é MLP (Multiple Layer Perceptron). Este aumento no
número de camadas possibilita um aumento de processamento. Para uma rede neural é
necessário uma camada de entrada e uma camada de saída podendo existir mais camadas
intermediarias que ficam escondidas. A saída de cada camada é utilizada como entrada para
próxima camada. (Veja Figura 04)

Figura 04 (Modelo de Multiple Layer Perceptron – MLP) [2]

15
3.5 Aprendizado
“Aprendizado é um processo pelo qual os parâmetros livres de uma rede neural são adaptados
através de um processo 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.” [4]

3.5.1 Aprendizado Supervisionado ou por Correção Erro


Para a rede neural é necessário o aprendizado ou treinamento assim como o sistema
nervoso que temos precisa para conseguir definir um padrão. A premissa é encontrar o
conjunto de pesos para que qualquer entrada se aproxime ao valor desejado. O algoritmo de
retro propagação do erro leva em consideração a saída desejada a saída obtida. A fase de
treinamento tem três paradigmas: aprendizado supervisionado e aprendizado não-
supervisionado. [2]
Aprendizado supervisionado, como o próprio nome diz significa o controle, supervisão
dos valores utilizados e obtidos nos treinamentos. Há varias utilidades para esse tipo de
aprendizado como:

• Classificação e reconhecimento de padrões

• Predição de séries temporais

• Identificação de sistemas

• Controle de processos

• Projeto de filtros em processamento de sinais

Processo para o treinamento supervisionado é formalizado no modelo em que dada à saída


desejada dj(t) para o neurônio j no instante t e yj(t) a resposta observada do neurônio j no mesmo
instante t obtida através do estimulo x(t). Com o par-resposta é possível encontrar o erro observado
baseado na fórmula do erro da diferença quadrática como abaixo mostrado.

ej(t) = (dj(t) – yj(t))² ou

16
Figura 05 (Processo de retro-propagação)[2]

Este processo tem como objetivo corrigir o erro observado e maximizar o processamento com
a retro-propagação. Os ajustes corretivos são projetados para aproximar passo a passo o sinal de saída
da resposta desejada. Este objetivo é alcançado minimizando-se uma função de custo ou índice de
desempenho, , definido em termos do sinal de erro ek (n) como [4]:

Os ajustes passo a passo dos pesos sinápticos do neurônio k continuam até o sistema atingir
um estado estável. Neste ponto o processo é encerrado. Em particular, a minimização da função de
custo resulta na regra delta que tem como finalidade fazer o ajuste ao peso sináptico. Suponha que wkj
do neurônio k excitado por um elemento xj (n) do vetor de sinal x(n) no passo de tempo n. De acordo
com a regra é definido por:

Onde é uma constante positiva que determina a taxa de aprendizado quando avançamos em

um passo no processo de aprendizagem. O modo formal da regra pode ser definido como:

“O ajuste feito em um peso sináptico de um neurônio é proporcional ao produto do sinal de


erro pelo sinal de entrada da sinapse em questão.” [4]

Tendo calculado o ajuste sináptico , o valor atualizado do peso sináptico é

determinado por:

17
Na verdade, e podem ser vistos como os valores do antigo e novo do peso

sináptico , respectivamente.

O algoritmo de aprendizagem pode ser definido:

Modelo de algoritmo de aprendizagem [2]

3.5.2 Aprendizado não-supervisionado

Para este tipo de aprendizado tem como característica a não existência de um supervisor para
avaliar o desempenho da rede neural para os conjuntos de pesos desejados. Não se utiliza de métodos
para correção de erros e entrada dos dados de entradas consistentes ao contrário os de saída que são
desconhecidos. A adaptação da rede neural é baseada na estatística nos dados da entrada com a
capacidade de identificar as quais classes os novos padrões pertencem. [2]

Neste caso as redes neurais empregam a algoritmo competitivo de aprendizagem. Os


neurônios de saída disputam entre si para se tornarem ativos como o único neurônio vencedor. O
objetivo dessa concorrência é para descobrir regularidades estatísticas no conjunto de dados.
Neurônios individuais aprendem a se especializar a conjuntos (grupos ou clusters) de padrões
similares. Eles se tornam detectores ou extratores de características para diferentes classes dos dados
de entrada.

18
A idéia é encontrar o neurônio cujo vetor de pesos seja o mais parecido ao padrão de entrada.
Se um neurônio não responde a um padrão de entrada, ou seja, não é o vencedor, então nenhuma
adaptação é sofrida por este neurônio. Entretanto, o neurônio i que ganhou a competição sofre um
ajuste ∆ no seu vetor de pesos na direção do vetor de entrada:

onde α indica o tamanho do passo a ser dado na direção de x. O parâmetro α é conhecido como taxa de
aprendizagem. A motivação para o uso do treinamento não supervisionado é:

• Técnicas para estimação de densidades de probabilidade, que produzem modelos estatísticos


explícitos para descrever os fenômenos responsáveis pela produção dos dados de entrada. Ex.:
redes bayesianas.

• Técnicas de extração de regularidades estatísticas (ou então irregularidades) diretamente dos


dados de entrada. Ex.: redes de Kohonen.

19
4. PROJETO DA RNA

Após estudos sobre as redes neurais artificiais se iniciou o desenvolvimento do projeto


de um software que implemente uma rede neural, no entanto a implementação deste se tornou
custoso pelo tempo disponível. Para isso utilizamos da biblioteca NeuronDotNet[5]. Esta
biblioteca feita em C# disponibiliza todas as funcionalidades para a montagem e utilização de
RNA possibilitando utilizar com Asp.NET ou Flex. O ponto positivo desta biblioteca é o
conteúdo do help disponibilizado como também os diversos exemplos contidos no site
http://neurondotnet.freehostia.com/index.html.

Esta API é escrita em C# é compatível com .NET plataform tornando necessário a


instalação do framework 2.0 através do download no endereço
http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-
508D977D32A6&displaylang=en. Após a instalação do framework se necessita de um editor
ANSI ou Microsoft Visual Studio 2005 ou 2008.

Para iniciar o projeto, primeiramente é necessário definir os passos da montagem de


uma RNA.

1. Criação do RNA e arquivo de treinamento


2. Leitura do arquivo
3. Treinamento
4. Execução da RNA

A classe principal para a RNA é BackpropagationNetwork. Esta classe contém


métodos fundamentais para o controle e execução da Rede Neural. Portanto se instancia um
objeto do tipo BackpropagationNetwork, como abaixo mostrado.

private BackpropagationNetwork network;


network = new BackpropagationNetwork(inputLayer, outputLayer);

20
É notável o uso de parâmetros contendo a camada de entrada (inputLayer) e saída
(OutpLayer). Estes dois objetos são do tipo ActivationLayer. Ao se instanciar o objeto da
camada de entrada, oculta e de saída temos de definir o tipo de função de transferência
utilizar. A API possibilita utilizar Sigmoid Activation Function, Linear Activation Function,
Logarithmic Activation Function, Sine Activation Function, Tanh Activation Function.
Através do tipo de função utilizado, ocorrerá diferenças nos resultados obtidos.
Abaixo é demonstrado como instanciar o objeto definindo neste a quantidade de neurônios.

ActivationLayer inputLayer = new LinearLayer(8);


ActivationLayer hiddenLayer = new SigmoidLayer(8);
ActivationLayer outputLayer = new SigmoidLayer(5);

No protótipo utilizamos na camada de entrada com oito neurônios a função de


transferência linear e na camada oculta com oitos neurônios e uma saída com cinco neurônios
à função de ativação Sigmóide.
Após a instanciação das camadas, o próximo passo é conectar as camadas para efetuar
a interação entre como mostrado abaixo.

// Conectar as camadas
new BackpropagationConnector(inputLayer, hiddenLayer);
new BackpropagationConnector(hiddenLayer, outputLayer);

// Instanciação da rede
network = new BackpropagationNetwork(inputLayer, outputLayer);

O próximo passo é a criação do arquivo de treinamento. No protótipo criado, o


arquivo de treinamento consiste com os valores de entrada e saída separados por ponto e
vírgula. Antes da leitura do arquivo é necessário criar o objeto para o treinamento da RNA. A
classe TrainingSet contém as funções para o treinamento. A instanciação deste objeto tem
como parâmetro a quantidade de neurônios e quantidade de neurônios de saída como abaixo.

// Treinamento
TrainingSet trainingSet = new TrainingSet(8, 5);

21
A leitura do arquivo é feito com o seguinte código.

StreamReader stream = new StreamReader(@"treinamento.txt");


string linha = null;
while ((linha = stream.ReadLine()) != null)
{
string[] l = linha.Split(';');
trainingSet.Add(new TrainingSample(
new double[] {
Double.Parse(l[0]),
Double.Parse(l[1]),
Double.Parse(l[2]),
Double.Parse(l[3]),
Double.Parse(l[4]),
Double.Parse(l[5]),
Double.Parse(l[6]),
Double.Parse(l[7])
},

new double[] {
Double.Parse(l[8]),
Double.Parse(l[9]),
Double.Parse(l[10]),
Double.Parse(l[11]),
Double.Parse(l[12])
})
);
}

stream.Close();

Na leitura das informações adicionamos um objeto TrainingSample que tem um array


de entrada e um array de saída do RNA. O array deve conter exatamente as quantidades
definidas no objeto TraininSet. A API possibilita definir a porcentagem de aprendizado da
RNA através da função SetLearningRate como exemplo abaixo.

network.SetLearningRate(0.7d);

A inicialização da rede neural é feito pelo método Initialize da classe


BackpropagationNetwork. O treinamento é o próximo passo através da função Learn. Abaixo
temos o exemplo.
network.Initialize();
network.Learn(trainingSet, 1000);

22
A execução da rede com valores de entrada é pela função Run. Esta função recebe
como parâmetro um array de valores como utilizado no protótipo e mostrado abaixo.
double[] result = network.Run(new double[] { 0d,
1d,
3d,
30d,
0d,
2000d,
2d,
3d });

Obteremos o retorno da RNA através de um array de valores para analisar o resultado.


Para maiores informações acesse o site http://neurondotnet.freehostia.com/index.html no link
USER MANUAL aonde terá todas as definições das classes com suas propriedades, métodos
utilizados e disponíveis.

23
5. ANÁLISE DAS INFORMAÇÕES

Tendo toda a arquitetura de uma rede neural pronta se inicia o estudo com as
informações desejadas. Como base utilizou o uso da rede neural para a indicação do perfil do
investidor financeiro [1]. Digamos que certo bancário precise classificar por perfis de
investimento um determinado conjunto de clientes investidores em sua base de dados. Tendo
uma base histórica é necessário classificá-la para leva adiante um novo plano de marketing do
banco. Neste caso utilizaremos uma RNA para classificar os clientes considerando as
características. Necessita-se classificar os perfis de clientes investidores que precisa obter
sendo: agressivo, arrojado, equilibrado, reservado e defensivo (Tabela 01).
Perfil Descrição
Agressivo O cliente investe, praticamente, em modalidades de alto risco.
Arrojado O cliente concentra seus investimentos em modalidades de alto e médio risco.
Equilibrado O cliente concentra em modalidades de médio risco, não caracterizando um
perfil arrojado nem reservado.
Reservado O cliente concentra seus investimentos em modalidades de médio e baixo
risco.
Defensivo O cliente investe, praticamente, em modalidades de baixo risco.
Tabela01 (Perfis dos clientes e descrição.)
Após a definição dos tipos de clientes que deseja determinar, se necessita definir as
entradas da rede como abaixo descrito:
1. Número de investimentos de alto risco por ano;
2. Número de investimentos de médio risco por ano;
3. Número de investimentos de baixo risco por ano;
4. Idade;
5. Sexo;
6. Renda;
7. Prazo médio de investimento;
8. Escolaridade

A partir das variáveis se defini a estrutura da rede MLP como descrito abaixo:
 8 entradas;
 1 camada oculta com 8 neurônios;
 5 saídas;

24
Para uma rede neural as informações devem ser numéricas, portanto há necessidade de
converter as informações para os valores apropriados como também as suas faixas de
intervalo. Abaixo se descreve os valores numéricos para as informações e suas normalizações
ou faixa de valores:

1. Número de investimentos (Alto, Médio e Baixo Risco): 0 a 10;


2. Idade: 10 a 60 anos;
3. Sexo:
a. 0 – masculino;
b. 1 – feminino;
4. Renda: 100 a 10.000;
5. Prazo médio de investimento (PMI): 1 a 12 meses;
6. Escolaridade:
a. 0 – nenhuma;
b. 1 – 1˚ grau completo;
c. 2 – 2˚ grau completo;
d. 3 – 3˚ grau completo;
7. Perfil:
a. 1 – Agressivo;
b. 2 – Arrojado;
c. 3- Equilibrado;
d. 4- Reservado;
e. 5 – Defensivo;

Com todas as informações prontas necessita efetuar o treinamento da rede neural.

25
5.1 Treinamento
Cria-se um arquivo ‘treinamento.txt’ que contém os valores de entrada com o valor de
saída desejado. Abaixo temos um exemplo deste (Tabela 02).
N˚ NInvAR NInvMR NInvBR Idade Sexo Renda PMI Escol. Perfil
1 0 1 3 30 0 2000 2 3 5
2 1 2 0 24 1 2500 1 3 3
3 1 1 1 28 1 3000 4 2 3
4 0 1 1 35 0 1000 6 1 4
5 2 1 0 25 0 2300 1 2 2
6 3 1 1 40 0 4000 2 2 1
7 3 1 0 23 1 2800 1 3 1
8 1 1 4 30 0 1800 2 1 4
9 0 4 0 27 1 2000 3 2 3
10 0 0 3 45 0 2500 3 2 5
11 1 1 4 36 1 3100 4 3 5
12 2 2 0 21 0 1700 2 2 2
13 0 0 2 38 1 2500 5 2 5
14 0 2 0 28 1 1500 2 1 3
15 0 0 1 42 1 3000 8 2 5
16 0 2 3 36 0 3500 4 3 4
17 2 1 1 30 1 3200 1 3 1
18 3 2 1 32 0 2900 2 3 1
19 1 2 4 37 1 3200 1 3 4
20 3 1 1 29 0 2500 3 2 2
21 2 2 0 26 1 2900 2 2 2
22 3 0 0 22 1 1700 1 1 1
23 1 1 1 32 0 1500 3 1 3
24 0 1 2 30 0 1600 4 1 4
25 1 0 0 37 1 1500 6 1 2
26 2 0 0 24 0 1400 3 1 1
27 0 2 2 29 1 2000 3 2 4
28 0 0 4 45 0 3200 6 3 5
29 4 0 0 20 1 1700 1 1 1
30 1 1 1 28 0 2100 3 2 3
Tabela 02 (Treinamento para RNA)

26
No arquivo de treinamento usamos uma amostragem das informações que definem o
perfil do investidor como no caso acima.

5.2 Execução do RNA


Inicializando a rede neural passamos a entrar com as informações do arquivo que
efetua a correção dos pesos. Tendo finalizado o processo, pode-se utilizar o RNA para
qualquer tomada de decisão para a indicação do perfil do cliente para o investimento no banco
ou financeira.
No protótipo ao aplicar os dados do treinamento e executado obteve o resultado como
mostrado abaixo.

Figura 06 (Resultado obtido no protótipo da RNA)


Utilizamos as seguintes informações para as entradas:
- O cliente teve nenhum investimento de alto risco;
- Participou num investimento de médio risco;
- Teve três investimentos de baixo risco;
- Com idade de 30 anos;
- Masculino;
- Renda de R$ 2000,00;
- Prazo médio de investimento de dois meses;
- Terceiro grau completo (Faculdade);
Como mostrado em valor o erro total, isto significa que a margem de variação é de
0,05 para o valor de saída. Assim o valor de saída definido entre zero e um como padrão para
as cinco saídas não está com valores inconsistentes. Quanto menor o erro total melhor a
confiabilidade da informação obtida.

27
6. CONCLUSÃO

Concluindo a análise das informações, nota-se que a rede neural ajuda em muito
quanto à tomada de decisão. Mas tudo envolve o treinamento da RNA para obter melhor
resultado e a boa definição das camadas e neurônios. Um bom treinamento consiste na
obtenção das informações que impactam no resultado e a execução deste no sistema. Claro
que um RNA nunca substituirá um ser humano experiente, no entanto, muitas vezes a tomada
de decisão com o auxilio de um RNA facilita em muito vários setores desde financeiro,
comercial, áreas de saúde e etc. Existe um universo gigantesco a ser explorado pela RNA e
certeza no futuro será muito utilizado nos sistemas sendo o diferencial entre outros sistemas.

28
7. REFERÊNCIAS BIBLIOGRÁFICAS

[1] MEDEIROS, L.F.; Redes Neurais em DELPHI. 2ª Ed. Visual Books, 2006. 206p.
[2] LVCON, Laboratório Virtual em Computação Natural. Disponível em
http://lsin.unisantos.br/lvcon/tema?tema=2, recuperado em 10/12/2007.
[3] CITI, Estudo sobre Inteligência Artificial. Disponível em
http://www.citi.pt/educacao_final/trab_final_inteligencia_artificial/index_centro.html,
recuperado em 01/04/2008.
[4] Haykin, S.; Redes Neurais Princípios e Pratica. 2ª Ed. Bookman, 2001, 900p.
[5] NeuronDotNet, NeuronDotNet. Disponível em http://neurondotnet.freehostia.com,
recuperado em 10/11/2008.

29

Você também pode gostar