/Banco de dados

voltar
/Banco de dados

Data Mining na Prática: Time Series

PorMauro Pichiliani em

Olá pessoal. Nesta coluna vamos continuar nosso estudo
sobre algoritmos de Data Mining. Desta vez abordaremos o algoritmo
que trabalha com a predição de valores em uma série
temporal, o algoritmo de Time Series. Para a implementação
do exemplo utilizarei o Analisys Services 2005, pois o algoritmo
de Data Mining para séries temporais é uma das
novas funcionalidades.

Antes de começar a verificar os detalhes do algoritmo,
vamos entender como os dados estão organizados em uma
série temporal. Geralmente os dados de uma série
temporal são indexados por um período de tempo
com intervalos fixos como, por exemplo, dados armazenados mensalmente
ou diariamente. Em séries de dados temporais é comum
encontrar valores que variam no tempo, sendo que a principal
característica dos dados de uma série temporal
na regularidade dos períodos.

Os dados de uma série temporal podem conter mais de um
conjunto de dados. Por exemplo, uma única série
temporal pode conter a quantidade de estoque de um produto e
a quantidade vendida deste mesmo produto. Os algoritmos que trabalham
com a predição de valores de séries temporais
geralmente trabalham com apenas um conjunto de dados por vez.
Já o algoritmo de séries temporais do Analisys
Services 2005 permite que se trabalhe com mais de um conjunto
de dados, de modo que a identificação de correlações
entre estes conjuntos para ajudar na predição.
Este tipo de correlação entre conjuntos de dados
de uma série temporal é chamado de cross prediction.

Outro conceito importante sobre séries temporais é a
sazonalidade. Este conceito pode ser definido da seguinte maneira:
os dados de uma série temporal apresentam padrões
de comportamento que se repetem durante os períodos da
série. Um exemplo de sazonalidade pode ser o aumento de
temperatura nos meses de verão em uma série temporal
que armazena a temperatura mês a mês. O aumento de
temperatura, neste caso, provavelmente vai se repetir em todos
os meses de verão, independente do ano, demonstrando a
sazonalidade do aumento da temperatura.

Os algoritmos de Data Mining para séries temporais são
utilizados para prever novos dados a partir dos dados históricos
da série. Ou seja, o algoritmo vai analisar a quantidade
de dados existentes e fornecer uma possível previsão
do que pode acontecer nos próximos períodos. Esta
previsão leva em consideração os dados ‘passados’ da
série temporal, que se tornam seu conjunto de treinamento.
A previsão fornecida pelos algoritmos de Data Mining para
series temporais é baseada em regressões não-lineares.
Cabe a usuário apenas fornecer a série temporal
e especificar quais os períodos o algoritmo deve prever.

Um ponto importante a ser considerado é a qualidade da
predição. Podemos utilizar este algoritmo para
prever o valor da cotação de uma determinada empresa
e ficarmos ricos? Infelizmente a resposta é não.

A qualidade da predição é um assunto delicado
quando se fala em algoritmos para séries temporais. É importante
lembrar que a previsão é apenas UMA possibilidade
e que geralmente os algoritmos de séries temporais tendem
a apresentar previsões razoáveis, previsões
estas que levam em consideração diversos fatores
como, por exemplo, a correlação com outras séries
e a sazonalidade. Estes algoritmos trabalham com modelos para
representar os dados e, em algumas situações, é mais
recomendado elaborar um modelo específico para a série
temporal do que utilizar um algoritmo de Data Mining. No exemplo
da cotação faz mais sentido procurar um modelo
específico para sistemas caóticos do que utilizar
um algoritmo de Data Mining para séries temporais.

Apresentadas estas características, podemos começar
a estudar o uso do algoritmo de séries temporais implementado
no Analisys Services 2005. Este algoritmo é muito complexo
e utiliza outro algoritmo de Data Mining, o algoritmo de árvores
de decisão. Sem entrar em maiores detalhes do seu funcionamento,
um exemplo simples será apresentado para demonstrar como
este algoritmo pode ser empregado. Para os leitores que desejarem
maiores informações, recomendo uma boa lida no
artigo que explica os detalhes do funcionamento do algoritmo.
Este artigo pode ser visto por meio do link abaixo:

http://go.microsoft.com/fwlink/?LinkId=45966

Prevendo a quantidade de venda de vinhos

A uma série temporal do nosso exemplo traz a quantidade
de litros de um determinado tipo de vinho (em milhares de litros)
vendidos mês a mês durante janeiro de 1950 e julho
de 1995. Estes dados foram retirados da biblioteca de séries
temporais criada por Rob Hyndman, disponível no link abaixo:

http://www-personal.buseco.monash.edu.au/~hyndman/TSDL/

A série temporal utilizada neste exemplo contém
apenas um conjunto de dados: a quantidade de litros de vinho
vendida. A Figura 1 apresenta um gráfico com os valores
da série temporal.

Figura 1. Gráfico com as vendas de milhares de litros
de vinho por mês.

O objetivo do uso do algoritmo para séries temporais é prever
qual será a quantidade de litros de vinho vendida nos últimos
meses de 1995 e nos anos de 1996 e 1997. Apesar de contar com
dados antigos, esta série temporal apresenta boas informações
para um exemplo didático.

