Algoritmo de Regras Associativas (Association Rules) no Data Mining do SQL Server 2014

Fala galera, como prometido neste post e iniciado pela Árvore de Decisão, hoje continuo a série de posts falando sobre os algoritmos de Data Mining existentes no SQL Server 2014.

Este segundo algoritmo que vamos falar é de Regras Associativas. Voltando ao primeiro post, as Regras Associativas apresentam uma estrutura combinatória dentro de um DataSet a partir de itens similares que estão sendo processados. A maioria dos sistemas inteligentes que utilizam este algoritmo são criados para recomendar um produto para o usuário, normalmente em e-commerce. Já reparou que quando acessa o site da Amazon e procura o livro Do Banco de Dados Relacional à Tomada de Decisão, e vários outros livros de Business Intelligence e BigData são apresentados? Então, não existe um Oompa-Loompa colocando isso aleatoriamente para você. Por trás, existe um sistema de recomendação completo, provavelmente utilizando a categoria “Computação, Informática e Mídias Digitais” como um parametro de entrada para este item. Como sempre, é importante conhecer a base e saber quais segmentações você quer aplicar para a recomendação. Neste caso, quando se coloca a categoria como um parametro de entrada, sempre serão recomendados itens similares dentro desta categoria, mas se todos os compradores do meu livro também comprassem um livro de culinária, ele não apareceria na recomendação pois está em outra categoria.


 

Bom, já entendemos a aplicabilidade e como ele funciona, agora vamos criar um exemplo para o Adventure Works?

Primeira coisa é necessário criar um novo projeto do tipo SSAS com Data Mining. Mais uma vez vou acreditar que você sabe criar um Data Source apontando para o AdventureWorksDW2012 e um Data Source View apontando para a vAssocSeqLineItems e vAssocSeqOrders. Esta estrutura basicamente é um relacionamento entre pedidos e produtos. Onde uma view tem os pedidos que foram feitos, e na outra view tem a lista de produtos que estão associadas àquele pedido. Consegue ver um relacionamento entre essas views? E a aplicabilidade desse relacionamento na nossa recomendação de conteúdo? Caso não tenha conseguido descobrir essa associação, a idéia é encontrar na lista de itens os produtos que também são comprados (com base na outra view de pedido) quando ao menos um daqueles itens é o que está no meu carrinho. Ficou mais claro? Não? Ok, vamos continuar e ver se conseguimos explicar… Voltando pra Amazon, e olhando a categoria do meu livro. Diversas pessoas olham meu livro e alguns outros livros na mesma visita à pagina, não importa a ordem, pode ser que vejam outros livros e depois o meu (a ordem de visualização vai importar quando estivermos falando de algoritmo de Sequence Cluster, mas isso é pra outro post). O importante é que existe uma ligação entre a visita e os produtos que foram vistos, no caso estes livros. Depois de algum tempo, estes livros passam a ter um relacionamento mais preciso, pois tem mais gente visualizando os livros. Não significa que em todos os acessos os visitantes visualizam todos os livros, estes que estão recomendados são os 5 livros que mais se relacionam com o meu no momento do processamento e dentro naquela categoria que está sendo processada. Pode ser que no futuro um outro livro passe a ser visualizado sempre que alguém buscar o meu livro, isso fará com que o 5º livro da ordem, que seria representado por uma ligação mais fraca, pare de aparecer na recomendação e entre esse outro livro… Tudo isso automaticamente, sem a intervenção daquele Oompa-Loompa comentado lá em cima.

Voltando ao exemplo, depois de incluir o Data Source View, é preciso relacionar as views, arrastando o campo OrderNumber da view vAssocSeqLineItems para cima do campo vAssocSeqOrders.


Próximo passo é hora de criar o Mining Model para as regras associativas, faça isso clicando com o botão dirento em Mining Structure e criando um novo a partir do From existing relational database or data warehouse e escolhendo Microsoft Association Rules.


Ao avançar para as próximas telas, deve-se informar qual view é Case e qual é Nested. Neste caso, a estrutura de CASE é onde temos a informação principal que será usada para segmentar os dados. Fazendo uma analogia ao livro, é onde se encontra a categoria de “Computação, Informática e Mídias Digitais” e não os livros que foram visualizados juntos. Já a tabela NESTED é onde se encontram estes livros que foram visualizados juntos. Então selecione vAssocSeqOrders para Case e vAssocSeqLineItens para Nested.


Ao avançar para a tela seguinte, é solicitado para informar quais campos serão tratados como Key, Input e Predictable. A seleção destas colunas é baseada na mesma explicação que foi feita no post sobre Árvores de Decisão, então dê um pulinho lá e veja o que é. Desmarque todas as opções que vierem marcadas, e selecione as caixas de OrderNumber como chave (coluna key) e as três colunas da Model. Sua seleção ficará assim:


Quando avançar para a próxima tela, garanta que ambas colunas selecionadas estejam marcadas como Key, no Content Type.


Só pra lembrar, como neste caso é importante a acertividade na recomendação dos itens similares, altere de 30 para 0 o valor do campo “Percentage of Data for Testing“. Avance até finalizar o processo.

Se tudo ocorreu direito, seu Mining Structure ficará assim:


Antes de processar seu projeto, lembre-se de informar qual é o servidor que tem o SQL Server Analysis Services instalado e configurado. Após este pequeno detalhe, faça o processamento.

Após processar, mude a aba do seu Mining para Mining Model View, e então, dentro desta aba, vá até o item Dependency Network.


Aqui dentro é possível ver os nós de associação que foram criados.


Parece pouca associação (mas por trás não é), isso acontece pela parametrização da quantidade mínima de ocorrências similares dos objetos. Para aumentar isso, volte até a aba Mining Model, clique com o botão direito em Set Algorithm Parameters.


Altere os parametros de Minimum_Support para 0.01 e de Minimum_Probability para 0.1, ao terminar esta alteração, processe novamente seu modelo e em seguida volte a visualizar as associacões (aba Dependency Network do seu Mining Model View). Veja que agora está bem mais completo e bonito de ver.


Para consumir as associações, é possível escrever códigos DMX (Data Mining Extentions) passando como parâmetro o nome de um dos produtos, e recebendo uma lista dos outros itens que são associados à ele nas compras. Está no meu pipe pra escrever uma app em .Net que consuma esses dados via DMX, e claro, postar aqui como foi feito J

0  

Algoritmo de Árvore de Decisão (Decision Tree) no Data Mining do SQL Server 2014

Fala galera, como prometido algumas semanas atrás vou escrever uma série de posts falando sobre os algoritmos de Data Mining existentes no SQL Server 2014. Hoje vamos cobrir o uso do algoritmo de Árvore de Decisão, que implementa o algoritmo Microsft Decision Tree.

Como já foi falado no primeiro post, este algoritmo de classificação é responsável por criar uma representação visual que chamamos de árvore por contem um nó raíz, nós intermediários que são as ramificações e os últimos nós representados que são as folhas.

É importante conhecer os dados que serão trabalhados para poder definir o que são atributos de entrada e o que são atributos preditivos. Basicamente, os atributos de entradas são colunas do banco de dados que podem influenciar o resultado final, e o resultado final é a coluna preditiva. Imagine um cenário onde o objetivo é classificar pessoas que são possíveis compradores do livro Do Banco de Dados Relacional à Tomada de Decisão. Então neste caso a coluna preditiva do banco é se o cara comprou ou não o livro. As colunas de input são as colunas que tem alguma influência sobre a compra do livro, por exemplo, o idioma, a área de atuação, interesse técnico, etc. O algoritmo, com base nestas informações de input e predição, estrutura os nós da árvore classificando o que é relevante nas ramificações e entregando um (ou mais) caminhos ideais para chegar até as folhas. Pensando por esse lado, foi constatado que das 10 vendas que o livro teve, 8 falam idioma Português, 7 trabalham na área de Banco de Dados e somente 3 tem interesse técnico. Quando estes dados são processados pelo algoritmo e apresentado através da Árvore de Decisão, é possível ver claramente qual é o melhor caminho para segmentar o público que compraria o livro. São profissionais que falam Português e que trabalham na área de Banco de Dados, mas o interesse técnico não importa. Se fizer uma campanha de marketing direcionada para este público, a chance de vender o livro é muito maior do que enviar para um grupo de pessoas que falam Inglês e trabalham na área de Nutrição.

Bom, depois desse exemplo para entender o funcionamento do algoritmo, vamos começar um exemplo utilizando o Adventure Works.

Primeira coisa é necessário criar um novo projeto do tipo SSAS com Data Mining. Vou levar em conta que você sabe criar um Data Source apontando para o AdventureWorksDW2012 e um Data Source View apontando para a vTargetMail.

O próximo passo é onde começa a mineração de dados, procure na Solution Explorer o item de Mining Structure e clique com o botão direito do mouse, em seguida, aponte para New Mining Structure.

Neste momento uma tela de abre e permite que você informe onde estão os dados de origem. Como utilizaremos o Data Warehouse para consumir os dados, deixe marcada a opção que é apresentada.

Ao avançar para a próxima tela, você deve escolher qual algoritmo vai utilizar para sua mineração. No caso deste exemplo, mantenha escolhido o default, que é Decision Tree.

Na tela seguinte, você informa qual é o Data Source View que possui a conexão com sua base de dados de origem. Como foi criado somente um Data Source View, somente ele é apresentado.

