Processo de julgamento dos algoritmos - Segmentation-Fault-Machine-Learning/Knowledge GitHub Wiki
Processo de julgamento dos algoritmos
Descrição do Problema
Um grupo de pesquisa da UFMJ dedicado ao estudo de uma anomalia no tecido delgado do trato intestinal humano descobriu que tal anomalia trata-se na realidade de três tipos de doenças diferentes, cada uma causada por um tipo novo de bactéria (B1, B2 e B3). Seus técnicos de laboratório isolaram amostras destas bactérias e, ao longo de alguns meses, conseguiram realizar algumas medidas (Comprimento e Largura do corpo, Comprimento e Largura do flagelo). Eles acreditam que podem realizar uma diferenciação das mesmas com base nestas informações. Considere-se contratado para este trabalho. Ou seja, seu grupo deve ajudar o grupo da UFMJ e desenvolver um sistema capaz de realizar a diferenciação das bactérias B1, B2 e B3 com base nos dados fornecidos.
Análise dos dados e do problema
Para avaliação de qual algoritmo se encaixa melhor ao contexto do problema, é necessário identificar a natureza do problema e de sua solução. Os aspectos analisados para decidir quais algoritmos utilizar geralmente são 2:
- O tamanho, a quantidade, e a natureza dos dados.
- O tempo computacional disponível.
- A urgência da tarefa.
- O que você quer fazer com os dados.
Analisando o problema à luz de todos esses aspectos, a equipe chegou a conclusão que se tratava de um problema que poderia ser resolvido por aprendizagem supervisionada. Isso porque:
-
Os dados iniciais são rotulados, ou seja, as relações entre os dados das bactérias e os tipos já estão estabelecidos.
-
A solução esperada é a previsão/classificação de novas bactérias nos rótulos pré-estabelecidos.
A aprendizagem supervisionada é usada sempre que se deseja prever um certo resultado de determinadas entradas, e quando se possui um conjunto de entradas e saídas relacionadas/rotuladas 1. A aprendizagem supervisionada irá criar um modelo a partir de conjuntos de entradas e saídas iniciais, que compõe os dados utilizados na fase de treinamento. O objetivo da aprendizagem supervisionada é prever os resultados para conjuntos de entradas nunca vistos 1.
A aprendizagem supervisionada, possui duas formas principais de 'solução', são elas:
Classificação
O objetivo principal da classificação é prever o tipo de classe de um conjunto de dados, com base em uma lista pré-definida de possibilidades/classes. A classificação pode ser divida em duas principais: Classificação binária e Classificação multi-classe 1. Como o próprio nome sugere, a classificação binária tem o simples objetivo de responder sim ou não para uma questão, por exemplo: "Esse e-mail é um span?". Enquanto a classificação multi-classe possui mais de duas opções de classe 1.
Regressão
O objetivo principal da regressão é prever um número contínuo, ou como conhecemos na programação, um número flutuante que representa algum valor de interesse da solução 1. Quando tenta-se prever, por exemplo, o valor de receita de uma empresa dado algumas informações passadas sobre a empresa e o mercado.
Como o resultado esperado pelo problema não é numérico, classificamos nosso problema como um problema de classificação. Para auxiliar ainda mais a escolha de algoritmos optou-se pela utilização do mapa abaixo disponibilizado pelo próprio scikit-learn, ele leva em consideração diferentes parâmetros para a indicação de um algoritmo, como por exemplo, quantidade de dados, se os dados estão rotulados, propósito do aprendizado, dentre outros:
O resultado do fluxo percorrido pelo nosso contexto foi:
Seguindo o gráfico chegamos aos modelos do KNN e SVC
Links: Imagem : http://scikit-learn.org/stable/tutorial/machine_learning_map/index.html Sklearn : http://scikit-learn.org/stable/index.html
Bibliografia
[1] - Introduction to Machine Learning with Python_ A Guide for Data Scientists - (Andreas C. Muller & Sarah Guido, O'Reilly Media, 2016)
[2] - (http://blogs.sas.com/content/subconsciousmusings/2017/04/12/machine-learning-algorithm-use/, Visitado 25/08/2017)