Vamos utilizar o algoritmo de séries temporais do Analisys
Services 2005 para elaborar a previsão desejada. É importante
lembrar que este algoritmo pode ser utilizado apenas nas edições
Standard e Enterprise do SQL Server 2005 e que é necessária
a instalação do SQL Server 2005 e do Analisys Services
2005 para o uso deste algoritmo.

O primeiro passo é armazenar os dados em uma tabela
do SQL Server 2005. Vamos supor que todos os dados desta série
temporal estão armazenados em uma tabela chamada TB_VENDAS_VINHO,
que contém as colunas DATA e QTD_VENDIDA, e que esta tabela
está armazenada no banco de dados chamado DB_TIME_SERIES.
No final do artigo serão disponibilizados para download
os dados e os scripts utilizados.

Com os dados já armazenados é necessário
configurar o Analisys Services para que ele possa obter os dados
por meio de um provider OLE DB. A Figura 2 apresenta a janela
de configuração do Analisys Services, obtida a
partir do clique com o botão direito do mouse no servidor
Analisys Services dentro do Management Studio 2005.

Figura 2. Opções de configuração
do Analisys Services.

Basta modificar os valores das opções em destaque
na Figura 2 para que o Analisys Services possa acessar os dados
por meio de um provider OLE DB. A opção AllowedProvidersInOpenRowset deve
conter o valor [All] digitado na coluna Value e as demais opções
devem conter o valor true. Não se esqueçam de selecionar
a caixa de texto Show Advanced (All) Properties para
poderem ter acesso a todas as propriedades.

Uma vez que o servidor esteja configurado podemos montar o Modelo
de Mineração (Mining Model) que será utilizado
pelo algoritmo de séries temporais. Para isso devemos
criar uma nova Query DMX (Data Mining Extensions). Estas queries
DMX são como a linguagem Transact-SQL, porém o
DMX é uma linguagem específica para o uso de Data
Mining no SQL Server 2005. Para iniciar uma nova query DMX basta
clicar no menu File do Management Studio, escolher a opção
New e a sub-opção New Analisys Services DMX Query.
Em seguida é necessário fornecer um login e senha
para o servidor Analisys Services. Cuidado com as informações
fornecidas nesta tela de login: NÃO é um login/senha
do SQL Server (engine) e sim um login/senha do Analisys Services!

O próximo passo para a execução do algoritmo é criar
o modelo de mineração e importar os dados da tabela
TB_VENDAS_VINHO. Para criar o modelo de mineração é necessário
utilizar o comando CREATE MINING MODEL. Para importar os dados
devemos utilizar a instrução INSERT INTO junto
com a função OPENROWSET() que apontará para
o servidor que contém o banco de dados TB_TIME_SERIES
e a tabela TB_VENDAS_VINHO. Após a criação
do modelo e a importação dos dados vamos indicar
ao algoritmo que ele deve prever os próximos 29 valores
da série temporal, referentes aos 5 próximos meses
de 1995 e aos 24 valores dos meses de 1996 e 1997. A função PredictTimeSeries() será utilizada
em uma instrução SELECT que acessa os dados do
modelo de mineração. A Figura 3 apresenta as instruções
para a criação do modelo, a importação
dos dados e a query que faz a previsão dos novos valores.

Figura 3. Criação do modelo de mineração,
importação dos dados e predição dos
valores.

O resultado da execução da instrução
SELECT que faz a predição dos dados é apresentado
como uma tabela interna e não como um conjunto de linhas
de colunas. Se o desenvolvedor desejar trabalhar com a manipulação
destes resultados em uma aplicação basta procurar
na documentação do .NET Framework por classes e
métodos relacionados ao uso dos algoritmos de Data Mining.
Para mais informações sobre estes recursos eu recomendo
uma boa lida na documentação do SQL Server 2005,
o Books OnLine.

Inserindo no gráfico os dados gerados pela execução
do algoritmo de série temporais pode-se fazer uma análise
mais detalhada dos novos valores . A Figura 4 apresenta o gráfico
contendo os novos valores para a quantidade de vinho vendida.

Figura
4. Vendas de milhares de litros de vinho por mês.

Analisando os dados previstos pelo algoritmo, podemos ver que
a previsão segue o padrão de vendas histórico,
onde há uma queda significativa nas vendas nos primeiros
meses dos anos (Janeiro e Fevereiro) e o crescimento das vendas
nos meses da metade do ano (Julho e Agosto). Para uma análise
mais detalhada do motivo destas quedas e crescimentos é necessário
contar com a ajuda de um especialista no domínio. Contudo,
o algoritmo prevê uma continuidade deste comportamento.
A previsão forneceu valores aproximados, mas não
iguais. Outro detalhe que pode ser observado no gráfico é descontinuidade
dos valores entre o que é histórico e o que é previsto.
Esta descontinuidade foi deixada de propósito para separar
os dados históricos dos dados que foram previstos pelo
algoritmo.

Para fazer o download dos dados e dos scripts utilizados nesta
coluna clique aqui.

Um grande abraço e até a próxima coluna.

Deixe um comentário! 1

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Comentando como Anônimo

leia mais
Este projeto é mantido e patrocinado pelas empresas:
Hospedado por: