Pesquisar este blog

segunda-feira, 25 de março de 2019

CANCER DE MAMA E ORANGE CANVAS


Neste post vamos aprender como montar um modelo para predição de cancer de mama de forma fácil e rápida e com uma ferramente totalmente visual.


Fique conosco.
Não estamos falando do Jupyter notebook mas sim do Orange Canvas que de forma rápida e visual conseguimos montar um modelo para predição de cancer de mama baseado em um dataset disponibilizado no Kagle, para quem não conhece não deixe de conferir no link a seguir: Kagle: Your Home for Data Science
O Kagle é uma plataforma para ciência de dados, incluindo concursos com prêmios pagos e muito mais.
Este post não tem a intenção de ensinar data science ou estatística ou matemática mas sim mostrar a você uma ferramenta para ajudar em seus estudos ou trabalhos no ramo relacionados.
ATENÇÃO: Os estudos apresentados aqui ou nenhum outro tutorial deve ser utilizado para diagnósticos médicos reais. Procure sempre seu médico.

Instalando e preparando o ambiente

Mais detalhes sobre a ferramenta você pode conseguir neste post : Orange Canvas: Ciência de dados e laranjas.
Aqui não vamos focar muito na instalação pois é realmente muito simples.
Download do dataset necessário para este estudo: Download Dataset
Link para o Git com tudo pronto para você brincar e tirar dúvidas: Github

Criando nosso canvas

O orange canvas é baseado em arrastar e soltar componentes então se achar mais rápido já pode arrastar os componentes que vamos mostrar e depois iremos fazer a ligação entre cada um deles e sua configuração.
Precisaremos no total de treze componentes, chamados no Orange Canvas de Widgets.

Por enquanto não se preocupe em como configurar cada um deles, vamos mostrar durante o post, apenas arraste e solte os widgets no canvas do Orange.
Não se esqueça que cada widget é separado por categoria, por exemplo, os widgets File e Data Table está dentro de Data,  Logistic Regression, Random Forest e SVM dentro de Model, Predictions, Test & Score e Confusion Matrix dentro de Evaluate e por último k-Means dentro de Unsupervised e Distribution e Scatter Plot dentro de Visualize.

Configurando a entrada dos dados

No widget File, vamos clicar duas vezes, não importa qual deles, visto que você poderá renomear para deixar mais intuitivo o seu trabalho.
Em File – File – aponte para o arquivo breast-cancer.csv e em Columns (Double click to edit) vamos realizar algumas configurações.
id – Role = skip (acredito que o id não interfira em nenhum tipo de diagnóstico então não vamos utilizá-lo)
diagnosis – categorical – target (devemos marcar este atributo como target para os testes de predição)
Feature 1 – a última coluna vamos deixar marcada como skip, pois ela é apenas uma coluna que veio errada no csv pois a última possui uma vírgula, que acredito, não deveria.
A configuração do seu widget File dever estar da seguinte maneira:

Vamos visualizar os dados ligando o File ao widget Data Table



Criando o arquivo de test:

Bem pessoal, aqui o processo foi um tanto que manual pois eu quis na verdade criar um arquivo novo e escolhi 20% do arquivo original para ser nosso arquivo de testes.
Como gerei o arquivo de testes ?
Abri o arquivo original via Microsoft Excel, calculei o que seria mais ou menos 20% do total  de linhas e exclui o restante. O importante aqui é mudar o valor da coluna diagnosis para um character qualquer, eu escolhi o interrogação pois serão os dados que iremos predizer com nossos modelos. Fique a vontade para extrair essa informação via python ou de qualquer outra forma que achar melhor.

Classificando os diagnósticos

Agora vamos deixar mais interessante e entender o poder do Orange Canvas.
Utilizando o widget k-Means e um Scatter Plot vamos ver se já somos capazes de classificar entre os dois diagnósticos: maligno e benigno:
Aqui faremos a ligação entre nosso widget File (que aponta para o arquivo original e completo, não o de teste) e o k-Means e Scatter Plot

Clique duas vezes em Scatter Plot e veja o resultado.


Note que B = benigno (azul) e M = maligno (vermelho)
Fomos capazes de separar de forma rápida e fácil duas classes de dados.

Testando modelos

Uma característica interessante no Orange é poder testar a acurácia dos modelos usando diferentes técnicas para o score. Aqui vamos utilizar dois deles: Test & Score e Confusion Matrix
Então agora deixando nosso projeto um pouco mais completo vamos fazer a ligação entre os widgets:

Para cada componente você pode configurar como cada algoritmo irá tratar os dados, neste caso eu deixei o padrão do Orange que me pareceu bastante assertivo.
Lembre-se que por trás das cortinas o Orange utiliza o sci-kit learn e algumas outras bibliotecas encontradas também na distribuição do Anaconda.
Clique duas vezes sobre o Test & Score para ver os resultados obtidos:

Percebemos que em nosso conjunto de testes o algoritmo que obteve o melhor resultado foi o SVM.
Agora vamos ver o resultado em nosso widget Confusion Matrix:

Predição

Agora chegou o momento onde vamos fazer a ligação do nosso arquivo de testes com um outro widget chamado Predictions e enviar os resultados para um Data Table
Veja como ligar os widgets abaixo:
Clique duas vezes sobre o widget Predictions
Note que em alguns casos e dependendo do algoritmo utilizado ele acertou com uma acurácia de até 100%. Para visualizar as probabilidades de acerto para cada um deixe marcado Predicted probabilities for:
Os resultados pode ser gravados em

Conclusão

O Orange Canvas se apresenta uma ferramenta muito eficiente para realizar um trabalho de Data Science e pode servir para diversas propostas e o que é melhor, é gratuito.
Podemos melhorar o modelo de diversas formas e com diferentes técnicas.
Espero que tenham gostado do post e aprendido um pouco mais sobre esta incrível ferramenta.
Até o próximo.

CONSTRUINDO UM PC PARA IA E DATA SCIENCE

Aqui está o seu guia para montar seu computador pessoal para utilizar com Inteligência Artificial e Ciência de dados.
Há muitos guias por aí falando sobre deep learning. E muitos também sobre Data Science e alguns aqui e outros lá citando aprendizado supervisionado. Porém muito poucos abordando todos eles e principalmente qual equipamento utilizar.
E por isso este guia foi escrito para pessoas que de alguma forma estão interessadas em todos os assuntos desta área de conhecimento.

Como otimizamos nossos projetos de IA e Ciência de dados ?

Com o tão falado deep learning, todos têm abordado a importância das GPUs. É verdade, as GPUs são o melhor motor por trás do deep learning e são totalmente necessárias para realizar este tipo de trabalho.
Infelizmente muitas pessoas têm deixado de lado a importância da CPU, memória RAM, placas-mãe e formas de armazenamento. Não é de todo ruim se você está focado apenas neste tipo de trabalho mas caso se interesse por outros campos também você precisa considerar os outros componentes também.
Neste guia nós vamos aprender sobre como montar um computador pessoal que possa trabalhar bem com deep learning, data science, aprendizado reforçado e inteligência artifical. Não queremos um pc tão caro mas também não queremos economizar. Estamos tendo como alvo aqui a otimização. Utilizando a quantidade correta de energia, computação e a melhor sala para manter tudo isso e também não queremos ir á falência financeira 😉
Também vamos sugerir items para as pessoas que estão dispostas a gastar um pouco mais por um upgrade e também para aqueles que querem economizar para algumas peças.
Então sem mais delongas vamos ao nosso guia de construção.

GPU

Vamos começar com a mais falada nos dias atuais: A GPU. É onde a maior parte do trabalho pesado será processado em seus modelos para deep learning.
Na maior parte do tempo em que você estará trabalhando com imagens, reconhecimento de fala ou texto provavelmente irá querer utilizar uma deep networking que neste caso significa: GPU.
Uma NVIDIA GTX 1080Ti é sua melhor aposta neste momento, no Brasil você pode conseguir uma por um valor entre R$ 2.500,00 até R$ 4.000,00 dependendo da quantidade de memória. Uma 1080Ti pode possuir 11GB de vRAM e em processamento de 1600-1700mHz.

Muitos defendem a utilização de uma Titan XP por ter 12GB de vRAM porém é um equipamento mais caro e se você quer fugir de gastar muito opte por uma 1080Ti pois a quantidade extra de vRAM dependendo de seu trabalho não será totalmente utilizada.
A NVIDIA também lançou recententemente o modelo 2080Ti mas como você deve imaginar para o nosso mercado ainda está a um preço impraticável para algumas pessoas.
Outra opção que dá conta do recado pode ser a GTX 1080 que oferece um processamento entre 1650~1900mHz com 8GB de vRAM.

CPU

