O Computador ao passar dos anos vem substituindo o trabalho humano, profissionais que tem funções repetitivas e sistemáticas já estão fadados a extinção, neste post vamos tratar do Aprendizado de Maquina.
Podemos usar a Machine Learning para varias tarefas:
Quais clientes vão comprar mesmo Sem oferta?
Quais alunos vão abandonar o curso?
Qual e o diagnostico deste paciente?
Estas são algumas das perguntas que o aprendizado de máquina pode ajudar a responder.
Neste post usaremos os conceitos de aprendizado de maquina para fazer uma classificação.
A classificação e uma ação automática para nossa mente, em um super mercado os produtos estão classificados por semelhanças. Ferramentas,Verduras,Massas e etc. Automaticamente olhamos para um copo de detergente e outro de refrigerante e em milésimos de segundos CLASSIFICAMOS em grupos diferentes, as doenças mesmo tendo sintomas parecidos tem suas características únicas, podemos usar poderosos algorítimos de classificação para apoiar o medico na hora de decidir o futuro do paciente.
Experiência: Criar um sistema que identifique se o paciente tem Dengue, Zica ou Chicungunha
Para dar um diagnostico preciso e necessário observar um conjunto de sintomas específicos, reparem na tabela abaixo:
Tendo como base a tabela de sintomas, vamos ensinar a maquina a prever o diagnostico de novos doentes.
Para ensinar a maquina a dar o diagnostico correto e preciso passar por uma fase de treino, onde precisamos ter alguns pacientes já diagnosticados.
Embora os dados apresentados sejam numéricos, eles na verdades são dados categóricos pois representam categoria de sintomas.Esta base de dados irá fazer a maquina aprender quais sintomas estão presentes em determinada doença e qual a intensidade deste sintoma, repare que a ultima coluna e o diagnostico, quanto maior for a base de dados de aprendizado, maior será a probabilidade da maquina acertar o diagnostico correto ao analisar um novo paciente.
Vamos a pratica:
Usaremos o R
Abaixo nossa base de doentes já diagnosticados para treinar nossa maquina, e uma base de 20 pacientes já diagnosticados.
Usaremos um método chamado naiveBayes() para isso precisamos instalar o pacote E1071, selecione o servidor mais próximo para baixar o pacote e suas dependências :
16 pacientes serão usados para treinar o modelo e 4 para testar se o modelo acerta o diagnóstico.
Preciso agora comparar o diagnostico gerado pelo modelo com o diagnostico real que tenho destes 4 pacientes.
Usamos o método table(), para criar uma tabela que cruza a coluna diagnostico do dataset de teste com a previsão que foi o arquivo criado pela aplicação do modelo, no retângulo verde abaixo vemos as respostas corretas que são encontradas na intercepção das linhas pretas, veja que das 4 amostras o modelo errou apenas uma, onde ele achou que era dengue e na verdade era zica.
Para gerar o percentual de sucesso do modelo, somamos as casas em verde e dividimos pelo somatório da matriz de resposta .
temos então um modelo com taxa 75% de acertos, podemos melhorar esta taxa, mas faremos isso em outro post.
Agora vamos usar o modelo para diagnosticar um novo paciente ainda não conhecido pelo sistema.
Abrimos o arquivo novoPaciente, perceba que ele não possui a coluna diagnostico, usamos o método predict() para aplicar o modelo ao novoPaciente e temos o diagnostico apresentado pelo modelo.
Podemos usar a Machine Learning para varias tarefas:
Quais clientes vão comprar mesmo Sem oferta?
Quais alunos vão abandonar o curso?
Qual e o diagnostico deste paciente?
Estas são algumas das perguntas que o aprendizado de máquina pode ajudar a responder.
Neste post usaremos os conceitos de aprendizado de maquina para fazer uma classificação.
A classificação e uma ação automática para nossa mente, em um super mercado os produtos estão classificados por semelhanças. Ferramentas,Verduras,Massas e etc. Automaticamente olhamos para um copo de detergente e outro de refrigerante e em milésimos de segundos CLASSIFICAMOS em grupos diferentes, as doenças mesmo tendo sintomas parecidos tem suas características únicas, podemos usar poderosos algorítimos de classificação para apoiar o medico na hora de decidir o futuro do paciente.
Experiência: Criar um sistema que identifique se o paciente tem Dengue, Zica ou Chicungunha
Para dar um diagnostico preciso e necessário observar um conjunto de sintomas específicos, reparem na tabela abaixo:
Tendo como base a tabela de sintomas, vamos ensinar a maquina a prever o diagnostico de novos doentes.
Para ensinar a maquina a dar o diagnostico correto e preciso passar por uma fase de treino, onde precisamos ter alguns pacientes já diagnosticados.
Embora os dados apresentados sejam numéricos, eles na verdades são dados categóricos pois representam categoria de sintomas.Esta base de dados irá fazer a maquina aprender quais sintomas estão presentes em determinada doença e qual a intensidade deste sintoma, repare que a ultima coluna e o diagnostico, quanto maior for a base de dados de aprendizado, maior será a probabilidade da maquina acertar o diagnostico correto ao analisar um novo paciente.
Vamos a pratica:
Usaremos o R
Abaixo nossa base de doentes já diagnosticados para treinar nossa maquina, e uma base de 20 pacientes já diagnosticados.
Usaremos um método chamado naiveBayes() para isso precisamos instalar o pacote E1071, selecione o servidor mais próximo para baixar o pacote e suas dependências :
Abaixo carregamos a biblioteca com o método library(),
file.choose() abre uma janela para localizar seu arquivo e armazená-lo na variável dados, header = True informa que seu arquivo tem um cabeçalho.
dim() informa a dimensão do arquivo, 20 linhas e 10 colunas de acordo com a tabela acima.
Para criar um modelo de aprendizagem de maquina através do método de classificação , e preciso pensar em como este modelo será testado, só temos 20 pacientes diagnosticados na planilha, se usarmos nossos 20 pacientes ja diagnosticados para treinar o modelo, não teremos pacientes para testar se o modelo criado realmente e eficaz, normalmente usamos 70% dos dados para treinar a maquina e 30% para testar se o modelo criado esta prevendo corretamente os diagnósticos. Usaremos um vetor para ajudar a fazer esta separação
Usamos o método sample() para criar um vetor chamado amostra.
1° argumento 2: informa que o vetor sera preenchido com os números 1 ou 2
2° argumento 20: tamanho do vetor mesmo numero da quantidade de pacientes da amostra
3° argumento replace = True: os valores informados no 1° argumento poderão se repetir
4° argumento prob=c(0.7,0.3) : probabilidade dos números
serão gerados 20 números entre 1 e 2 , a probabilidade de aparecer 1 e de 70% e 2 e de 30%
Vamos agora separar o arquivo dados com os 20 pacientes em 2 arquivos distintos, um para treinar o modelo de diagnostico e outro para testar sua eficácia e eficiência.
dim() para exibirmos o tamanho dos 2 arquivos criados, dadosTreino e dadosTestes.
Existem alguns métodos para criação de modelos de machine learning , neste tutorial usamos o naiveBayes() para saber mais sobre este método clique aqui.
1° argumento diagnostico: e a coluna que queremos descobri.
2° argumento ~. : são as colunas que serão analisadas para criar o modelo ~ significa que analisarei todas as colunas, aqui podem ser escolhidas somente as colunas que o analista deseja para deixar o modelo mais eficiente.
3° argumento dadosTreino : o arquivo com 16 pacientes já diagnosticados.
Com estes parâmetros o naiveBayes() cria um modelo probabilístico mapeando os dados qualitativos dentro de cada coluna e comparando todas as 9 colunas. Cada método de machine learning tem seus pros e contras, e ideal testar alguns para entender seu funcionamento e saber qual deve ser usado em cada situação.
Para testar o modelo criado preciso aplicá-lo ao dadosTeste o arquivo que não foi usado para treinar o modelo, usando o método predict() passo como argumento o modelo que criei e o dataset de teste. O modelo vai avaliar e informar o diagnostico dos 4 pacientes inéditos para ele.
Preciso agora comparar o diagnostico gerado pelo modelo com o diagnostico real que tenho destes 4 pacientes.
Usamos o método table(), para criar uma tabela que cruza a coluna diagnostico do dataset de teste com a previsão que foi o arquivo criado pela aplicação do modelo, no retângulo verde abaixo vemos as respostas corretas que são encontradas na intercepção das linhas pretas, veja que das 4 amostras o modelo errou apenas uma, onde ele achou que era dengue e na verdade era zica.
Para gerar o percentual de sucesso do modelo, somamos as casas em verde e dividimos pelo somatório da matriz de resposta .
temos então um modelo com taxa 75% de acertos, podemos melhorar esta taxa, mas faremos isso em outro post.
Agora vamos usar o modelo para diagnosticar um novo paciente ainda não conhecido pelo sistema.
Abrimos o arquivo novoPaciente, perceba que ele não possui a coluna diagnostico, usamos o método predict() para aplicar o modelo ao novoPaciente e temos o diagnostico apresentado pelo modelo.