Ao avançar, o wizard pergunta quais tabelas são Case e quais são Nested. Mantenha a tabela (eu sei que é uma view!!!!) vTargetMail marcada como Case e avance.

Neste momento é hora de selecionar quais colunas são de entrada e quais são preditivas. Ao bater o olho na tela, é intuitivo marcar as linhas definidas para cada coluna. Garanta que seu ambiente está marcado com:

Key à CustomerKey

Input à Age e CommuteDistance

Predictable à BikeBuyer

Como apresentado a seguir

Avance para a próxima tela, e informe quais são valores Continuous ou então Discrete. Lembrando que valores contínuos apresentam uma grande variação de ocorrencias dentro da coluna e os discretos variam pouco. Por exemplo um campo do tipo CPF é um valor contínuo (varia muito de individuo para individuo) e uma coluna do tipo sexo é discreto (varia só um pouco). Caso não esteja a vontade, ou não conhece a base, pode clicar em Detect e o SQL Server analisa e lhe dá o resultado.

O próximo passo é finalizar e informar o nome. Como não estou com criatividade hoje, vou deixar o nome sugerido pelo SQL Server e vou manter v Target Mail.

Um novo item é criado dentro da Solution Explorer, e é neste objeto que a Mineração de Dados ocorre. Para encontrar a Árvore de Decisão, é preciso processar os dados. É possível processar somente o modelo ou então o projeto como um todo. No caso, vamos processar todo o projeto. Para isso, vá na Solution Explorer, clique com o botão direito no projeto e aponte para Process. Lembrando de apontar para o deploy para o servidor correto.

Se tudo ocorrer bem ao processamento, será apresenta o status Process Succeeded.

Para encontrar a Árvore de Decisão, vá até a área central do SQL Server Data Tools no objeto v Target Mail, e abra a aba Mining Model Viewer.

Reparem que os nós Raiz [1], Ramificações [2] e Folha [3] são apresentados, e pode-se seguir o caminho da predição com base nas variáveis de entrada. Um ponto importante para seguir com a análise, é entender essa graduação de cores, na qual o item mais escuro representa o resultado mais impactante com base na predição esperada. A base do AdventureWorks é de uma empresa fictícia de venda de acessórios para bicicletas, então, olhando esta árvore, é possível predizer que os melhores clientes para realizar possíveis compras futuras seguindo o fluxo com as cores mais escuras.

Agora é com vocês, apliquem estas técnicas de mineração de dados em seu ambiente e façam com que seus resultados sejam mais acertivos!

0  

Data Mining do SQL Server 2014 no Excel 2013

Fala galera, uma forma simples para se começar a trabalhar com mineração de dados é utilizar o Add-In de Data Mining para Excel conectado ao SQL Server. Para isso, basta baixar o Add-In, fazer a instalação e apontar para o servidor do SQL Server Analysis Services que você tenha acesso.

Para baixar o Add-In, acesse este link e escolha a versão x86 ou x64. No meu caso foi o x64.

Depois de fazer a instalação, o Wizard pergunta se quer abrir uma planilha de exemplos. Fique a vontade para abrir e ver o que tem para “brincar” de mineração de dados.

Abrindo esta planilha de exemplo ou não, é necessário vincular o Add-In do Excel com o seu SSAS. Para isso, vá até a Ribbon DATA MINING e clique no botão << No Connection >>.

Uma tela se abre pedindo para conectar no SSAS, clique no botão New e em seguida preencha os dados de autenticação ao seu servidor. Depois de configurado, a conexão aparece na lista da esquerda.

Por fim, o botão da Ribbon que estava com << No Connection >> já está alterado e apontando para o servidor que você configurou.

A partir de agora é possível trabalhar com mineração de dados de dentro do Excel.

1  

Atualizando o SQL Server Data Tools – SSDT – para o Visual Studio 2013 e controlando versionamento de código com TFS

Fala galera, como já havia feito com o SQL Server Data Tools (SSDT) 2012 para o SQL Server 2012 (que pode ser lido aqui), vou explicar como atualizar seu SSDT para a versão 2013 do Visual Studio, e também como colocar seu controle de versão com o Team Explorer 2013. Isso funciona independente do seu SQL Server ser o 2012 ou 2014. O que importa neste momento é a atualização da IDE de desenvolvimento para seus projetos de Business Intelligence.

A primeira coisa a ser feita é baixar o SSDT 2013, que tem por volta de 1GB de tamanho. Faça o download a partir desta página. Não se preocupe de aparecer X86 no nome, ele suporta tanto o x86 quanto o x64. Depois de terminado do Download, abra o arquivo .EXE e informe onde ele será descompactado. Quando terminar de decompactar, procure o Setup dentro da pasta. Abra e siga os passos de instalação.

 

Depois de instalado o SQL Server Data Tools 2013, é hora de baixar e instalar o Team Explorer, que possui 2 arquivos: um de 130MB e outro de 900Kb. Baixe ambos. Faça o download a partir desta página. Depois de baixar os arquivos, instale a partir do arquivo de 900Kb.

 

Quando terminar a instalação, abra o SSDT 2013 e vá até o menu TEAM e em seguida, Connect to Team Foundation Server…

 

Forneça os dados de autenticação, e a partir deste momento, tenha todos seus projetos disponíveis para baixar e trabalhar novamente.

 

Pronto, com estes poucos passos você pode ter seu ambiente atualizado e seu código versionado!

0  

Quero trabalhar com Big Data, como faço?

Fala galera, nestas últimas semanas mais algumas pessoas me perguntaram como fazer para aprender mais sobre Big Data e como entrar nesse ramo de trabalho aqui no Brasil. Bom, venho estudando e lendo sobre Big Data desde antes de entrar no time de especialistas da Microsoft em 2012, e continuo estudando esta área no Portal Minha Vida desde que saí da Microsoft. Pode-se dizer que consigo ter uma visão um pouco mais ampla do assunto hoje, do que quando ví o Hadoop no Keynote do SQL PASS Summit 2011 em Seattle/WA.

Por sorte, e interesse, acompanhei diversos eventos relacionados à Big Data dos principais players globais do mercado, tanto presencialmente quanto online, fosse no Brasil ou lá fora.

Infelizmente no Brasil a maioria dos eventos sobre esta ciência ainda apresentam soluções para se trabalhar quase que exclusivamente com Social Media, fica a impressão que Big Data se aplica somente à esta área e isso é uma grande falácia! Ignorar a aplicação em outros segmentos como Saúde, Transporte, Financeiro, Educação é manter uma visão rasa e superficial sobre o assunto. Inclusive falei sobre isso no evento de lançamento do SQL Server 2014, na Microsoft, e você pode ver os slides abaixo:

 

 

Uma coisa importante é entender o funcionamento e aplicabilidade desta tecnologia para seu cenário. Nem sempre uma solução implementada para um concorrente da sua empresa será aplicada fielmente à sua. Por isso o entendimento é bem importante.

As tecnicas que serão usadas para processar os dados, cruzar as informações, e analisar os resultados devem ser exploradas e ver o que melhor se aplica à sua necessidade. Usar o Hadoop com Hive e Pig pode resolver um problema, em uma outra necessidade pode-se adicionar o Mahout para trabalhar com aprendizado de máquina. Uma outra solução seria utilizar o Prediction IO ou até o Azure Machine Learning (quando for lançado, no próximo mês). As análises podem ser feitas no Excel pela facilidade que os usuários possuem em operá-lo. Mas também pode ser necessário ir para uma plataforma mais especializada para Data Science como o MatLab ou então para foco nos profissionais de estatística como o R. Enfim, cada aplicação deve ser entendida como um cenário novo, completo e complexo, e sua resolução precisa ser entendida como tal.

Caso queira ver um pouco o cenário sobre ferramentas Open Source para se trabalhar com Hadoop, assista esse vídeo sobre conceitos e ferramentas:

Conceitos e Ferramentas de Big Data

 

Outra necessidade que é bastante buscada para os profissionais que trabalham ou querem trabalhar com Big Data é o que os americanos chamam de Data Scientist. Este é o profissional que conseguirá analisar os dados estruturados e não estruturados, através de modelos estatísticos e matemáticos, para separar o “sinal” (informação útil) do “ruído” (informação desnecessária, ou sujeira). Este profissional é o novo talismã das empresas que querem minerar grandes volumes de dados.

Para se aprofundar nestes assuntos, existem alguns cursos online, de universidades e institutos renomados ao redor do mundo, que podem lhe dar mais uma base sólida e detalhada sobre este novo paradigma (várias pessoas usam esse termo, achei válido usar aqui também. rss) da área de exploração de dados. Veja uma lista de alguns deles:

A Caixa de Ferramentas do Cientista de Dados: https://www.coursera.org/course/datascitoolbox

Inteligência Web e Big Data: https://www.coursera.org/course/bigdata

Conceitos chaves da Análise de Dados: https://www.coursera.org/course/datan

Gerenciamento de Dados para Pesquisa Clínica: https://www.coursera.org/course/datamanagement

Análise de Dados: https://www.coursera.org/course/dataanalysis

Estatística. Compreendendo os Dados: https://www.coursera.org/course/introstats

Análise Exploratória de Dados: https://www.coursera.org/course/exdata

Obtenção Limpeza de Dados: https://www.coursera.org/course/getdata

Métodos computacionais para Análise de Dados: https://www.coursera.org/course/compmethods

Caso tenham alguma dúvida, ou sugestão sobre o assunto, fique a vontade para comentar aqui no blog…

Bons estudos e análises!!!

2