A maioria das pessoas dizem que uma boa GPU da conta do recado quando você está trabalhando com deep learning. Mas quando o assunto é aprendizado supervisionado e técnicas de data science em geral a maior parte do processamento ocorre na CPU.
Uma excelente escolha seria um i7-8700k. Este possui 6 cores e 12 threads sendo ótimo para o pré-processamento paralelo em data science. A base de clock é de 3.70GHz e pode ser utilizado em overclock que pode chegar a até 4.70GHz.
Outra ótima opção seria um Xeon pois o mesmo também possui vários cores e altamente recomendado para processamento paralelo, mas se prepare para desembolsar muito mais dinheiro do que talvez você esteja disposto.
Caso queira economizar um pouco então vamos para o i5-8600k com 6 cores / 6 threads e de 3.6GHz a 4.3GHz de processamento. Um custo benefício excelente.

RAM

Outro item que pode causar confusão é a tão falada memória RAM.
Para a comunidade do deep learning você irá ouvir que precisa de “2 vezes a quantidade que você possui em sua GPU”, já para a comunidade de data science você irá se deparar com a frase: “quanto mais memória melhor”.
Porém vamos defender que 32Gb já é o suficiente. Você não precisa carregar um dataset de uma vez para realizar análises e ainda que tenha essa necessidade existem técnicas para relizar um split e ir armazenando os resultados para cada carga.
Mas caso tenha dinheiro sobrando então não lhe fará nenhum mau adquirir 64GB ou se realmente quer ir um pouco além e ter a máquina mais potente para mostrar para seus amigos então vamos escalar isso para 128GB ou até 256GB.
Mas a regra aqui é: independente do tamanho de RAM sempre tenha o maior tamanho por módulo.
Por exemplo. Se você tem 32GB então tenha apenas dois módulos idênticos de 16GB e assim por diante.

Placas-mãe

Placas-mãe, motherboards ou mobos como costumam se referir em comunidades de hardware.
Neste item se você escolheu um i7 ou um i5 terá que comprar uma motherboard compatível. Uma boa opção poderia ser a ASUS PRIME Z370-A. Esta possui 4 slots de RAM. Se você possuir 32GB RAM em 2 módulos de 16GB para expandir para 64GB bastaria adquirir mais 2x16GB.
Aqui a dica é se atentar a tranferência de dados entre CPU-GPU-MEMÓRIA. Não é o caso dessa explicação aqui pois demandaria muito tempo e uma análise muito, mas muito profunda. Porém apenas como um overview, se você tem apenas uma GPU na velocidade de tranferência de x16 em algumas placas-mãe você pode encontrar um slot de x16 e duas de x8 desta forma tendo mais de uma GPU nunca atingimos a velocidade máxima de transferência entre GPU e CPU por exemplo.
Mas caso você não seja um gamer hard core raramente precisará de mais de uma GPU.

Armazenamento, Gabinete e Fonte de energia

No quesito de armazenamento como na maior parte do tempo você irá mover dados daqui para lá e vice-versa opte por um SSD. Neste caso vale a frase: “quanto maior melhor”.
A questão de fornecimento de energia é muito importante e deve alimentar todo o hardware de forma estável e segura. Para montar sua máquina e ter uma estimativa de consumo em Watts da energia necessária pode utilizar este site: https://pcpartpicker.com
Sempre se mantenha atento também se sua fonte de alimentação possui Watts reais e qual classificação ela ocupa em relação ao ranking de eficiência que são: Bronze, Silver, Gold, Platinum etc. Dê uma olhada neste link: 80 PLUS
Agora pensando em onde você irá parafusar todas essas peças. O gabinete. Igualmente opte por modelos bem ventilados e com fans extras. Aqui também podemos entrar no mérito dos coolers para seu processador. A melhor opção custo-benefício seria utilizar um modelo do tipo water-cooler.
No caso de monitores de vídeo, a não ser que também utilize seu PC para games então não iremos precisar de top monitores com resoluções fora da realidade 🙂
No mercado existem modelos muito bons para manter a durabilidade e conforto mas não necessita de altas resoluções e taxas de atualização em tempo real etc.

Conclusão

No Brasil ainda temos um certo gargalo quando se trata de preços e em alguns items como um SSD por exemplo. Mas na questão de montagem de um computador você pode conseguir muitas peças de qualidade gastando apenas o necessário e viram que também as dicas não são muito complexas envolvendo cálculos e benchmarkings.
Talvez o seu campo de conhecimento não seja focado em hardware mas nesse caso pesquise bastante antes de ser enganado e comprar “gato por lebre”.
Mas por enquanto é isso. Boa sorte com seu equipamento e bom trabalho com sua análise de dados. Até a próxima.

CANCER DE MAMA E ORANGE CANVAS

Neste post vamos aprender como montar um modelo para predição de cancer de mama de forma fácil e rápida e com uma ferramente totalmente v...