Azure Machine Learning – Introdução – Parte 3

Fala galera, esta é a terceira e última parte de introdução ao Azure Machine Learning. Fiz de propósito nesta ordem, criando o ambiente somente agora, para você saber onde está se metendo antes de sair criando as coisas e só depois descobrir que não era o que precisava. Mas agora que você já viu que existem algumas categorias de algoritmos para trabalhar com Data Mining e Inteligência Artificial e tem ideia de como eles podem ajudar na solução dos seus problemas, nós vamos agora criar o ambiente para trabalhar em nossos experimentos, e partir para os próximos posts que não serão mais introdutórios!

A primeira coisa a se fazer é acessar o Portal do Azure e criar um novo serviço pro Machine Learning. Importante garantir que o nome da Workspace e do Storage sejam válidos, isso pode ser verificado com o check verde ao lado do nome que você criou. No meu caso é BlogNogareML pro workspace e blognogareml (tudo minusculo) pro storage.

Depois de criado o ambiente, uma entrada do Azure Machine Learning fica disponível a partir do menu da esquerda. Acesse este menu e veja o item que você acabou de criar, no meu caso o BlogNogareML. Ao clicar neste item, vá até o Open in Studio, para chegar até a IDE web-based, onde é possível criar as bases de dados particulares e realizar os experimentos.

Uma nova aba no seu navegador é criada e o ML Studio é aberto. Quando for a primeira vez, um vídeo de introdução será apresentado. Após assistir e fechar o vídeo, você pode começar a criar seus experimentos. Reparem que existem duas opções no menu, uma pra criar DataSet e outra pra criar Experiment. Quando a gente quer utilizar um DataSet que precisa ser feito upload pro Machine Learning, deve-se usar a opção DataSet. Mais pra frente, em outro post, vamos mostrar como faz pra usar uma base de dados através de upload neste menu.

E pra criar o experimento em si, criando e conectando as tarefas em uma ordem logica de execução, você vai utilizar o Experiment.

Por enquanto, crie um experimento em branco clicando em Experiment >> Blank Experiment. Ao clicar neste item, a tela com o menu da esquerda contendo as tarefas padrões do Azure Machine Learning e a área central de desenvolvimento é apresentada, permitindo que seja iniciado o desenvolvimento.

Esta é a tela que será utilizada para trabalhar com os Experimentos, WebServices, Testes, Execuções Locais, etc. Você informa o nome, arrasta os componentes no melhor estilo Drag ‘n’ Drop e com isso cria seus trabalhos. Vamos entender as funcionalidades e amplas possibilidades do que conseguiremos trabalhar com esta ferramenta nos próximos textos. Não deixe de acompanhar!

0  

Como foi o Black Friday pro meu livro de BI

Fala galera, este ano fiz uma promoção de Black Friday durante a semana inteira, e não só a sexta, para vender o meu livro de BI. Quero deixar o meu MUITO OBRIGADO à todos os visitantes dos 18 estados que vieram ao site www.livrosdonogare.com.br durante esta semana de #BlackFriday. Vocês fizeram a diferença comprando mais de 90 livros!

Só pra vocês terem uma ideia como foram os números desta campanha de vendas… Utilizei alguns meios de divulgação como disparo de e-mail para quem me autorizou a fazer isso algum dia, publicidade no meu blog (essa imagem da capa do livro aqui do lado direito), divulgação para meus amigos em mídias sociais como Twitter e Facebook, e por fim uma campanha paga no Facebook.

Disparadamente eu me comunico melhor com vocês através de e-mails autorizados, reparem que 55% dos acessos ao site do livro vieram através deste canal. Depois, com 14% vem a parte na qual o acesso foi através de divulgação gratuita no Facebook. A publicidade paga foi responsável por apenas 7% das visitas, só um pouco a mais que os acessos através do clique na capa do livro aqui no blog e quem encontrou o site do livro através do Google. O Twitter ficou lá embaixo, com apenas 1% de acesso.

Quero estender este MUITO OBRIGADO a todos que já compraram o livro, não somente a quem o fez esta semana. Vocês acreditaram neste trabalho e me ajudaram a realizar este sonho.

1  

Azure Machine Learning – Introdução – Parte 2

Fala galera, os modelos algoritmos que temos hoje, 28/Nov/2014, disponíveis no Azure Machine Learning estão separados em três categorias, que podem ser encontrados no menu Machine Learning >> Initialize Model, conforme esta lista:

Classification

  • Multiclass Decision Forest
  • Multiclass Decision Jungle
  • Multiclass Logistic Regression
  • Multiclass Neural Network
  • One-vs-All Multiclass
  • Two-Class Average Perceptron
  • Two-Class Bayes Point Machine
  • Two-Class Boosted Decision Tree
  • Two-Class Decision Forest
  • Two-Class Decision Jungle
  • Two-Class Logistic Regression
  • Two-Class Neural Network
  • Two-Class Support Vector Machine

Clustering

  • K-Means Clustering

Regression

  • Bayesian Linear Regression
  • Boosted Decision Tree Regression
  • Decision Forest Regression
  • Linear Regression
  • Neural Network Regression
  • Ordinal Regression
  • Poisson Regression

Estes modelos de algoritmos são formulações estatísticas e/ou matemáticas conhecidas e amplamente estudadas no meio acadêmico, aqui no Azure Machine Learning eles já possuem uma parametrização genérica para que funcione com a maioria dos casos. Nas nossas análises de dados, quando limpamos e disponibilizamos os dados para serem treinados pelo modelo, deve-se conectar o modelo escolhido de acordo com a necessidade de resolução daquele problema na tarefa de treino, que recebe também a origem dos dados. É importante ressaltar que cada um destes modelos de algoritmos apresentados possuem características específicas que resolvem problemas semelhantes, mas que a parametrização individual pode resolver melhor um problema através da escolha de um modelo ou de outro.

Para exemplificar, imagine um cenário que avalia se um cadastro pode ser fraudulento ou não. Por mais que se use um modelo da categoria Classification para encontrar uma resposta sobre este problema, ele pode não ser exatamente o melhor modelo para encontrar esta resposta. Isso é analisado com base no resultado da Curva ROC (Receiver Operator Characteristics Curve) que realiza a comparação entre a sensibilidade e a especificidade do teste quantitativo basedo nos valores contínuos que foram treinados pelo algoritmo. As vezes, comparando com outros modelos desta mesma categoria a gente descobre que para classificar o cadastro como um possível problema de fraude o modelo de algoritmo X é melhor que o Y, mesmo que o modelo Y tenha sido o melhor algoritmo para classificar os mesmos dados de treino para saber se o cadastro é um bom pagador de dívidas. Este cadastro fictício diz que ele é um cadastro passível de trazer problemas com fraudes, mas que é um bom pagador. Meio controvérsio, mas é só pra exemplificar :)

Esta é a curva ROC, os melhores resultados dela são os que enquadram o maior conjunto possível de amostras (dados) na AUC (Area Under the Curve).

Veja muitos mais detalhes do ROC na wikipedia, clicando aqui.

O terceiro e último texto sobre Introdução ao Azure Machine Learning, nós vamos acessar o ambiente e aprender a criar Experimentos e Base de Dados. Nos próximos, que já sairão da introdução, vamos explicar alguns algoritmos e trabalhar com exemplos práticos. Não deixe de acompanhar!

0  

Azure Machine Learning – Introdução – Parte 1

Fala galera, uma nova feature, lançada a poucos meses em preview e que já está disponível publicamente na plataforma Azure é o Microsoft
Azure Machine Learning. Uma funcionalidade para nós trabalharmos com Inteligência Artificial através de Mineração de Dados e que permite entender melhor os nossos dados e ambientes, e tomar melhores decisões pro futuro.

Neste momento, 25/Nov/2014, ainda é em uma versão de testes com algumas coisas faltando. Uma coisa boa desta plataforma é e que possui um roadmap de lançamento de novas funcionalidades que acompanha todos os outros produtos da plataforma Azure, isso significa que temos atualizações de recursos a cada 3 ou 6 meses.

Hoje a plataforma trabalha com 3 categorias de algoritmos nativos:

Classification: Algoritmos de Classificação permitem que análises sejam feitas na base de treino e teste e seu valor preditivo (aquele que estamos buscando) possa ser encontrado de forma discreta. Um resultado discreto significa apresentar um item baseado em um sub-conjunto conhecido de valores possíveis. Normalmente são poucos valores. Os mais comuns de se encontrar no mercado são classificadores binários, que “predizem” se a resposta é SIM ou NÃO, e apresenta o grau do índice de acuracidade (confiança) para aquela resposta que foi apresentada.

