Azure Machine Learning – Matriz de Confusão – Parte 4

Fala galera, a primeira publicação do ano é realtiva à Matriz de Confusão, também chamada em algumas literaturas de tabela de contingência. Basicamente esta tabela valida o aprendizado supervisionado, comparando sua base de testes com a base treinada, e indica o quanto de acerto e erro ela teve. Este resultado é o que apresenta a acuracia do seu experimento.

Voltando ao exemplo que fiz para o Codificando Live de Edição #43, onde analisamos uma base de alimentos e definimos alguns itens da amostra como misturas ou não. A matrix aparece aos 20m32s de vídeo onde é rapidamente apresentada a acuracia, logo abaixo da curva ROC, no item Evaluation Model Result.

Se reparar no vídeo, o treino do modelo é feito com 80% da base que fizemos o upload e é mantido 20% para testes (esta divisão acontece na tarefa de split). É com esta base de testes, que já temos conhecimento do resultado, que a matriz vai validar a coluna de predição informada no treino. Ela aplica o que treinou em cima desta base de teste, e compara se o resultado que ela obteve é igual ao que está nos dados originais. Resultando na seguinte estrutura:

Onde alguns valores são absolutos, baseados na classificação binária de erro ou acerto, que são:

True Positive:

Ele entende que as misturas foram analisadas e classificadas como mistura (acertou a mistura). Neste caso, é 16.

False Positive:

Ele entende que as misturas foram analisadas e classificadas como não mistura (errou a mistura, classificando como outro prato). Neste caso, é 5.

True Negative:

Ele entendeu o que não era mistura (era outro prato) e classificou como outro prato (acertou que não era uma mistura). Neste caso, é 54.

False Negative:

Ele entende que os outros pratos (não misturas) foram classificados como mistura (errou o outro prato). Neste caso, é 0.

 

Já outros são baseados em cálculos matemáticos simples, como estes abaixo:

∑ Positivos = Acertos = True Positive + False Negative

∑ Negativos = Erros = False Positive + True Negative

Acuracy (acurácia):

(True Positive + True Negative) / (∑ Positivos + ∑ Negativos)

Com nossos números: (16 + 54) / ((16+0) + (5+54)) => 70 / 75 = 0.9333

Precision (precisão):

(True Positive) / (True Positive + False Positive)

Com nossos números: (16) / (16 + 5) => 16 / 21 = 0.7619

Recall:

True Positive / ∑ Positivos

Com nossos números: 16 / (16+0) => 16 / 16 = 1

F1 Score:

(2* True Positive) / (2* True Positive + False Positive + False Negative)

Com nossos números: (2*16) / (2*16 + 5 + 0) => 32 / 37 = 0.8648

 

Com estes números, e mais a curva ROC e o AUC, é possível validar os valores do seu experimento e saber se está aceitável ou não. Quanto mais exemplos tiver na base de treino, mais precisa será a coluna de predição porque o computador vai aprender com mais exemplos.

0  

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