ver/abrir - Repositório do Departamento de Ciência da Computação

Transcrição

ver/abrir - Repositório do Departamento de Ciência da Computação
Universidade de Brasília
Instituto de Ciências Exatas
Departamento de Ciência da Computação
Mineração Web - Predição do comportamento de
ativos na Bovespa
Franco Peluti Alencar
Guilherme de Moraes Ávila
Monograa apresentada como requisito parcial
para conclusão do Curso de Computação Licenciatura
Orientador
Prof. Dr. Jan Mendonça Corrêa
Brasília
2011
Universidade de Brasília UnB
Instituto de Ciências Exatas
Departamento de Ciência da Computação
Curso de Computação Licenciatura
Coordenador: Prof. Dr. Homero Luiz Piccolo
Banca examinadora composta por:
Prof. Dr. Jan Mendonça Corrêa
(Orientador) CIC/UnB
Prof. Me. João José Costa Gondim CIC/UnB
Prof. Me. Pedro Antônio Dourado de Rezende CIC/UnB
CIP Catalogação Internacional na Publicação
Franco Peluti Alencar.
Mineração Web - Predição do comportamento de ativos na Bovespa/
Guilherme de Moraes Ávila, Franco Peluti Alencar. Brasília : UnB, 2011.
67 p. : il. ; 29,5 cm.
Monograa (Graduação) Universidade de Brasília, Brasília, 2011.
1. Bovespa,
2.
Weka,
5.
Mídias Sociais,
9.
Fóruns
6.
3.
Mineração de dados,
Mercado de Ações,
7.
4.
Blogs,
CDU 004
Endereço:
Universidade de Brasília
Campus Universitário Darcy Ribeiro Asa Norte
CEP 70910900
Brasília DF Brasil
Mineração Web,
8.
Google,
Universidade de Brasília
Instituto de Ciências Exatas
Departamento de Ciência da Computação
Mineração Web - Predição do comportamento de
ativos na Bovespa
Franco Peluti Alencar
Guilherme de Moraes Ávila
Monograa apresentada como requisito parcial
para conclusão do Curso de Computação Licenciatura
Prof. Dr. Jan Mendonça Corrêa (Orientador)
CIC/UnB
Prof. Me. João José Costa Gondim
Prof. Me. Pedro Antônio Dourado de Rezende
CIC/UnB
CIC/UnB
Prof. Dr. Homero Luiz Piccolo
Coordenador do Curso de Computação Licenciatura
Brasília, 08 de Julho de 2011
Agradecimentos
Guilherme: Agradeço aos meus irmãos, pelo apoio e companheirismo. Ao meu
pai, por ser meu norte sempre que tenho alguma escolha difícil à fazer. À minha
mãe, pelo carinho, atenção e suporte sempre que eu mais preciso. À Rayanne, por
ser meu porto seguro. Aos professores e colegas, por estarem sempre dispostos a
compartilhar seu conhecimento e ajudar.
Franco: Agradeço primeiramente a Deus, que torna tudo possível em nossas
vidas. Aos meus pais, os quais eu amo muito, que são sem dúvida os responsáveis
por eu ter conseguido vencer todos os desaos tanto do curso de computação
quanto os demais que já enfrentei para chegar até aqui. À minha irmã que sempre
me dá bons conselhos nos momentos em que mais precisei. Também agradeço ao
meu irmão, que me faz lembrar que devemos sempre manter viva dentro de nós,
a criança que um dia já fomos. Aos professores e colegas da UnB que cada um
a sua maneira contribuiu para a minha trajetória e formação neste curso. E por
último gostaria de agradecer especialmente à minha noiva, Cínthia, por ter sido
tão compreensiva comigo nesse período de dedicação a esse trabalho.
Resumo
Prever o comportamento de ações em uma Bolsa de Valores ainda hoje é um
desao.
Já foram elaboradas muitas pesquisas abordando esse tema, mas com
o surgimento da Internet e suas diversas mídias, foi aberto um vasto caminho a
ser explorado e analisado para obter informações que possam trazer resultados
melhores na previsão.
Neste trabalho iremos extrair dados de Blogs e Fóruns
de discussão que tragam alguma informação sobre empresas que tem suas ações
negociadas na Bovespa e iremos utilizar técnicas de mineração de dados para
coletar, processar e procurar padrões que possam trazer algum conhecimento.
Palavras-chave:
Bovespa, Weka, Mineração de dados, Mineração Web, Mídias
Sociais, Mercado de Ações, Blogs, Google, Fóruns
Abstract
Predicting the behavior of shares in a stock market is still a challenge.
Many
researches have been developed approaching this subject, but with the advent of
the Internet and its diverse medias, a wide path was open to be explored and
analyzed in order to obtain information that might bring some better results in
the forecast. In this work we will extract data from blogs and discussion forums
that bring some information about companies that have their shares traded on
the Bovespa and after that, use data mining techniques to collect, process and
look for patterns that brings knowledge.
Keywords:
Bovespa, Weka, Data Mining, Web Mining, Social Media, Stock
Market, Blogs, Google, Forums
Sumário
Lista de Figuras
9
Lista de Tabelas
11
Capítulo 1 Introdução
12
1.1
Contextualização
. . . . . . . . . . . . . . . . . . . . . . . . . . .
12
1.2
Objetivos Gerais
. . . . . . . . . . . . . . . . . . . . . . . . . . .
13
1.3
Objetivos Especícos . . . . . . . . . . . . . . . . . . . . . . . . .
13
Capítulo 2 Revisão Teórica
15
2.1
O comportamento do mercado de ações . . . . . . . . . . . . . . .
15
2.2
Usar web para previsão das ações
. . . . . . . . . . . . . . . . . .
16
2.3
Bovespa - Mercado de ações
. . . . . . . . . . . . . . . . . . . . .
18
2.4
O Google
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
2.5
Fóruns de Discussão na Internet . . . . . . . . . . . . . . . . . . .
22
2.6
O HTTrack
23
2.7
Mineração de Dados
2.8
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
24
. . . . . . . . . . . . . . . . . . . . . . . . . . .
26
2.7.1
Outliers
2.7.2
Discretização
. . . . . . . . . . . . . . . . . . . . . . . . .
27
2.7.3
Clusterização
. . . . . . . . . . . . . . . . . . . . . . . . .
28
Weka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
Capítulo 3 Implementação
30
3.1
Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
3.2
Baixando os dados do Google
. . . . . . . . . . . . . . . . . . . .
31
3.3
Baixando dados dos fóruns . . . . . . . . . . . . . . . . . . . . . .
33
3.4
Gerando o arquivo com ocorrências das expressões . . . . . . . . .
35
3.5
Concatenando o arquivo de ocorrências de expressões com o dos
3.6
dados das ações . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
Crescimento da Internet e normalização dos dados . . . . . . . . .
40
3.7
Minerando os dados . . . . . . . . . . . . . . . . . . . . . . . . . .
41
3.7.1
Limpeza . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
3.7.2
Discretização
. . . . . . . . . . . . . . . . . . . . . . . . .
44
3.7.3
Classicação . . . . . . . . . . . . . . . . . . . . . . . . . .
46
Capítulo 4 Análise dos dados
4.1
Análise - Blogs
4.2
Análise - Fóruns
4.3
Clusters
48
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
. . . . . . . . . . . . . . . . . . . . . . . . . . .
54
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
Capítulo 5 Conclusão e trabalhos futuros
63
Referências
65
8
Lista de Figuras
2.1
Leiaute página Google(Dezembro/2010)[12].
. . . . . . . . . . . .
2.2
Leiaute do Fórum ADFVN(Dezembro/2010)[2].
2.3
Leiaute do Fórum Infomoney(Dezembro/2010)[17].
2.4
Etapas da Mineração de dados, imagem adaptade de Cabena[6].
3.1
Arquivo CSV(Dezembro/2010).
. . . . . . . . . .
. . . . . . . .
21
23
24
.
26
. . . . . . . . . . . . . . . . . . .
36
3.2
Cotações BOVESPA(Dezembro/2010) . . . . . . . . . . . . . . . .
37
3.3
Ocorrências das expressões(Dezembro/2010)
38
3.4
Arquivo com os dados Concatenados(Dezembro/2010).
3.5
Exemplo de um gráco contendo um Outlier (Julho/2011).
3.6
O mesmo graco da gura 3.5 após a limpeza de Outliers (Julho/2011). 43
3.7
Exemplo de dados ainda não discretizados(Julho/2011). . . . . . .
44
3.8
Resultado da discretização dos dados da gura 3.7.(Julho/2011). .
45
3.9
Exemplo de classicação por árvore.(Julho/2011). . . . . . . . . .
46
. . . . . . . . . . . .
3.10 Exemplo de classicação por regras.(Julho/2011).
4.1
. . . . . .
. . . .
. . . . . . . . .
49
. . . . . . . . . . . . . . . . . . . .
50
Variação das ações Vale do Rio Doce analisada por regras de decisão.(Julho/2011).
4.4
47
Variação da Cotação das ações Banco do Brasil analisada por regras de decisão.(Julho/2011).
4.3
42
Variação da Cotação das ações Ambev analisada por regras de
decisão.(Julho/2011). . . . . . . . . . . . . . . . . . . . . . . . . .
4.2
38
. . . . . . . . . . . . . . . . . . . . . . . . . .
51
Distribuição de dados: Variação da Cotação da ação vs Ocorrência
da expressão .*romp.*(Julho/2011). . . . . . . . . . . . . . . . .
52
4.5
Classicação JRip.(Julho/2011). . . . . . . . . . . . . . . . . . . .
53
4.6
Variação da Cotação das ações Ambev analisada por regras conjuntivas.(Julho/2011).
4.7
. . . . . . . . . . . . . . . . . . . . . . . .
54
Variação da Cotação das ações Banco do Brasil analisada por regras conjuntivas .(Julho/2011).
. . . . . . . . . . . . . . . . . . .
55
4.8
Variação da Cotação das ações Embraer analisada e classicada
por árvore.(Julho/2011).
4.9
. . . . . . . . . . . . . . . . . . . . . . .
56
Distribuição de dados: Variação Cotação da ação vs Ocorrência da
palavra caiu .(Julho/2011). . . . . . . . . . . . . . . . . . . . . .
57
4.10 Distribuição de dados: Variação da Cotação da ação vs Ocorrência
da palavra boa.(Julho/2011). . . . . . . . . . . . . . . . . . . . .
58
4.11 Clusterização - Todas as variações de cotação.(Julho/2011). . . . .
60
4.12 Clusterização - Variação de cotação em 4 faixas.(Julho/2011).
62
10
. .
Lista de Tabelas
Capítulo 1
Introdução
1.1 Contextualização
Com o advento do Computação, vários processos relacionados ao mercado de ações
foram informatizados.
Importantes técnicas surgiram, envolvendo por exemplo
a utilização de redes neurais, como estudos de Hean-lee Poh, Jingtao Yao e Teo
Jasic [22] entre muitas outras técnicas.
Essas análises partem basicamente de
eventos passados, para poder predizer o futuro.
De acordo com Benjamin Graham [13] Tentar prever o movimento do mercado
de ações é a tentativa de determinar o valor futuro das ações de uma empresa ou
outro instrumento nanceiro negociado em uma bolsa de valores como também
o nível de interesse de uma determinada ação.
Esse estudo da movimentação
nanceira em bolsas tem sido foco desde que foi notado o potencial de gerar
lucros signicativos com investimentos inteligentes.
A partir da necessidade de análise de informações públicas para avaliar decisões de negociação de ações em Bolsas de Valores, e vendo a franca expansão
das redes sociais e de comunicação, ca clara a utilidade de testar uma maneira
eciente de coletar dados dessas redes e buscar informações relevantes para as
utuações do mercado nanceiro.
Várias análises foram feitas usando dados[30] [22] que inclusive retratam a expectativa do investidor. No entanto existem poucos estudos realizados utilizando
a língua portuguesa como base para análise. Assim, ao minerarmos informações
em ambientes Web poderemos averiguar a expectativa geral das pessoas que escreveram em algum blog ou enviaram alguma mensagem em um fórum e avaliar
o impacto dessa expectativa diretamente no registro de preço de ações na Bolsa
de Valores no Brasil.
As diculdades na análise dessas informações serão diversas; a coleta de dados
12
é extensa e deve ser criteriosamente realizada procurando evitar coletar dados que
não tenham utilidade. Também deverá ser realizada uma pre-seleção de termos a
serem buscados para compor os critérios de pesquisa para composição de base de
dados. Os dados devem ser tratados para um padrão que o programa minerador
aceite analisar.
E na etapa nal deverá ser realizada múltiplas tentativas de
extração de padrões para que seja encontrado alguma informação relevante dentre
os dados coletados.
1.2 Objetivos Gerais
Extrair dados em diversas fontes como BLOG's e Fóruns que tragam algum tipo
de opinião a respeito de ativos nanceiros em bolsas de valores, e buscar a inuência dessas informações encontradas em preços de ativos na Bovespa.
1.3 Objetivos Especícos
Como objetivos especícos temos, a coleta dos dados, processar os dados, a extração dos padrões de cada uma das coletas, e pós-processamento, seguindo assim
as fases da Mineração de Dados [6]:
•
A coleta de dados terá inicio com a própria Bovespa, que já possui os dados
organizados de todos os pregões anteriores, e será observado o período de
2008 a 2009.
Essa base será utilizada como parâmetro para comparação
dos demais dados coletados. A base de dados da qual pretendemos extrair
alguma informação será composta por publicações em Blogs e Mensagens
em Fóruns que tratam o tema Mercado Financeiro, mais especicamente
a BOVESPA. O desao da Coleta reside em efetuar uma busca eciente e
abrangente de fontes de dados, o que é uma tarefa que exige um esforço
considerável.
•
Processar os dados, será uma das mais trabalhosas, visto a heterogeneidade das fontes, que estão em HTML. Será necessário transformar cada
item coletado em um padrão analisável pelo minerador, que no caso será o
.CSV(separado por vírgula) devido a sua ampla aceitação por vários mineradores.
•
Extrair os padrões, consiste em descobrir informações úteis objetivando
resolver o problema em questão. Serão escolhidos e executados algoritmos
13
para extração de conhecimento. Após a escolha, conguração e execução,
as informações serão disponibilizados para análise na etapa seguinte.
•
Efetuar o pós-processamento, com uma grande quantidade de informações
gerada pela etapa anterior; o objetivo dessa etapa é denir quais são os
padrões relevantes ou interessantes para o problema levantado. No caso de
não encontrar padrões interessantes serão feitos ajustes na etapa anterior e
repetido o ciclo de extração de padrões/pós-processamento.
14
Capítulo 2
Revisão Teórica
2.1 O comportamento do mercado de ações
Monitorar e prever o comportamento do mercado de ações ainda é um desao,
mas existem diversas vertentes de estudo, como a da Hipótese do Mercado Eciente(HME) [10], onde Fama descreve que os preços reetem toda a informação
contida no registro de preços no passado, e posteriormente incluiu nesse quesito
também o histórico de distribuição de dividendos e lucro das ações.
Estipulou
também que os preços não só reetem os registros de preços passados mas também informações públicas, e também reete todos os tipos de informações que
podem ser obtidas, como informações privilegiadas.
O estudo do comportamento das ações por meio de análise de informação
pública no período do surgimento da HME em geral era feito de forma manual, hoje com as possibilidades de automação desse processo, podemos fazer uma
análise mais precisa do real impacto dessas informações em relação ao registro de
preços de cada ativo dentro da Bolsa de Valores. Nesse Trabalho serão apenas
descobertos padrões sobre os dados. Não será feita nenhuma análise ou previsão
baseada em teorias econômicas. O objetivo dessa análise não é de apenas entender
o funcionamento para obter vantagem dentro do mercado, mas tentar compreender o comportamento do registro de preços, evitar distorções no mercado onde
muitas pessoas podem sair prejudicadas, assim evitando grandes prejuízos ou até
mesmo crises.
Às vezes, o mercado parece reagir irracionalmente a notícia econômica ou
nanceira, mesmo que a notícia possa ter nenhum efeito real sobre o valor fundamental de garantias[27]. Mas isto pode ser mais aparente do que real, pois muitas
vezes tais notícias foram antecipadas e uma contra-reação pode ocorrer se a notícia é melhor (ou pior) do que o esperado.
15
Portanto, o mercado de ações pode
ser inuenciado em ambas as direções pela imprensa, os boatos, euforia e pânico
em massa, mas geralmente apenas brevemente, pois investidores mais experientes
(especialmente os fundos de hedge) agem de forma rápida para aproveitar o mais
leve momento de histeria.
No curto prazo, ações e outros valores mobiliários podem ser estimulados por
uma série de eventos rápidos de um mercado em mutação, tornando o comportamento do mercado de ações difícil de prever. As emoções podem levar os preços
para cima e para baixo, e as razões de compra e venda são geralmente obscuras.
Os behavioristas armam que os investidores comportam-se frequentemente irracionalmente ao tomar decisões de investimento, assim alteram incorretamente,
segundo a HME, os registros de preços, o que provoca ineciências do mercado,
que, por sua vez, são oportunidades para ganhar dinheiro [27]. No entanto, toda
a noção de HME é que essas reações não racionais a informações se cancelam, e
a médio e longo prazo deixam os preços das ações racionalmente determinados.
Entender o funcionamento mercado de ações para exercer regulamentação é
visto como uma das tarefas primordiais para a atividade econômica de um país,
visto que ele impacta principalmente nas maiores empresas do país que empregam
milhões de pessoas, direta e indiretamente.
Assim o funcionamento da Bolsa
de Valores é motivo de extremo controle e regulamentação, dai a existência da
CVM - Comissão de Valores Mobiliários, que cria as Instruções e divulga as Leis
de regulamentação para o mercado de ações e títulos.
A Lei número 6.404 de
15 de dezembro de 1976 por exemplo regulamenta as sociedades por ações, e
nela existem dezenas de documentos ociais, que pautam o funcionamento dessas
sociedades, mas nem sempre houveram todas essas leis, elas surgem a medida que
a compreensão do seu funcionamento cresce.
2.2 Usar web para previsão das ações
Na internet, que é um dos maiores veiculadores de informação de hoje em dia,
existe uma grande quantidade de dados sobre o mercado nanceiro. São notícias,
mensagens em blogs e fóruns especializados em mercado de ações e até atualizações
de status pessoais em redes sociais como o Twitter[33], Facebook[9] e Orkut[25].
Estas informações podem ser utilizadas de várias maneiras na tentativa de correlacionamento com as oscilações que o mercado nanceiro pode sofrer.
Como
este relacionamento, se tiver um bom nível de conabilidade, pode ser bastante
útil para investidores da bolsa de valores, existem diversos trabalhos e artigos
que têm como objetivo gerar boas previsões utilizando a informação disponível
16
na web.
Vivek Sehgal e Charles Song [29] por exemplo, conseguiram mostrar que existe
uma forte relação entre os preços de ações do mercado americano e o sentimento
que os usuários podem expressar em seus mensagens no fórum de nanças do
Yahoo [38]. Eles analisaram o fórum extraindo estes sentimentos e relacionandoos com os valores das ações, conseguindo até 81% de conabilidade na previsão
(em ações da Apple). Outro aspecto relevante neste trabalho é que segundo os
autores, estes sentimentos podem ser utilizados inclusive para predições de preços
de ações em um período bem curto de tempo, um dia.
Já Johan Bollen, Huina Mao e Xiao-Jun Zeng realizaram uma pesquisa sobre
como o humor do Twitter [3] pode prever o aumento ou diminuição do Dow
Jones Industrial Average (DJIA). Eles utilizaram o Google-Prole of Mood States
(GPOMS), que analisa os textos dos tweets do dia e os classica em seis humores
diferentes: Calmo, alerta, seguro, vigoroso, bondoso e feliz. Segundo os resultados
da pesquisa, o único humor que teve uma clara inuência sobre o DJIA foi o
calmo, com uma precisão de 87,6% na direção da oscilação do seu valor tanto
em oscilações positivas quanto negativas.
Na pesquisa de Vatsal Shah, [30] o método é o mais próximo do que usamos
no presente trabalho. Ele utilizou um web crawler para procurar por mensagens
novos em blogs de investidores famosos de Wall Street e notícias recentes em geral
na internet e utilizou um algoritmo que procura por padrões como o preço das
ações vai cair ou lucros aumentam, que pertencem à Bag-Of-Words (BolsaDe-Palavras).
Essa bolsa contém vários termos classicados como termos de
predição positiva ou termos de predição negativa.
Até aqui o trabalho dele se
assemelha bastante ao caso atual, mas a forma com que são usadas as informações
de que termos ocorrem em cada notícia ou mensagem são diferentes.
Vatsal
Shah compara a predição com o que de fato aconteceu e se uma determinada
fonte acertou na previsão, ela ganha mais peso em suas próximas previsões.Desta
forma ele procura tentar melhorar a conabilidade das previsões dependendo do
desempenho anterior de cada fonte, mas na conclusão de sua pesquisa ele comenta
que apesar de achar este método promissor, infelizmente ainda não chegou a
avaliar a sua precisão.
Além das pesquisas, trabalhos e artigos, já existem muitos investidores e agências usando programas próprios e/ou comercializado-os como serviço.
Segundo
o New York Times [5], agências novas como Bloomberg, Dow Jones e Thomsom Reuters já adotaram a idéia e oferecem serviços que ajudam seus clientes a
peneirar as notícias automaticamente. Investidores com acesso a bons algoritmos
17
e computadores rápidos podem e usam toda a vantagem que possuem para se
sobressair em relação aos concorrentes.
Estes programas já são inclusive con-
siderados uma ameaça por alguns, como o professor associado da Universidade
Columbia, Paul Tetlock, que criou diversos algoritmos de mineração de notícias
em suas pesquisas.
Suas pesquisas sugerem que os reguladores devem car de
olho nestes investidores de alta velocidade, também que está se trocando notícias
numa frequência muito alta e que isso tem sido motivo de preocupação.
2.3 Bovespa - Mercado de ações
Segundo a própria Bovespa [4] sua origem se deu em 1891 com o surgimento
da Bolsa Livre em decorrência da política do encilhamento durante o governo
Marechal Deodoro da Fonseca.
De lá até o presente a Bolsa passou por diver-
sas transformações, e foi em 1967 que foi consolidada a transformação que lhe
deu o nome de Bovespa - Bolsa de Valores de São Paulo. O mercado de ações,
devido ao grande volume de informações, sempre procura utilizar-se dos meios
mais ecientes de controlar o uxo das negociações e em 1970 a bovespa passou
a realizar as negociações por meio eletrônico, mas apenas em 2009 foi que todas
as operações passaram a ser realizadas somente por meio eletrônico, extinguindo
de uma vez por todas os pregões por viva voz.
O mercado de ações é o meio mais importante de empresas de capital aberto
arrecadarem dinheiro. É por meio da bolsa que empresas de capital aberto tem a
possibilidade e levantar capital adicional para projetos de expansão por meio da
venda de ações da empresa em um mercado aberto. Esse mercado proporciona
liquidez às empresas, e dá aos investidores a capacidade de vender ou negociar a
sua participação de forma livre, rápida, e fácil. A agilidade é uma característica
atraente de investimento em bolsas de valores, em comparação a outros investimentos não tão ágeis como o imobiliário. O investimento não está diretamente
ligado apenas ao valor inicial da ação mas também à rentabilidade proporcionada
pela mesma.
Uma das obrigações de empresas que participam do mercado de
ações é realizar ao menos uma vez por ano uma distribuição de lucros entre os
acionistas, que é proporcional à quantidade de ações detidas por aquele acionista.
A Bovespa assume o papel dentro do Brasil de organizar esse mercado, para que
empresas que querem levantar recursos de origem interna possam oferecer seus
papéis(ações) para negociação, e investidores tenham um mecanismo mais seguro
para realizar as transações de compra e venda.
Para que todas as atividades no mercado de ações sejam explicitas a quem
18
interessar, as bolsas de valores mantém os dados econômicos das negociações
expostos de forma pública. Assim, é divulgado diariamente os seguintes valores
de ação para cada uma das empresas que possuem capital aberto e tem suas
ações negociadas na bolsa: Valor de Abertura, Valor de Fechamento, Maior Valor
de Compra durante o dia, Menor Valor de Compra durante o dia, e variação
em relação ao dia anterior.
Esses dados, além de encontrados no próprio sítio
da Bovespa, podem ser encontrados em inúmeros outros lugares, como portais
de notícias, portais de Bancos, entre outros. Desta forma, obter grande volume
de dados contendo todo o histórico de negociações na Bovespa é extremamente
simples.
2.4 O Google
Este trecho explicará o porquê de utilizar a máquina de busca da Google [12] na
pesquisa, como é o funcionamento desta máquina de busca e quais os parâmetros utilizados para resgatar os dados necessários para o desenvolvimento deste
trabalho.
Com a intenção de obter dados mais gerais, em vista de que os fóruns são
bem especícos e seus participantes são, em maioria, bastante interessados nas
discussões sobre a bolsa de valores, serão feitas pesquisas através da máquina de
busca da Google (a partir daqui referenciada apenas como o Google). Blogs e
sites de notícias em geral não possuem uma estrutura padronizada como a dos
fóruns, então a intenção é utilizar o HTTrack [15] (Será explicado na seção 2.6)
para conseguir o html destes sites e blogs e, depois, com o uso de expressões
regulares, fazer a mineração de dados diretamente no html.
A ferramenta de busca Google foi escolhida pois é a que nos dá os resultados
mais relevantes para cada palavra-chave procurada, possui uma página de resultados quase totalmente livre de propagandas e é a ferramenta de busca mais rápida
em gerar os resultados[14]. É também a mais utilizada mundialmente, detendo
mais de 70% do volume de buscas e mais de 65% da quantidade de visitas entre
as máquinas de busca de acordo com o Hitwise [14], e a que possui os melhores
recursos para a buscas especícas que são necessárias para este trabalho.
Serão utilizadas as buscas por resultados especícos da ferramenta para conseguir mensagens de blogs (Blogs ) e as notícias (News ), pois a busca mais comumente utilizada, a Web Search, que procura em toda a internet pública, seria
redundante ao trazer resultados de blogs, sites de notícias e fóruns, além de trazer
informações menos relevantes ao âmbito da pesquisa proposta.
19
Existe a possi-
bilidade de procurar por resultados especícos de discussões (Discussions ), que
são em maioria fóruns, mas como esta parte é mais bem coberta pela seleção
dos fóruns especícos que foram escolhidos para a pesquisa, seria redundante e
contra-produtivo utilizar este método de procura.
Para realizar as buscas, primeiro se dene os elementos a serem buscados,
depois se descobre os comandos a serem dados para a ferramenta. No caso desta
pesquisa, é importante saber de quando é o resultado para cruzar estes com os
dados da bolsa. A consulta de busca denida por data é facilmente criada através
da Pesquisa avançada presente na ferramenta, mas o ideal é saber como criar
uma consulta com esta denição sem este auxílio, para facilitar uma automação
na aquisição dos dados. Além deste, existem diversos parâmetros que se mostram
bastante úteis na busca pelas informações desejadas.
Ao fazer uma busca pelo Google, os parâmetros da procura são passados
através da URL. Uma busca simples por bovespa através do campo de busca
do Google resulta na seguinte URL:
http://www.google.com/search?hl=pt-br&q=
bovespa&aq=f&aqi=&aql=&oq=&gs_rfai=
Pode-se perceber uma série de parâmetros, alguns que nem chegam a ser
utilizados apesar de estarem presentes no corpo da URL. Estes são apenas alguns
dos possíveis parâmetros de uma busca pelo Google. Os signicados de cada um
dos campos da URL de acesso ao google não são disponibilizados. Os signicados
deles foram descobertos por tentativa e erro e estes mudam com grande frequência.
Abaixo estão descritos os signicados correntes na época da aquisição dos dados:
•
q: A consulta de busca principal. Este parâmetro é o texto da busca, que
no caso deste trabalho é utilizado de forma básica, procurando apenas um
termo de cada vez.
•
tbs: Dene a tab utilizada na busca, no caso desta pesquisa são utilizados
os seguintes valores: blg:1 para buscar por mensagens de blogs e nws:1
para buscar por notícias.
•
num: Número de resultados por página. Será usado 100 como valor para
este parâmetro, pois isso minimiza o número de requests necessários para
obter todos os resultados de uma busca. 100 é o valor máximo para este
parâmetro.
•
as_mind: Dia a partir do qual se deseja resultados.
20
•
as_minm: Mês a partir do qual se deseja resultados.
•
as_miny: Ano a partir do qual se deseja resultados.
•
as_maxd: Dia até o qual se deseja resultados
•
as_maxm: Mês até o qual se deseja resultados.
•
as_maxy: Ano até o qual se deseja resultados.
•
lr: Dene a busca para sites na língua descrita por este parâmetro. Como
a pesquisa abrange apenas o Brasil, o valor do lr será pt-br para todas
as buscas.
O resultado de uma busca no Google gera uma página com o leiaute da gura
2.1:
Figura 2.1: Leiaute página Google(Dezembro/2010)[12].
Como os ltros podem ser denidos através dos parâmetros da URL mencionados, e isto é essencial para a automatização das buscas, não será necessário
utilizar os campos de ltros. O que realmente é necessário para a pesquisa são
os resultados, denidos pelos retângulos vermelhos, mais especicamente as linha
21
azuis dentro de cada resultado, que possuem os links para as páginas procuradas.
São estes links que o HTTrack segue para salvar o conteúdo html das páginas.
Para fazer as buscas automatizadas, foi utilizado um programa implementado
com Java, pois é uma linguagem com uma especicação simples e possui vários
exemplos por toda a internet devido à sua popularidade [1], além de possuir
desalocação automática de memória, que ajuda a salvar tempo e evita possíveis
problemas de vazamento de memória.
A IDE escolhida para o desenvolvimento foi a Eclipse [11] (versão mais atual
- Helios), por ser livre e de código aberto, ter assistência rápida integrada ao
conteúdo e fácil acesso a documentação, o que se deve à quantidade de desenvolvedores que a usam.
O programa desenvolvido monta as URLs de busca do Google denindo os
parâmetros desejados e depois executa o HTTrack por linha de comando para fazer
o download das páginas. Alguns dos parâmetros utilizado são estáticos, como o
lr e o num, outros mudam de forma simples, como o q, que tem seus valores
denidos antes do programa começar, e o tbs que só possui dois valores possíveis
no âmbito da pesquisa. Já os parâmetros de data são mais complicados, pois é
necessário seguir os dias do calendário para não gerar nenhuma inconsistência nas
buscas e, por consequência, nos resultados da pesquisa.
2.5 Fóruns de Discussão na Internet
Os fóruns de discussão na internet, tem como origem os antigos quadros de aviso
que tinha como objetivo ser um ponto de referência para mensagens públicas [20].
Com a evolução técnica esses fóruns ganharam um dimensão muito maior do que
os quadros de avisos, pois eles podem não só divulgar as mensagens, mas também
organizar o conteúdo. Com o aumento de informações disponibilizada na internet,
e com a facilidade do uso do framework para desenvolvimento de páginas para
hospedar fóruns de discussão, fez com que essa ferramenta seja uma das mais
utilizadas. Fóruns são amplamente utilizados na internet para os mais diversos
assuntos. Como exemplo temos o uso de plataformas de ensino como o Moodle
para discussão de atividades, tirar dúvidas, enviar notícias, ou para organizar
comunidades. No desenvolvimento de software os fóruns são bastante utilizados
para tirar dúvidas e propagar idéias.
Iremos nos utilizar dos fóruns voltados ao mercado de ações, que são bastante utilizados para a discussão de notícias, fatos relevantes, divulgar análises
técnicas e comentá-las, tirar dúvidas sobre a parte técnica do mercado e também
22
onde muitos usuários expõem suas opiniões a respeito de determinados ativos
disponíveis na bolsa de valores para negociação. A mineração de dados em fóruns
foi escolhida devido ao grande volume de informações contidas em um único ambiente, onde é possível vericar nas mensagens: data de envio, usuário que enviou,
e no nosso caso, determinar se é uma análise técnica de acordo com a categoria
onde a mensagem foi classicada internamente ao fórum. A Escolha se limitou a
apenas dois fóruns, o ADVFN [2] e o Infomoney [17], devido a grande quantidade
de mensagens encontradas em cada um deles, e também ao período em que iremos
avaliar, pois muitos fóruns não possuem um histórico armazenado superior a um
ano. Além de tudo, os fóruns possuem leiautes simples apesar de não serem tão
similares conforme as guras 2.2 e 2.3.
Figura 2.2: Leiaute do Fórum ADFVN(Dezembro/2010)[2].
2.6 O HTTrack
O HTTrack [15] é uma ferramenta livre e de código aberto que serve para fazer
download de qualquer conteúdo online. É bem fácil de utilizar e permite diversas
congurações para descarregar apenas daquilo que se deseja obter.
É bastante
utilizado para permitir navegação oine de sites, mas no caso dessa pesquisa foi
23
Figura 2.3: Leiaute do Fórum Infomoney(Dezembro/2010)[17].
utilizado para facilitar a análise de mensagens em fóruns, blogs e sites de notícias,
uma vez que essa análise é bem mais fácil e rápida em pastas e arquivos locais.
Existe uma interface bastante intuitiva para o programa e suas opções são
bem documentadas, desde as simples até as mais complexas.
Para o download
dos fóruns foi utilizada esta interface, pois a quantidade de URLs necessárias é
bem pequena neste caso. No entanto para realizar buscas no Google é necessário
utilizar mais de uma URL para cada período procurado e neste trabalho são
utilizadas janelas de sete dias durante dois anos.
Seriam muitas URLs para
serem geradas à mão, mais que o suciente para se tornar bem vantajoso gerar
uma automatização para isso. Como o HTTrack permite execução por linha de
comando, a automatização que gera as URLs integra as chamadas ao programa,
reduzindo bastante o trabalho que doutra forma seria necessário.
2.7 Mineração de Dados
Hoje em dia o acesso a informações está cada vez mais fácil, principalmente com
o crescente desenvolvimento da internet e de soluções computadorizadas. Toda
24
essa informação, não é fácil de ser analisada, já que a grande quantidade de dados
brutos não é de simples entendimento ao ser humano e pode não signicar nada
à primeira vista. Por exemplo, olhar para os dados de um grande banco de dados
que tenha uma relação de compras feitas por toda a população de uma cidade em
um supermercado provavelmente não ajudará o dono daquele estabelecimento a
melhorar suas vendas, ou no mínimo, não ajudará tanto quanto poderia se fosse
feita uma análise mais minuciosa. [26]
A mineração de dados é uma forma de facilitar esta análise e ajudar a identicar tendências que de outra forma passariam sem ser percebidas pelos olhos
dos interessados. Uma denição bem completa e bastante fácil de entender é a
da tese de doutorado de Côrtes [7], segundo ele:
Mineração de dados é dada em um processo altamente cooperativo entre
homens e máquinas, que visa a exploração de grandes bancos de dados, com o
objetivo de extrair conhecimentos através do reconhecimento de padrões e relacionamento entre variáveis, conhecimentos esses que possam ser obtidos por técnicas comprovadamente conáveis e validados pela sua expressividade estatística.
Ainda de acordo com ele, é interessante destacar que um conceito bastante difundido e errado sobre a mineração de dados é o que a dene como um sistema que
pode minerar todos os conceitos importantes de um grande banco de dados automaticamente sem a intervenção e/ou direcionamento humano. A intervenção humana é extremamente importante e sem ela os algoritmos teriam de ser genéricos
demais, fazendo com que a eciência casse bastante comprometida. A gura 2.4
ilustra as etapas envolvidas no processo de mineração de dados segundo Cabena
[6]:
A primeira etapa diz respeito à denição do problema e dos objetivos da mineração de dados, a segunda é referente à aquisição dos dados iniciais, brutos, que
serão alvo do processo de mineração de dados.
A terceira etapa é a que toma
mais tempo na mineração, a preparação dos dados, que se divide em reformatar
as informações para que possam ser mineradas e visualizá-las, se possível. Nessa
etapa segundo Cabena[6] a intervenção humana é imprescindível, pois é necessário
observar que tipos de padrão serão procurados, o que dependerá bastante do objetivo que deve ser alcançado com a mineração. De acordo com Cabena [6], a etapa
de preparação dos dados chega a representar 60% do esforço total da mineração.
A última etapa, cujo sucesso dependerá bastante de como foram preparados os
dados, é a que gera as informações de fácil entendimento, prontas para serem
interpretadas e exploradas. A mineração de dados e suas etapas são na verdade
uma parte de um processo maior e mais completo chamado de Knowledge Discov-
25
Figura 2.4: Etapas da Mineração de dados, imagem adaptade de Cabena[6].
ery in Databases, ou KDD. Embora compreenda uma estrutura maior e seja mais
antigo, como a mineração dos dados é sua parte mais importante e conhecida, na
prática o termo KDD está cada vez mais sendo substituído por mineração de
dados. Na wikipédia em inglês é possível perceber a transição, já que quando
se procura por Knowledge Discovery in Databases, a enciclopédia automaticamente redireciona o usuário para o artigo Data Mining [8].
Para a pesquisa
atual, buscar informações úteis dentro de milhares de mensagens e notícias para
organizar e comparar com o comportamento de ações seria inviável sem o auxílio
de alguma técnica para analisar ecientemente estes dados. A mineração de dados se mostrou a melhor abordagem para o contexto deste trabalho e por isso foi
escolhida como metodologia de auxílio para esta análise.
2.7.1
Outliers
Segundo Williams[36] e Liu [23], um dos passos para se obter uma análise coerente é detectar dados que destoem do restante da massa de dados, conhecidos
como Outliers.
Esses dados quando encontrados são fortes candidatos a serem
aberrações na base de dados e que podem levar a resultados incorretos caso seja
26
feita uma análise. Por isso é tão importante eliminar os Outliers antes de realizar
qualquer análise ou modelagem tomando como base um conjunto de dados. Conforme as etapas descritas na gura 2.4 a eliminação de Outliers está contida na
terceira etapa na atividade de limpeza dos dados.
De acordo com Witten e Frank[37](em tradução livre do inglês):
nada melhor do que conhecer os seus dados.
Não há
Para identicar Outliers existem
ferramentas que mostram histogramas de valores nominais, ou grácos de valores
numéricos que facilitam a identicação dos outliers, que podem representar erros
no arquivo de dados.
Um bom exemplo de dados que podem ser considerados
Outliers são as conversões automáticas para dados faltantes como, informar 9999
em um ano que não é encontrado, ou -1kg num peso que não foi informado. Como
já foi citado, a limpeza dos dados pode consumir muito tempo e é absolutamente
necessária para que a mineração de dados seja bem sucedida em seu propósito.
2.7.2
Discretização
Discretizar é o processo de transformar um valor contínuo de atributos em um
número nito de intervalos e associar cada intervalo a um valor numérico e
discreto[24].
Para abordar tarefas de aprendizagem nos processo de mineração
que utilizem base de dados misturadas, discreta e contínua, é necessário realizar
a discretização antes do processo de aprendizado.
Ainda segundo Witten e Frank[37], alguns algoritmos de classicação e clusterização só são capazes de lidar com dados nominais. Na análise que será realizada, a maioria dos atributos selecionados são compostos por números.
Nesse
caso, para que possamos realizar a análise por meio desses e de outros algoritmos
precisaremos realizar um processo de discretização nos valores dos atributos.
Existem duas maneiras de se tratar a discretização, a supervisionada ou a
não supervisionada. A supervisionada leva em conta as classes dos atributos na
hora de discretizar, já a não supervisionada quantica os atributos na ausência
de classes para os mesmos. A discretização não supervisionada é a única maneira
para tratar o agrupamento de dados quando não se tem nenhuma informação
sobre a classe ou elas simplesmente não existem[24][37].
Uma das maneiras mais simples de discretizar é dividir o intervalo em porções
idênticas e classicar cada atributo dentro dessas porções.
Mas dessa maneira
existe a possibilidade de destruir algumas distinções que existem nos atributos,
especialmente devido a sua distribuição.Uma outra maneira de tratar a discretização é a divisão em intervalos de frequência igual, onde os grupos de dados são
delimitados pela frequência com que os atributos ocorrem em cada grupo, fazendo
27
com que os grupos de dados tenham o mesmo número de ocorrências para cada
faixa estabelecida.[24][37].
2.7.3
Clusterização
Clusterização é a divisão não assistida de atributos em grupos também chamados de Clusters.
A clusterização tem sido utilizada em muitos contextos e em
diferentes áreas de conhecimento, o que reete o apelo de como a clusterização
é útil como uma das etapas de exploração na análise de dados. Os métodos de
clusterização são utilizados na mineração de dados principalmente para segmentar as bases de dados em grupos semelhantes. Essa segmentação pode servir para
comprimir os dados ou identicar características de subpopulações que podem
ser alvos de algum objetivo especíco. Um exemplo seria segmentar públicos de
clientes de uma empresa por meio de sua renda ou endereço e direcionar uma
campanha de marketing a eles [18].
Um modo de utilizar a clusterização é na elaboração de modelos de predição,
usando métodos estatísticos de análise de dados que normalmente envolvem teste
de hipóteses de um modelo proposto.
Em uma modelagem preditiva utiliza-
se a clusterização para agrupar itens e então inferir regras para caracterizar os
grupos sugeridos pelo modelo [31]. Outra utilização de clusters é na visualização
de grandes bases de dados, para auxiliar o olhar humano a identicar grupos e
subgrupos que tem características similares [21].
2.8 Weka
A ferramenta escolhida para aplicação dos algoritmos de mineração de dados foi
o Weka, que é uma coleção de algoritmos de aprendizado de máquina feitos para
executar tarefas de mineração de dados. No site ocial, pode ser encontrada a
versão mais atual[35].
O Weka foi o escolhido por possuir várias características desejáveis para esta
pesquisa. Em primeiro lugar, é um software livre licenciado sob a GNU General
Public Licence (GNU GPL ou apenas GPL). Em segundo, ele pode tanto ser
utilizado através de sua interface gráca, que é intuitiva e fácil de usar, quanto
ser chamado diretamente de dentro de um programa em Java (que inclusive é a
mesma linguagem em que o Weka foi desenvolvido em sua versão atual), além
de poder ser executado em qualquer ambiente com suporte para interpretação
de Java.
Em terceiro lugar, está o fato de que o Weka tem suporte a várias
tarefas diferentes de mineração de dados, como pré-processamento, clustering (ou
28
agrupamento), classicação, regressão, visualização e seleção de atributos. E por
último, mas não menos importante, o Weka é amplamente conhecido e utilizado,
o que tem como consequência gerar a disponibilidade de um grande volume de
material de apoio, tutoriais e dúvidas respondidas em fóruns e blogs do assunto.
29
Capítulo 3
Implementação
3.1 Metodologia
A m de atingir os objetivos especícos propostos neste trabalho, foram organizadas e executadas as seguintes etapas:
1 . Baixar os dados de blogs do Google: Como gerar cada URL parametrizada
do Google manualmente custaria muito tempo e o HTTrack pode ser executado com quaisquer de suas opções via linha de comando, será criado
um programa em Java para gerar as URLs e executar o HTTrack com cada
uma delas.
2 .
Baixar os dados dos fóruns:
O HTTrack tem a capacidade de baixar
todos os dados de um único domínio, tornando desnecessária a criação de um
programa encapsulando sua execução, e os dados dos fóruns foram baixados
através da própria interface gráca do HTTrack. Após a coleta será criado
um programa para separar cada blogs do fórum e deixá-los com a mesma
estrutura dos arquivos de blogs para que nos próximos passos pudessem ser
utilizados os mesmo programas para ambos os grupos de dados.
3 . Gerar um arquivo com ocorrências das expressões: Para fazer a análise dos
dados com o Weka, é necessário que os dados estejam em um formato aceito
pelo programa.
Implementaremos um programa em Java para procurar
1
pelas expressões que haviamos selecionado
e gerar um CSV onde cada
linha corresponde a um blogs de blog /fórum e as colunas correspondem à
ocorrência das expressões, codicada 0 para quando não há ocorrências e
1 As
blogs
expressões foram selecionadas a partir da experiência obtida na leitura de amostras de
e posts em fóruns. Onde foram selecionadas as mais frequentes.
30
1 caso contrário, além de algumas outras informações, como o nome da
empresa referenciada no blogs a data em que a mensagem foi postada.
4 . Concatenação dos arquivos de ocorrência de expressões e dados das ações:
Para tentar estabelecer alguma relação entre a ocorrência das expressões
e as oscilações dos ativos da Bovespa através da mineração de dados, será
necessário colocar os dados das ações, obtidos no site do Uol [34], no mesmo
arquivo em que estavam as informações de ocorrência de expressões. Um
programa Java será criado para esta tarefa.
5 . Normalização dos dados em relação ao crescimento da internet: O crescimento da internet do período em que foram recolhidos os dados teve de
ser considerado, pois um aumento na ocorrência de expressões decorrente
desse crescimento poderia ser interpretado de forma errada. A quantidade
de ocorrência será normalizada de acordo com os dados de crescimento da
internet publicados pelo IBGE [16] com a ajuda de um programa de edição
de planilhas.
6 . Mineração dos dados: Concluídas as etapas anteriores, os dados caram
prontos para a mineração. Será feita toda a limpeza e pré-processamento
dos dados e em seguida serão aplicados vários algoritmos de mineração para
gerar informações que puderam ser analisadas à procura de relações entre
os dados da ocorrência de expressões e os dados da bolsa de valores.
3.2 Baixando os dados do Google
Para fazer a captura dos dados do Google, foi escrito um programa em Java
que cria as URLs de busca do Google com a forma necessária para recuperar,
através do uso do HTTrack, os mensagens de blogs de cada dia dos anos de 2008
e 2009 e que possuem em seu conteúdo as palavras: "vale do rio doce", "ambev",
"embraer", "banco do brasil"ou "bovespa". A URL do Google na forma desejada
e depois de excluídos os parâmetros desnecessários tem a seguinte estrutura na
epoca da pesquisa(Dez/2010):
http://www.google.com/search?hl=pt-BR&lr=lang_pt&tbs=blg:1,cdr:1,cd_min:
xx/xx/xxxx,cd_max:xx/xx/xxxx,lr:lang_pt&start=100&num=100&q=%22palavra%22
Onde o parâmetro cd_min corresponde à data a partir da qual o Google fornecerá
os resultados, cd_max corresponde à data até a qual o Google fornecerá os resultados e %22 é o código usado na URL que representa aspas duplas, para
31
que o Google faça as procuras de palavras compostas sem considerar seus termos separados (ex: não mostrar resultados de brasil ao procurarmos por banco
do brasil). Para gerar as URLs, o programa implementado por nós itera sobre
os dias do intervalo escolhido, substituindo o valores dos parâmetros cd_min
e cd_max por cada dia do intervalo.
Como escolhemos resgatar os dados de
cada dia, o valor destes dois parâmetros é sempre igual, pegando resultados de
um único dia.
Em cada iteração, é necessário também utilizar cada uma das
palavras para recuperar todas as informações desejadas, o que completa a parte
de gerar as URLs das buscas, pois os outros parâmetros são constantes.
Para
baixar os dados, a cada URL gerada é lançada uma instância do HTTrack via
linha de comando dentro do próprio programa em Java. O comando para executar o HTTrack tem a seguinte estrutura: httrack url -O pasta\palavra\data
-*google.com* -*youtube.com* -v -r2 -F Mozilla/5.0 (Windows; U; Windows
NT 5.0; en-US; rv:1.1) Gecko/20020826 -e -m0 -I0 -C0 -N101 -%P0 Onde url
é a URL de onde o HTTrack baixará os dados, palavra é a palavra utilizada na
busca do Google e data é a data utilizada para aquela busca. Abaixo pode-se
ver uma lista com as denições do que esta estrutura signica:
•
httrack: É a chamada ao programa. Pode ser necessária o caminho completo
até o httrack.exe se não for denido um atalho para executá-lo escrevendo
apenas httrack.
•
-O pasta\palavra\data: -O seguido de um caminho é o parâmetro que dene onde serão salvos os arquivos baixados pelo HTTrack naquela execução.
Para facilitar o uso posterior dos arquivos foi criado um caminho dinâmico
que muda a cada execução para colocar os arquivos de cada data e cada
palavra em uma pasta diferente.
•
-*google.com* e -*youtube.com*: Estes parâmetros da forma - seguido
de uma expressão informam ao HTTrack que ele não deve baixar nada que
contenha a expressão em qualquer lugar de sua URL. No caso destas buscas,
não queremos baixar nada que pertença google.com ou youtube.com,
pois só interessam os resultados em Blogs.
•
-v: Signica verbose. Apresenta o log na tela, que no caso do programa,
é capturado e exibido no console para ajudar na detecção de qualquer tipo
de problema que venha a ocorrer durante a execução.
•
-r2: O parâmetro -rN dene que a profundidade máxima do que vai ser
copiado é de N. No caso é usado 2 porque é preciso que o HTTrack baixe
32
a página denida pela URL (profundidade 1) e entre nos sites que estão a
um click de distância desta página (profundidade 2).
•
-F Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826:
-F seguido de uma string é um parâmetro que dene qual a browser ID
(identidade do navegador) utilizada pelo HTTrack ao acessar as páginas
para fazer download.
•
-e: Este parâmetro deixa o HTTrack livre para entrar em qualquer site da
internet. Como os sites de blogs estão espalhados por toda a internet, é de
suma importância a utilização deste.
•
-m0: O parâmetro -mN dene que o tamanho do maior arquivo não-HTML
baixado pelo HTTrack nesta sessão é de N Bytes. Como só é necessário o
HTML dos sites para a análise, denir este tamanho como 0 garante que
não será baixado nenhum arquivo desnecessário.
•
-I0: Este parâmetro dene que não deve ser criado um index para as páginas
baixadas. O index seria desnecessário para o trabalho pois a análise é feita
navegando-se pelas pastas dos arquivos automaticamente, caso o trabalho
fosse manual, o index poderia ser de grande utilidade.
•
-C0: Este parâmetro dene que não deve ser criado um cache para atualizações e novas tentativas. No trabalho os dados uma vez baixados não
precisarão ser atualizados.
•
-N101: -N seguido de uma sequência de caracteres especíca dene qual
estrutura local deve ser utilizada para salvar as páginas.
O valor 101
signica que os arquivos de cada site serão salvos numa pasta com o nome
daquele site.
•
-%P0: Este parâmetro dene que não devem ser procurados links dentro
de tags desconhecidas ou Javascript.
A opção de não fazer isso foi para
melhorar a performance, uma vez que a página de resultados do Google não
possui nenhum link escondido desta forma e que seja útil para a pesquisa.
3.3 Baixando dados dos fóruns
Para realizar a captura dos dados dos fóruns também foi utilizado o HTTrack
[15], onde no Fórum Infomoney, foi restringido para que a captura das páginas
do fórum fosse feita apenas restrito ao domínio forum.infomoney.com.br e no
33
Fórum ADVFN, foi necessário criar uma conta gratuita para acesso no fórum
onde o HTTrack ao selecionar a URL, existe a opção de informar o usuário e
a senha, importante observar que a captura de sites com autenticação deve ser
realizada em sistemas operacionais diferentes do Windows Vista, ou Windows 7,
pois essa funcionalidade do HTTrack não funciona nesses sistemas operacionais.
No primeiro fórum para análise foram selecionadas apenas os arquivos HTML
que possuem no nome a expressão viewtopic sinalizando que dentro do arquivo só
existe o conteúdo das mensagens do fórum. No caso do fórum ADVFN, a restrição
se deu no descarregamento dos arquivos pelo HTTrack onde foi restringido que
só baixasse arquivos que contivessem na URL a expressão pid=fbb_thread .
Para efetuar a separação dos posts foi utilizado uma biblioteca para o Java
conhecida como HTML Parser [28].
Em cada um dos fóruns foram utilizados
atributos diferentes mas de acordo com a formatação de cada um, no caso do
Fórum Infomoney foi utilizadas as seguintes tags do CSS que estavam contidas
no HTML:
<span class="postdetails">
<span class="postbody">
Onde postdetails contém a data do envio da mensagem e postbody contém o
texto enviado pelo usuário. Após esse ltro, é feita uma busca em cada um dos
posts procurando a ocorrência das palavras: vale do rio doce,vale3, ambev,
ambv3, embraer,embr3, banco do brasil,bbsa3,bbas3,ibov, bovespa.
Após isso somente os posts que contém essas palavras são armazenados em um
arquivo texto, e salvos numa estrutura de pasta idêntica a utilizada na baixa dos
dados do e é feito com Blogs.
Para o Fórum ADVFN, as tags utilizadas para
localizar as mensagens foram as seguintes:
<table id="thread">
<span id="created">
<span id="IntelliTXT">
Onde tread é a tabela que contém todos os dados created informa a data
de criação da mensagem no fórum e IntelliTXT contém o texto da mensagem.
Após selecionadas as tags é realizada uma busca e armazenamento idênticos ao
feito com o Fórum anterior para que na próxima etapa de captura das informações
seja feita de forma homogênea, seja com blogs ou fóruns.
34
3.4 Gerando o arquivo com ocorrências das expressões
Após baixar todas as páginas dos blogs, foi criado um programa para transformar
todo o html de cada página em texto e procurar por expressões regulares dentro
delas. Expressões regulares, de acordo com Aurélio Marinho Jargas[19]:
``Uma composição de símbolos, caracteres com funções especiais, que,
agrupados entre si e com caracteres literais, formam uma seqüência,
uma expressão. Essa expressão é interpretada como uma regra, que
indicará sucesso se uma entrada de dados qualquer casar com essa
regra, ou seja, obedecer exatamente a todas as suas condições.''
Foram utilizadas, em maioria, radicais como despenc ao invés de cada conjugação do verbo despencar, minimizando o número de expressões utilizadas.
Além disso, foram utilizadas expressões regulares para restringir a ocorrência de
palavras não desejadas. Radicais como despenc não ocorrem em muitas palavras
além das desejadas, mas um radical como cai pode ser encontrado em várias
palavras irrelevantes para o trabalho, como caiaque, cais, Caio , etc. Uma
expressão regular como cai[r,n,u] irá coletar ocorrências de cai, mas somente
se seguida de r(ex:cair) , n(ex:caindo) ou u(ex:caiu). Além disso, antes e depois de cada expressão, é colocada a expressão .*, onde o . signica qualquer
caracter e o * signica zero ou mais vezes, para que a expressão regular possa
ser procurada em qualquer lugar do texto.
Foram utilizadas várias expressões, algumas caracterizadas como positivas (estima subida no preço da ação) e outras negativas (estima queda no preço da ação):
•
Positivas: segur, ótim, subi, recuper, melhor, cona, bo[a,m,n], realiz, alta,
compr, romp e favorável
•
Negativas: cai[rnu], despenc, rever[ts], baixa, risco, rui[mn] e vend
O programa gera um arquivo .csv (comma separated values - valores separados
por vírgula) ao nal da execução que possui a seguinte estrutura(gura 3.1): Cada
registro possui os dados de uma mensagem de blog contendo o nome da palavra que
foi usada para buscar aquela mensagem, a data em que foi publicada a mensagem,
o endereço do blog e uma sequência de zeros e uns que indicam se a expressão
correspondente do cabeçalho ocorre (um) ou não (zero) naquela mensagem.
35
Figura 3.1: Arquivo CSV(Dezembro/2010).
3.5 Concatenando o arquivo de ocorrências de expressões com o dos dados das ações
Os dados das ações foram obtidos no site da Uol [34].
Os arquivos (um por
ação), depois de um pequeno tratamento, podem ser salvos em formato .csv com
a seguinte estrutura(gura 3.2):
Em que cada registro representa os dados nanceiros de um dia (descrito pelo
campo Data/Hora) daquela ação. Para facilitar a leitura, os arquivos de cada
ação foram concatenados e foi adicionado um campo extra, chamado de palavra,
para denir a que ação cada linha deste arquivo maior diz respeito. Deixando o
arquivo assim(gura 3.3) :
Com este arquivo pronto e o arquivo das ocorrências de expressões também,
foi feito um programa para ler ambos e gerar um arquivo que possa ser analisado
com o Weka(Figura 3.4).
O programa lê ambos os arquivos e gera um terceiro .csv que possui com uma
série de campos, como mostrado na gura 3.4 (os campos com as expressões foram
ocultos para mostrar os demais campos): O signicado de cada campo é:
•
palavra: A palavra que dene a ação escolhida
•
quantidade:
Dene quantos sites foram achados com a palavra dada no
período denido.
•
dataMinExp: A data de início para a pesquisa no arquivo das ocorrências
•
dataMaxExp: A data de m para a pesquisa no arquivo das ocorrências
36
Figura 3.2: Cotações BOVESPA(Dezembro/2010)
•
expressões: A soma de cada ocorrência de expressões no período delimitado
pelo par de datas dataMinExp e dataMaxExp (os campos das expressões
foram comprimidos para dar visibilidade aos outros campos)
•
dataMinAcoes: A data de início para a pesquisa no arquivo das ações
•
dataMaxAcoes: A data de m para a pesquisa no arquivo das ações
•
CotaçãoAntes: Média aritmética das cotações das ações no período dado
para as expressões
•
CotaçãoDepois: Média aritmética das cotações das ações no período dado
para as ações
•
MínimaAntes:
É o menor valor que a ação assumiu durante o período
denido para as expressões
37
Figura 3.3: Ocorrências das expressões(Dezembro/2010)
Figura 3.4: Arquivo com os dados Concatenados(Dezembro/2010).
•
MáximaAntes:
É o maior valor que a ação assumiu durante o período
denido para as expressões
•
MínimaDepois:
É o menor valor que a ação assumiu durante o período
denido para as ações
38
•
MáximaDepois:
É o maior valor que a ação assumiu durante o período
denido para as ações
•
VariaçãoOcorrências:
É o número, em porcentagem, que corresponde à
variação da quantidade de ocorrências entre o período das ações e o das
expressões
•
VarAntes: Uma composição das variações das cotações das ações no período
dado para as expressões
•
VarDepois: Uma composição das variações das cotações das ações no período
dado para as ações
•
VariaçãoCotação: É a divisão da CotaçãoDepois pela CotaçãoAntes
•
VariaçãoCotação: É a divisão da CotaçãoDepois pela CotaçãoAntes
•
VariaçãoAção: É a divisão da média aritmética entre a MínimaDepois e
a MáximaDepois pela média aritmética entre a MínimaAntes e a MáximaAntes
•
AberturaSegunda: É o valor de abertura da ação na segunda-feira (que é o
valor de fechamento na sexta-feira)
•
TrendAntes:
O valor do Google Trends[12] no período dado para as ex-
pressões. O Google Trends é uma ferramenta que disponibiliza dados normalizados da frequência com que um termo é procurado no Google.
•
TrendDepois: O valor do Google Trends no período dado para as ações
•
TrendMedia: É a média aritmética entre o TrendAntes e o TrendDepois
O programa implementado tem duas versões:
•
A primeira recebe seis parâmetros, uma palavra, um inteiro e dois pares
(início e m) de datas.
A palavra dene de que ação serão retirados os
dados, tanto dos sites quanto das bolsa. O dois pares de datas denem dois
períodos, um correspondente aos dados da bolsa e outro correspondente aos
dados do arquivo de ocorrências.
O inteiro dene um intervalo em dias.
Esta versão recupera os dados das ocorrências no período dado para elas,
somando o número de ocorrências naquele período. Depois são recuperados os dados da bolsa em ambos os períodos para ns de comparação. O
programa itera várias vezes somando o inteiro dado às datas iniciais para
39
gerar novas datas até que sejam recuperados os dados de todos os intervalos
daquele tamanho nos dois anos estudados, colocando o resultado de cada
intervalo em uma linha.
•
A segunda recebe apenas a palavra.
Então ela soma as ocorrências de
cada m de semana (sábado e domingo) dos anos estudados e recupera os
dados da bolsa relativos à segunda-feira e sexta-feira adjacentes àquele m
de semana para ns de comparação e coloca o resultado de cada m de
semana em uma linha.
Após uma análise preliminar dos dados gerados pelas duas abordagens, foi
descoberto que a segunda forma de implementação produz os melhores resultados,
portanto, foi a escolhida para ter os dados minerados.
3.6 Crescimento da Internet e normalização dos
dados
Algo importante que não pode ser ignorado na análise, é o crescimento da internet,
que tem um crescimento em todo o mundo e também no Brasil[32]. A m de evitar
que esse crescimento do número de usuários da internet impacte na conabilidade
dos dados, fazendo com que o número de posts seja proporcionalmente maior no
nal da análise, iremos normalizar todos os dados de acordo com o crescimento
do número de usuários utilizadores da internet no Brasil pelo período equivalente
aos dados coletados.
Segundo informações obtidas no site do IBGE[16], o número de usuários da
internet no Brasil em 31 de dezembro de 2007 chegou a marca dos 42,6 milhões,
em 31 de dezembro de 2008 esse número cresceu para 55,7 milhões e em 31 de
dezembro de 2009 passou a 67,9 milhões. Assim o crescimento de 2008 e 2009 foi
respectivamente de 30,75% e 21,9%.
Assim para normalizar os dados levamos em conta, o número de dias decorridos
do início da análise até o último dia do período de cada uma das ocorrências
analisadas, e o crescimento geométrico decorrido até o período em questão.
40
3.7 Minerando os dados
3.7.1
Limpeza
A partir dos dados brutos gerados pelo programa que implementamos, foi dado
início à terceira etapa da mineração ( conforme visto na seção 2.7): a visualização
e limpeza dos dados com o objetivo de que quem prontos para os algoritmos de
mineração.
O primeiro passo foi separar os arquivos para cada uma das ações, o que nos
deixa com 5 arquivos, um para cada palavra ou expressão usada (ambev, banco
do brasil, bovespa, embraer e vale do rio doce). Essa separação se faz necessária
pois o comportamento de cada ação é diferente tanto em valores absolutos quanto
em termos de taxas de variação. Além disso, pudemos perceber que resultados
de buscas para algumas palavras, como vale do rio doce, estão mais ligados a
posts diretamente sobre ações do que para palavras como banco do brasil.
Depois disso é necessário tirar as informações que não são úteis para a aplicação dos algoritmos de mineração de dados.
O nome da ação (palavra) por
exemplo, não agrega nenhuma informação útil ao analisar os dados de uma única
ação, apesar de ter sido imprescindível em etapas anteriores. Outra informação
que não é mais necessária a partir deste ponto são as datas, pois os dados obtidos já levam as datas em consideração.
Se as datas são usadas na mineração,
por vezes os algoritmos apontam em seus resultados que em determinado período
uma ação cresceu muito, uma informação que não ajuda muito em tentativas de
previsões futuras do comportamento da ação.
Após a retirada destes dados, o arquivo é salvo em formato ARFF (Attribute-
Relation File Format - Formato de Arquivo Atributo-Relação), que é o formato
desenvolvido pelo Machine Learning Project at the Department of Computer Sci-
ence of The University of Waikato (Projeto de Aprendizado de Máquina do Departamento de Ciência da Computação da Universidade de Waikato) para uso no
Weka [35]. De acordo com Witten e Frank[37], o formato ARFF é descrito como
uma forma de representar dados em instâncias independentes e não-ordenadas
sem envolver nenhum tipo de relação entre as instâncias. O processo de conversão é automático. Assim que um arquivo CSV é aberto pelo Weka ele é convertido
para ARFF.
A próxima etapa da limpeza é a remoção dos Outliers.
Como descrito no
capitulo 2.7 uma das formas de se identicá-los é por meio da geração de grácos
que mostrem toda a distribuição dos dados a serem avaliados.
weka podemos gerar esses grácos conforme a gura 3.5.
41
Com o próprio
Figura 3.5: Exemplo de um gráco contendo um Outlier (Julho/2011).
42
Nessa gura vemos que existe uma distribuição de 86 valores distintos mas
que existe um único elemento que está totalmente afastado da distribuição dos
demais. Para evitar distorções em uma futura discretização iremos excluir valores
que estejam muito distantes da distribuição dos demais valores. Ao editar os dados
pelo Weka encontramos outros quatro valores que também foram excluídos por
estar longe da distribuição. Após esse procedimento podemos observar o resultado
na gura 3.6, onde agora o gráco mostra com maior clareza a distribuição dos
dados.
Figura 3.6: O mesmo graco da gura 3.5 após a limpeza de Outliers (Julho/2011).
Esse procedimento foi repetido para cada um dos atributos, a m de evitar distorções nas análises feitas pelos algoritmos que serão utilizados, com exceção aos
atributos de ocorrência dos termos pesquisados nos fóruns pois a sua distribuição
não segue os mesmos padrões das demais.
43
3.7.2
Discretização
Para obter melhores resultados com a análise por meio do Weka, iremos discretizar
todos os atributos, a m de que possamos encontrar alguma correlação de forma
mais fácil e intuitiva. Os atributos estão distribuídos inicialmente como na gura
3.7.
Figura 3.7: Exemplo de dados ainda não discretizados(Julho/2011).
Para realizar a discretização no WEKA nós temos que tomar alguns cuidados.
O primeiro deles é incluir o atributo classe, que é o atributo o qual queremos
predizer por meio dos demais, onde o WEKA por padrão não o inclui. O segundo
ponto a ser observado é a forma da distribuição das classes de atributos geradas,
que será linear, ou seja, os grupos serão formados de acordo com o número de elementos e não por meio de faixas xas de valores. Assim, tomando esses cuidados
temos como exemplo do resultado da discretização a gura 3.8.
44
Figura 3.8: Resultado da discretização dos dados da gura 3.7.(Julho/2011).
45
Diferentemente da detecção de Outliers, nesse caso o processo já inclui todos
os atributos de uma só vez. Dessa forma o processo de discretização só precisa
ser feito uma vez para cada um dos arquivos referentes a cada um dos atributos
os quais queremos realizar alguma predição.
3.7.3
Classicação
A classicação pode ser feita através de vários algoritmos de árvores ou regras,
diferenciadas em sua forma de representação, mas muito semelhantes na forma
de fazer os cálculos. A classicação é feita em duas partes: treinamento e aplicação.
No treinamento, o algoritmo analisa uma parte das instâncias e tenta
achar padrões. Estes padrões são então aplicados ao restante das instâncias na
tentativa de prever o valor do atributo escolhido como classe, e os resultados são
exibidos. Na gura 3.9, pode-se ver como é a estrutura de uma árvore.
Figura 3.9: Exemplo de classicação por árvore.(Julho/2011).
A raiz e os nós da árvore são os termos para os quais o algoritmo achou alguma
relação com o atributo classe e as folhas são os intervalos de valores que o atributo
classe tem quando as condições descritas nos galhos são satisfeitas. Já a gura
3.10 ilustra o resultado de uma classicação feita através de regras.
No retângulo vermelho estão as regras geradas pelo uso de um dos algoritmos
de classicação por regras. Em cada regra, se o que vem antes do símbolo => é
satisfeito, o que vem depois também será. Fazendo a correlação com as árvores,
cada expressão entre um conector and seria um galho, cada atributo seria a raiz
ou um nó e as conclusões seriam as folhas.
46
Figura 3.10: Exemplo de classicação por regras.(Julho/2011).
47
Capítulo 4
Análise dos dados
4.1 Análise - Blogs
Após concluída a fase de pré-processamento dos dados, foram aplicados algoritmos de classicação do Weka a m de prever a variação na cotação dos ativos
analisados a partir dos outros atributos. Na hora de selecionar os atributos para
aplicar as regras de classicação, deve-se sempre tomar o cuidado de retirar todos
os atributos futuros (ao período analisado), pois se o algoritmo tem acesso, por
exemplo, à cotação do período anterior e à variação da cotação, uma previsão
da cotação posterior será excelente, mas obviamente sem nenhum valor, já que
com estes dados poderíamos prever a cotação posterior com 100% de acerto
utilizando uma calculadora.
Diversos algoritmos foram testados em cada conjunto de dados, pois um algoritmo pode ser melhor para classicar uma determinada ação do que outra,
e mesmo dentro de uma única ação, um algoritmo pode classicar uma classe
melhor do que outra.
A gura (4.1) ilustra um bom resultado de classicação. Nas ações da Ambev,
utilizando 66% das instâncias para treino e o algoritmo de regras Decision Table,
mais de 65% das instâncias foram classicadas corretamente. Neste caso, apenas
o sinal da oscilação da cotação foi considerado: 1 se a variação foi positiva, -1
se negativa ou 0 se não houve mudança.
48
Figura 4.1: Variação da Cotação das ações Ambev analisada por regras de decisão.(Julho/2011).
49
Na gura 4.2, pode-se ver um resultado do uso do algoritmo de classicação
por regras JRip nos dados do Banco do Brasil, também usando 66% das instâncias
para treino.
Figura 4.2: Variação da Cotação das ações Banco do Brasil analisada por regras
de decisão.(Julho/2011).
Neste caso a porcentagem de instâncias corretamente classicadas foi de 12%,
como o TP Rate (True Positive Rate), que indica a porcentagem de classicações
corretas em determinada classe dividida pelo número de instâncias que pertencem
àquela classe, e que é de 12%, com o ROC Area, que corresponde ao poder de
separação de classes do classicador, acima de 50%, o que é um bom resultado
visto que nesse exemplo as instâncias foram discretizadas em 10 grupos de igual
distribuição, onde uma distribuição ao acaso geraria uma proporção de 10% de
acerto.
50
A gura 4.3 é o resultado da aplicação do algoritmo de classicação por regras
chamado NNge ao conjunto de dados da Vale do Rio Doce, que gerou uma taxa
de acerto na classicação de 24% com 10 classes distintas.
Figura 4.3:
Variação das ações Vale do Rio Doce analisada por regras de de-
cisão.(Julho/2011).
Outra ferramenta do Weka é encontrada na aba intitulada Visualize, onde
são mostrados grácos de como cada atributo se comporta em relação a cada
outro atributo.
51
A partir dos grácos gerados pelo Weka, é possível fazer suposições que possam
explicar o motivo de determinado comportamento dos atributos. Observando a
gura 4.4, que mostra a variação da cotação da Ambev em relação à quantidade
de ocorrências da expressão .*romp.* pode-se perceber que quanto maior é o
número de ocorrências dessa expressão, maior é também a tendência da variação
da cotação da ação ser positiva.
Figura 4.4: Distribuição de dados: Variação da Cotação da ação vs Ocorrência
da expressão .*romp.*(Julho/2011).
A gura 4.5 mostra uma aplicação do algoritmo JRip sobre os dados de todas as ações com a variação da cotação dividida em 4 classes: baixa forte (baixa
maior que 2%), baixa fraca (baixa menor que 2%), alta fraca (alta menor que
2%) e alta forte (alta maior que 2%).
O destaque para o TP Rate da terceira
classe (alta fraca) foi feito, pois esse algoritmo classicou corretamente aproximadamente 97% das variações da cotação desta classe usando principalmente
os atributos correspondentes à variação anterior e o número de ocorrências da
palavra favorável nos posts de blogs.
52
Figura 4.5: Classicação JRip.(Julho/2011).
53
4.2 Análise - Fóruns
Na análise por meio do weka foram encontradas algumas ocorrências relevantes
na classicação, como na gura 4.6, onde foi possível por meio de uma análise de
regras conjuntivas treinar o algoritmo com 66% dos dados. Analisando os demais,
obtivemos 58% de acerto na classicação da variação da cotação para o período
futuro, o que trás uma boa margem visto que só temos duas classes de dados,
onde -1 indica variação negativa e 1 indica variação positiva.
Figura 4.6: Variação da Cotação das ações Ambev analisada por regras conjuntivas.(Julho/2011).
54
Assim como na Ambev, obtivemos resultados similares para o Banco do Brasil
na gura 4.7, onde mais uma vez o percentual de acerto foi de 55%, ou seja, 5%
a mais que o acaso.
Figura 4.7: Variação da Cotação das ações Banco do Brasil analisada por regras
conjuntivas .(Julho/2011).
55
Para a Embraer, fazendo diversos testes, foi obtido um bom resultado para a
classicação por meio do algoritmo BFTree ao eliminar todos os atributos exceto
os termos encontrados nos fóruns conforme a gura 4.8, onde o percentual de
sucesso encontrado para classicação, 72,4138%, foi bem mais elevado quando
comparado aos demais resultados que já expusemos.
Figura 4.8: Variação da Cotação das ações Embraer analisada e classicada por
árvore.(Julho/2011).
56
Também é bom ressaltar que foram encontrados alguns indícios de atributos
que poderiam trazer bons resultados logo na análise inicial apenas plotando os
pontos após a Discretização, como nas guras 4.9 e 4.10, onde mais de uma
ocorrência de palavras seguiu exatamente o comportamento previsto para ela,
a palavra caiu indicando variação negativa nas cotações de ações BBAS3 e a
palavra boa indicando variações positivas para a cotação das ações AMBV3,
1
sugerindo uma análise mais aprofundada para esses casos especícos .
Figura 4.9: Distribuição de dados: Variação Cotação da ação vs Ocorrência da
palavra caiu .(Julho/2011).
1 É importante relembrar que em toda a análise, utilizamos como variação da cotação, a
diferença percentual entre a cotação do ativo em uma sexta-feira e a segunda-feira subsequente,
e as ocorrências dos termos são avaliadas durante o m de semana intercalado por esses dias.
57
Figura 4.10: Distribuição de dados: Variação da Cotação da ação vs Ocorrência
da palavra boa.(Julho/2011).
58
4.3
Clusters
Para que a clusterização forneça algum resultado que tenha expressividade, devemos utilizar apenas atributos onde o valor absoluto tem uma mesma escala,
assim os algoritmos podem trabalhar em cima desses atributos de forma correta.
Um exemplo de valores que não podem ser utilizados nessa análise são os valores absolutos das ações e o índice bovespa, pois os valores de ações são expressos
numa escala monetária que costuma não ultrapassar o valor absoluto de R$100,00
e já o índice bovespa possui um valor absoluto que oscila por volta de 60000. Ao
clusterizar atributos como esses o máximo que conseguiríamos seriam clusters
separando as ações, algo que já temos.
No algoritmo de clusterização utilizado, o SimpleKMeans [37], um número k
de clusters desejado deve ser escolhido através dos parâmetros antes da execução.
O algoritmo seleciona k pontos entre os dados para serem os centros de cluster
(centróides) iniciais, depois todos os outros pontos são agrupados junto com o
centróide mais próximo, o valor médio em cada cluster é calculado para formar
um novo centróide e o conjunto de dados é novamente distribuído, e esse processo
se repete até que não haja mais alterações nos clusters.
Na tentativa de avaliar se o comportamento das ações são similares utilizamos
apenas valores que tratam as variações, que são valores relativos ao modo como
elas oscilam. Utilizando o algoritmo SimpleKMeans, com K =4 onde K é o número
de agrupamentos, obtivemos a seguinte clusterização:
Cluster#
Attribute
Full Data
0
1
2
3
(420)
(170)
(30)
(50)
(170)
===========================================================================
VariaçãoOcorrência
0.3235
-0.1261
1.2054
1.8434
0.1703
VarAntes
-0.0008
-0.0109
-0.0082
-0.0091
0.0131
VarDepois
-0.0032
-0.0118
0.0766
-0.0582
0.0075
VariaçãoCotação
-0.0014
-0.0141
0.056
-0.044
0.0138
VariaçãoAção
1.0175
1.008
1.0918
0.987
1.0228
Clustered Instances
0
170 ( 40%)
1
30 ( 7%)
2
50 ( 12%)
3
170 ( 40%)
59
Levando em consideração todos os dados, a variação da cotação das ações referente ao período observado que foi -0,0014, valor bastante próximos de zero. Os
clusters #1 e #2 representam casos interessantes, pois seus centróides apresentam
características que chamam atenção, onde a variação da ocorrência é bem acima
da média dos dados (1,2054 e 1,8434 respectivamente, comparados a 0,3235 de
média) enquanto o cluster #1 tem média de variação cotação de 0.056 (5,6%), o
cluster #2 tem média de variação cotação -0.044 (-4,4%). Isso indica que dentro
desses agrupamentos podem estar contidos os casos onde uma grande variação de
ocorrência de palavras e expressões podem ter resultado em uma forte variação
tanto positiva quanto negativa.
Também podemos perceber que 80% das instâncias foram classicadas em
2 agrupamentos que possuem um centróide com uma variação da cotação mais
baixa, cando com -0,0141(-1,41%) e 0,0138(1,38%) respectivamente para os clus-
ters #0 e #3.
Figura 4.11: Clusterização - Todas as variações de cotação.(Julho/2011).
Em uma outra visão classicamos a variação da cotação em 4 faixas, [inf
0,2],[-0,2-0],[0-0,2] e [0,2-inf ] e após a clusterização com os mesmos parâmetros da
anterior obtivemos os seguintes clusters :
Cluster#
60
Attribute
Full Data
0
1
2
3
(409)
(114)
(73)
(127)
(95)
===========================================================================
VariaçãoOcorrência
0.3167
0.2811
0.5094
0.1985
0.3696
VarAntes
-0.0013
-0.0052
0.004
0.0096
-0.0154
VarDepois
-0.0029
-0.0102
0.0432
0.0039
-0.0385
VariaçãoCotação
-0.066
-1
1.9863
1.0394
-2
VariaçãoAção
1.0182
1.0083
1.0629
1.0181
0.9959
Clustered Instances
0
114 ( 28%)
1
73 ( 18%)
2
127 ( 31%)
3
95 ( 23%)
Agora nessa clusterização vemos que a distribuição dos atributos foi bastante
alterada em relação ao anterior. Nesse cluster vemos que os períodos que efetivamente tiveram as maiores variações de cotação agora tem centróides com variações
de ocorrência bem mais próximos da média (0,5094 e 0,3696 contra 0,3167) mas
mesmo assim ainda são superiores, mostrando que dentro desses agrupamentos
ainda podem conter os casos que foram considerados interessantes na clusterização
anterior.
Nessa visão ao inspecionar o gráco 4.12 com o uso do Jitter, que é uma opção
que o Weka disponibiliza para adicionar ruído aleatório aos pontos para que possamos descobrir pontos sobrepostos, temos na clusterização 4 grupos que foram
distintamente classicados de acordo com as faixas variação da cotação conforme
a gura 4.12, onde todos os pontos vermelhos e verdes que pertencem aos clusters
#1 e #2 estão em uma faixa positiva de variação e os pontos azul claro e escuro
que pertencem aos clusters #0 e #3 estão em uma faixa negativa. Assim vemos
1
que a proporção está próxima a uma distribuição ideal para a análise , onde variações positivas e negativas teria 50% de probabilidade de ocorrência.
Tivemos
51% (28% do cluster #0 mais 23% do cluster #3) para variações negativas e
49% (18% do cluster #1 mais 31% do cluster #2) para as positivas. Também
obtivemos agrupamentos com um número de instâncias clusterizadas menos het-
1 Consideramos como uma distribuição ideal para análise, uma distribuição que contenha
heterogeneidade nos atributos. O objetivo da heterogeneidade é evitar distorções na análise
provocada por vícios dos algoritmos utilizados. Um bom exemplo é no caso de analisarmos
vários períodos onde a ação sempre tem uma variação de cotação positiva. Ao treinar um
algoritmo com 66% das instâncias e classicar as demais, não será nenhuma surpresa ele ter um
bom índice de acerto pois todas as instâncias são de uma mesma classe
61
erogêneo, onde antes existiam clusters com 140 ocorrências e outro com 30, agora
temos o maior cluster com 127 instâncias e o menor com 73. Assim vemos que
a base de dados utilizada segue o propósito de ter uma amostragem próxima dos
princípios estabelecidos para analisar os demais fatores sem que haja uma distorção por haver muitas ocorrências de alta a mais que de baixa ou vice-versa,
mais ocorrências de baixa do que alta. Uma curiosidade é que existem instâncias
que apesar de terem a mesma classicação para variação de cotação, na clusterização foram separadas em clusters diferentes, como ca evidenciado na gura
4.12.
Figura 4.12: Clusterização - Variação de cotação em 4 faixas.(Julho/2011).
62
Capítulo 5
Conclusão e trabalhos futuros
Neste trabalho de graduação, buscamos alguma relação entre as oscilações da
bolsa de valores e posts em fóruns nanceiros e blogs.
Foi usada a mineração
de dados para analisar a grande quantidade de texto obtida em fóruns e blogs
espalhados pela Web.
Primeiro foi necessário obter os dados da Web, que foram conseguidos através
de um programa desenvolvido por nós que automatizou o uso da ferramenta
HTTrack, gerando as URLs necessárias para a busca e download do conteúdo
com esta ferramenta e disparando-a quantas vezes fossem necessárias para obter
todos os dados a serem utilizados na mineração.
Depois desenvolvemos outros dois programas, um para separar as mensagens
nos fóruns de acordo com título do tópico e ocorrência da empresa no próprio post
e também por data, e outro para procurar por certas palavras em todo o texto
baixado da Web e gerar um CSV com as informações da busca pelas palavras,
em que cada registro corresponde a um post de blog ou mensagem de fórum e a
ocorrência ou não de cada uma das palavras.
O terceiro passo foi implementar mais um programa, que uniu os dados das
ocorrências de expressões com os dados das oscilações dos ativos da Bovespa.
Passo fundamental na preparação dos dados para a mineração, pois queríamos
encontrar relações entre estes dois grupos de dados.
O último passo foi analisar os resultados das aplicações de vários algoritmos
de mineração de dados com auxílio da ferramenta Weka, que foi usada para discretizar os dados, retirar outliers, gerar visualizações e apresentar árvores e regras
de resultados das aplicações dos algoritmos.
A partir das análises, foi possível fazer suposições de possíveis relações entre
os dados das ocorrências de expressões na Web e o comportamento das cotações
das ações escolhidas para a pesquisa.
Apesar de vários resultados terem sido
63
bastante positivos, estas foram em maioria pontuais e não conseguimos achar
nenhuma palavra que fosse sempre, ou pelo menos na maioria das vezes, um
bom indicativo de variação positiva ou negativa nas cotações. Algumas palavras
foram bem melhores que outras nas análises de relações, sendo por vezes isoladas
na tentativa de melhorar os resultados.
Não foi achada nenhuma forma óbvia
de prever os reusltados das ações, o que já era esperado dada a diculdade do
problema [10]. Ainda assim, algumas regras se mostraram interessantes do ponto
de vista da mineração de dados com resultados melhores que ao acaso, mas o
teste prático destas está fora do escopo do trabalho.
Como sugestão para trabalhos futuros, poderiam ser feitas várias iterações de
todos os passos para que fosse realizada uma seleção otimizada de palavras, pois
a relevância das palavras só é realmente testada na última fase do processo e a
escolha delas é feita no primeiro passo por meio de uma amostragem relativamente
pequena. Outra ideia é fazer um processo semelhante ao presente, mas adaptando
o trabalho para minerar notícias, que são consideradas por diversos especialistas
do mercado de ações, um grande fator de inuência no valor dos ativos da bolsa.
Estender o trabalho para outras línguas e países que tenham uma maior atividade
em fórums e blogs também pode melhorar os resultados. Por m, minerar dados
de redes sociais também pode ser um bom caminho, já que estas vêm crescendo
muito e alguns trabalhos, como o mencionado anteriormente de Johan Bollen,
Huina Mao e Xiao-Jun Zeng [3], já mostram a sua valia em trabalhos semelhantes
ao presente.
64
Referências
[1] Harvey M. Deitel
and Paul J. Deitel. Java: Como Programar. Prentice-Hall,
2005.
[2] Advfn. Forum advfn. http://br.advfn.com, dezembro 2010.
[3] Johan Bollen, Huina Mao, and Xiao-Jun Zeng. Twitter mood predicts the
stock market. CoRR, abs/1010.3003, 2010.
[4] Bovespa. Portal bmf&bovespa. http://www.bmfbovespa.com.br, Dezembro
2010.
[5] Graham Bowley. Computers that trade on the news. The New York Times,
2010.
Discovering data mining: from concept to implementation.
[6] Peter Cabena.
Prentice Hall, 1998.
[7] S.C. CORTES, R.M. PORCARO, and S. LIFSCHITZ. Mineracao de dados
- funcionalidades, tecnicas e abordagens. PhD thesis, PUC-Rio, 2002.
[8] Diversos. Wikipedia. http://en.wikipedia.org/wiki/Knowledge_Discovery_in_Databases,
dezembro 2010.
[9] Facebook. Facebook. http://www.facebook.com, dezembro 2010.
[10] E.F. FAMA.
Ecient capital markets:
a review of theory and empirical
work. The Journal of Finance. Cambridge. v.XXV, 1970.
[11] Eclipse Foundation. Eclipse - the eclipse foundation open source community
website. http://www.eclipse.org, dezembro 2010.
[12] Google. Google. http://www.google.com, dezembro 2010.
[13] Benjamin Graham. The Intelligent Investor. HarperCollinsPublishers, 2003.
65
[14] Hitwise.
Top
20
sites
&
engines.
http://www.hitwise.com/us/data
center/main/dashboard-10133.html, Dezembro 2010.
[15] Httrack. Httrack website copier - oine browser. http://www.httrack.com,
dezembro 2010.
[16] IBGE. Portal ibge. http://www.ibge.gov.br.
[17] Infomoney. Forum infomoney. http://forum.infomoney.com.br/, Dezembro
2010.
[18] A.K. JAIN, M.N. MURTY, and P.J. FLYNN.
Data clustering: A review.
1999.
[19] Aurélio Marinho Jargas. Expressões Regulares - Guia de Consulta Rápida.
Editora Novatec, 2001.
[20] Steve Jones. Encyclopedia of New Media : An Essential Reference to Com-
munication and Technology. SAGE Publications, 2002.
[21] H.-Y. LEE and H.-L. ONG. Visualization support for data mining. 1996.
[22] Hean lee Poh, Jingtao Yao, and Teo Jasic. Neural networks for the analysis
and forecasting of advertising and promotion impact. International Journal
of Intelligent Systems in Accounting, Finance and Management, 1994.
[23] H. Liu, S. Shah, and W. Jiang. On-line outlier detection and data cleaning.
Computers and Chemical Engineering, 2004.
[24] Kurgan Lukasz and J. Cios Krzysztof.
Discretization algorithm that uses
class-attribute. Proceedings of the 2001 International Conference on Bioin-
formatics, 2001.
[25] Orkut. Orkut. http://www.orkut.com, dezembro 2010.
[26] Bill Palace. Data mining. http://www.anderson.ucla.edu/faculty/jason.frand/teacher/techn
Junho 1996.
[27] Sergey Perminov. Trendocracy and Stock Market Manipulations (2008. Stock
Markets Institute, 2008.
[28] HTML Parser Project.
Html parser.
Dezembro 2006.
66
http://htmlparser.sourceforge.net/,
[29] Vivek Sehgal and Charles Song. Sops: Stock prediction usingweb sentiment.
Technical report, University of Maryland, 2007.
[30] Vatsal H. Shah. Machine learning techniques for stock prediction. Technical
report, New York University, 2007.
[31] E. SIMOUDIS. Reality check for data mining. 1996.
[32] Internet
World
Stats.
Internet
world
stats.
http://www.internetworldstats.com/.
[33] Twitter. Twitter. http://twitter.com, dezembro 2010.
[34] UOL. Portal uol. http://www.uol.com.br.
[35] Waikato. Weka. http://www.cs.waikato.ac.nz/ml/weka/, dezembro 2010.
[36] G. J. Williams, R. A. Baxter, H. X. He, S. Hawkins, and L Gu. A comparative
study of rnn for outlier detection in data mining.
Technical report, IEEE
International Conference on Data-mining (ICDM'02), 2002.
[37] Ian H. Witten and Eibe Frank. Data Mining - Practical Machine Learning
Tools and Techniques. Elsevier, 2005.
[38] Yahoo. Portal yahoo nance. http://nance.yahoo.com.
67