Clustering: Algoritmos de Clustering (ou Segmentação) fazem o processo de particionar os dados da amostra de uma população em vários sub-conjuntos, deixando as ocorrências mais parecidas umas perto das outras. Diferente dos algoritmos de classificação na qual as classes são conhecidas, em algoritmos de Segmentação as ocorrências (ou linhas, ou registros [chame como achar melhor]) são agrupados pelas suas semelhanças. Imaginando a aplicação deste algoritmo em um universo de pessoas, é possível segmentar estes indivíduos por Região que moram, Região que trabalham, Sexo, Faixa de Idade, Faixa de Renda, etc. Qualquer dado discreto conhecido pode ser usado para fazer a segmentação da população e a partir desta segmentação é possível criar várias outras análises. Inclusive mudando de algoritmo para se adequar melhor à sua necessidade. Outra aplicação pra algoritmos de Clustering é entender o comportamento sequencial dos indivíduos, analisando os passos que foram feitos para realizar uma ação em algum lugar. Com estes passos é possível agrupar os indivíduos em sub-grupos, ficando em cada segmentação os indivíduos que percorreram os mesmos passos para realizar aquela determinada ação.

Regression: Algoritmos de Regressões permitem que as análises na base de treino e testes retornem valores contínuos para aquele resultado preditivo. Por valores contínuos entendemos que são valores “infinitos”, podendo ser qualquer valor possível. Uma aplicação deste algoritmo pode ser uma análise pra saber quanto custa uma casa baseada na metragem e região. Uma análise desta pode dar valores entre 1 Dolar (como as casas em Detroit depois do problema da bolha imobiliária [veja aqui: http://www.nydailynews.com/life-style/real-estate/1-buy-house-detroit-article-1.1415014 ]) e 380.000.000 Dolares como esta cobertura em Mônaco (http://gallivantguide.com/monaco-penthouse-387m-worlds-most-expensive/2098/). Este intervalo de possibilidades é bem grande, e uma aplicação que faça este tipo de análise pode ter uma carga de processamento e consumo de memória bem grande. O uso de algoritmos para estas aplicações, facilitam muito o nosso trabalho!

Eu particularmente senti bastante falta de algoritmos da categoria Association, geralmente utilizados para Basket Market Analysis e que permitem encontrar correlação entre itens ou produtos que estão recebendo alguma interação e podem ser associados uns aos outros. Interação esta que pode ser simplesmente verificar os detalhes do produto, podendo ser até a ação de adicionar o produto no carrinho de compras. Cada interação desta apresenta um, ou mais, produtos associados à aquele que esta recebendo esta interação. Esta associação é baseada em fatos do passado, onde um produto foi consumido com o outro. Isso significa que a predição pode mudar com o decorrer do tempo, quando o comportamento e a correlação entre estes produtos passam a mudar por qualquer motivo que seja.

Em contra partida pode-se executar scripts em R dentro do Microsoft Azure Machine Learning. Só pra contextualizar, R é uma linguagem de programação focada em análise de dados e estatística que foi criada na década de 70. Esta linguagem é amplamente utilizada por estatísticos e matemáticos ao redor do mundo, e agora, com a nova profissão de Cientista de Dados, existe muito mais gente estudando e aprendendo R. Nós podemos criar scripts em R e consumir mais de 340 pacotes de funcionalidades existentes no CRAN (Comprehensive R Archive Networkhttp://cran.r-project.org/) diretamente no Microsoft Azure Machine Learning. Isso ampliou bastante a quantidade de tarefas que é possível fazer com o Machine Learning.

Está no meu pipeline escrever mais alguns posts sobre o Microsoft Azure Machine Learning, criando alguns exemplos e trabalhando com alguns algoritmos. Fiquem ligados!

0  

Usando GIT e GITHUB pra versionamento e colaboração de código T-SQL

Fala galera, uma coisa que é bastante comum de acontecer é escrever um código T-SQL pra resolver um problema e ficar alterando este código no decorrer do tempo. Muita gente acaba versionando o código duplicando arquivos dentro dos diretórios e modificando os nomes com V1, V2, V3, …, V508. Isso é péssimo, a gente nunca sabe qual arquivo estava o código correto que usamos no passado e que foi modificado pra versão atual do que estamos fazendo, sem contar também que pode-se ter problemas de apagar o arquivo localmente, ou pior, o disco da sua máquina de desenvolvimento que contém estes códigos pode dar problema e você perde tudo o que fez.

Uma solução para estas situações é usar algum tipo de versionamento de códigos, já mostrei aqui como usar o TFS pra versionar seus projetos no servidor. Hoje vou mostrar como usar o GIT e o GITHUB pra versionar os códigos T-SQL de seus scripts. O versionamento além de permitir que os comentários das publicações do código sejam feitos, também é possível compartilhar estes projetos com outros usuários e ter uma colaboração no seu código. Podem ter colegas trabalhando no mesmo código e será possível ver as alterações que cada um fez no arquivo.

Bom, a primeira coisa a se fazer é criar uma conta no GITHUB, para isso, acesse o site http://github.com e preencha seu cadastro. O Github será o seu repositório e controlador na internet. É seguro e muito utilizado por grandes empresas, então se você tem algum medo com relação à segurança, pode ficar um pouco mais tranquilo.

Existem dois tipos de contas, uma gratuita (e aberta) e uma paga (e privada). Quando você escolhe que sua conta será aberta (gratuita) todos os usuários podem ter acesso à seus códigos, inclusive podendo copiar seus scripts mesmo sem precisar pedir autorização. Já quando é uma conta privada (paga) você gerencia os acessos, permitindo que somente as pessoas X, Y ou Z possam acessar a pasta pra ver os arquivos, podem ler os documentos ou podem ter acesso à fazer modificações. Isso vai ficar de acordo com sua necessidade. No meu caso, possuo na mesma conta alguns projetos gratuitos e outros pagos. Os gratuitos vocês conseguem enxergar, acessando o link: https://github.com/diegonogare

Após criar sua conta no Github, você precisa baixar e instalar o GIT. Acesse http://git-scm.com/download/win e faça o download do Git Bash, que é uma aplicação console (em linha de comando) que fará a comunicação com sua conta no Github. É através do Bash que você se conecta a um repositório, pega a ultima versão do arquivo, faz upload do seu código para o repositório, consegue encontrar as versões dos códigos que foram publicados, entre outras atividades. É através dele que você gerencia toda a comunicação com o servidor de código.

Existem bastate linhas de código pra você interagir com o GITHUB através do Git. Veja abaixo a sequência de códigos mais comuns, e sua aplicabilidade:

  1. Criar o repositório no Github que receberá seus códigos;
  2. Conectar a pasta local com o repositório do servidor;
  3. Acessar a pasta onde tem seu arquivo que deseja criar o versionamento;
  4. Verificar o status dos arquivos existentes nesta pasta (opicional);
  5. Adicionar o arquivo desejado (ou todos) para dentro do GIT, ainda localmente;
  6. Fazer o commit do arquivo, adicionando os comentários que ficam atrelados aos arquivos;
  7. Fazer o envio do arquivo pro servidor do GITHUB.

Para exemplificar o processo, vou criar uma pasta com o nome de SCRIPT dentro do C:\TEMP no meu computador. Nesta pasta vou criar um arquivo chamado BlogDoNogare.sql que vai receber um comando qualquer, vou subir este código pro Github, depois vou alterar o código localmente e subir novamente pro Github. Por fim, vamos encontrar o código no portal web e visualizar o versionamento.

 

Passo 1 – Criar a pasta no Github que receberá seus códigos. Para isso, acesse o Github após seu registro e clique em criar novo repositório. Este repositório, na literatura, é chamado só de “Rep”.

Passo 2 – Após criar o diretório no Github, na página seguinte da criação aparecem alguns códigos. Mantenha essa página aberta ou copie estes códigos para um bloco de notas, vamos usar em breve.

Passo 3 – Agora abra o Git Bash pra conectar a pasta local com o servidor.

Passo 3.1 – Vá até a pasta que receberá seus arquivos. No meu caso, C:\Temp\Script. O comando LS retorna a lista de objetos dentro da pasta.

Passo 3.2 – Use o comando Git Init pra criar uma estrutura interna nesta pasta, e permitir que o Git (local) faça o gerenciamento desta pasta e sub-pastas.

Passo 3.3 – Coloque o primeiro arquivo dentro da pasta. No meu caso, é só um arquivo chamado BlogDoNogare.sql com o código SELECT @@VERSION. Faça isso com o próprio SQL Server Management Studio.

Passo 3.4 – Adicionar o arquivo, ou conjunto de arquivos, para o Git (local) contabilizar e versionar. O comando GIT ADD faz isso, se você especificar o nome do arquivo, só este arquivo é adicionado ao controle de versão neste momento, se você especificar . [ponto], todos os arquivos que foram alterados serão marcados com a flag pra versionar. No meu caso, espeficiquei o nome, digitando GIT ADD BlogDoNogare.sql

Passo 3.5 – Opicionalmente você pode utilizar o comando Git Status pra coletar mais detalhes do que tem de alteração na pasta. Existem 3 cores que os nomes dos arquivos podem aparecer. Vermelho significa que o arquivo está alterado e ainda não foi versionado esta alteração. Amarelo significa que foi alterado e está versionado, mas ainda não foi pro servidor. Verde significa que foi versionado e está no servidor. Depois que você enviar pro servidor e alterar o arquivo localmente, ele volta a ficar vermelho e segue esta ordem de cores novamente. Novos arquivos também ficam verdes, mesmo sem ter sido enviado pro servidor.

Passo 3.6 – É momento de marcar os arquivos que foram adicionados neste versionamento para enviar ao servidor. O comando Git Commit –m “sua_mensagem_aqui” coloca esta comentário que fica entre aspas para todos os objetos que serão enviados pro servidor. Possibilitando que este comentário seja visto no Github. No meu caso, coloquei o comentário “Retorna a versão do SQL Server”.

Passo 3.7 – Lembra daqueles códigos que a gente copiou da página do Github logo após a criação do repositório? Então, aqui é hora de usar a primeira linha daquele código. Ela é responsável por conectar esta pasta com o servidor. Após inserir esta linha, vai lhe pedir o usuário e senha, é o mesmo que você usou pra se registrar no Github. Esta ligação é feita uma única vez, e geralmente é na primeira vez. Depois, quando você precisar mudar o repositório de destino, você precisa rodar novamente estes códigos, mas é só quando muda o destino lá no servidor.

Passo 3.8 – Agora já temos o diretório local criado, o arquivo marcado para ser controlado, e a pasta conectada com o servidor. O próximo e ultimo passo é enviar o arquivo fazendo um push. Para fazer isso, basta usar aquele segundo comando que foi apresentado na página do Github.

Passo 3.9 – Pronto, seu arquivo está no servidor. Se você voltar ao Github e atualizar a página, já será possível encontrar seu arquivo publicado e com o comentário que você criou.

Vamos alterar o arquivo local, e ver o comportamento dele no servidor?

Passo 4 – Altere o código do seu script de SELECT @@VERSION para SELECT @@SERVERNAME e salve o arquivo.

Passo 4.1 – Utilizei o comando Git Status para ver o que aconteceu com seus arquivos que estão com a flag pra controle de versão. Veja que agora este arquivo está com a cor vermelha.

Passo 4.2 – Novamente vamos marcar o arquivo para versionamento, isso vai dizer que o código que está no arquivo agora deve ser enviado pro servidor do Github. Faça isso usando o comando Git Add. Lembra que da primeira vez foi usado o nome do arquivo? Então, agora usei o . [ponto] pra adicionar todos os arquivos. Como só existe um arquivo na pasta, só ele será marcado.

Passo 4.3 – O passo seguinte é realizar o commit dos arquivos. Usando o código Git Commit –m “Retorna o nome do servidor”, eu informo o comentário relativo à alteração que tem no arquivo.

Passo 4.5 – Pra finalizar, é necessario enviar os arquivos que foram “commitados” para o servidor. Faça isso usando o Git Push. Como já foi feita a primeira ligação entre a pasta e o servidor, pode usar somente o Git Push sem informar que é na branch master. A não ser que você tenha criado uma nova branch. Mas não é nosso caso, estamos trabalhando no padrão, que é a Master. Mais uma vez você precisa informar o Usuário e a Senha do Github.

Pronto, agora seu arquivo no Github já está alterado e pode ser visto todo o histório de alterações, tal qual com seu comentário para facilitar a identificação das alterações.

Estes comandos em GIT são bem básicos mas já permitem que seus códigos T-SQL possam ser versionados e você consiga compartilhar isso com outros colaboradores. Lembre-se de que existem duas contas do GIT, uma gratuita e uma paga. Esta que criamos aqui é gratuita, mas para os códigos da sua empresa, é altamente recomendado que seja uma paga (pra evitar vazamento dos códigos). A não ser que você queria que a galera tenha acesso à seus códigos :)

Para aprender com muito mais detalhes a trabalhar com GIT + Github, vale dar uma olhada nestes cursos:

[Pago – Em português] Git e Gthub para desenvolvedores .NET

[Gratuito – Em inglês] GIT REAL

2