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