Thiago Zavaschi R2 www.zavaschi.com

9Jan/150

AzureML – Criando meu Primeiro Modelo – Parte 1

Olá pessoal,

No meu último post comecei a escrever sobre aprendizagem de máquina na nuvem através do Azure Machine Learning. Hoje iniciaremos uma série sobre como criar nosso primeiro modelo de aprendizagem de máquina.

Primeiramente devemos conhecer alguns conceitos importantes:

  • Características (features): são os elementos que definem um padrão (uma entrada) a ser classificado. São informações que caracterizam o elemento. Estes valores podem ser valores discretos (estado civil, sexo, idade, possui filhos) ou valores contínios (números infinitos / “não contáveis”). Os valores contínuos podem ser extraídos de análises complexas sobre imagens, por exemplo, onde a característica fica sendo representada por um número. Um vetor de características identifica um elemento. Em geral se espera que as características sejam invariantes a rotação e escala.
  • Classe (label): é o que define o objeto. A classe é o valor que desejamos alcançar nos problemas de classificação. Por exemplo, caso o modelo seja para identificar a predisposição para desenvolvimento de câncer de mama, as classes nesse caso poderiam ser: Presença ou não presença de câncer.

Os problemas que possuem duas classes são, em geral, os problemas mais simples, também conhecidos como problemas binários. Muitos classificadores (como o SVM – veremos em post futuro) trabalham com problemas de duas classes.

Problemas multi-classe existem e também são frequentes. Imagine um modelo que identifica a expressão facial que a pessoa está realizando. Este problema facilmente leva à necessidade de se trabalhar com múltiplas classes.

Outros conceitos importantes para a validação do modelo são Acurácia, Recall, Precisão, F1-Score, AUC. Veremos isso quando formos comparar modelos, mas já pode consultar no blog do Nogare esta explicação.

Os algoritmos que se aplicam para esses problemas de classificação são conhecidos como classificadores, e entre eles temos: Support Vector Machines (SVM), Neural Networks (NN – Redes Neurais), Decision Trees (Arvores de Decisão), K-Means, kNN, entre outros.

Existem dois tipos de aprendizagem: supervisionada e não-supervisionada. Isso está diretamente ligado ao classificador que utilizará e ao problema que deseja resolver.

Aprendizagem Supervisionada: Aqueles casos em que o modelo a ser treinado necessida saber qual é a classe correta daquele padrão analizado durante o treino. Ou seja, durante o processo de “aprender” o algoritmo precisa saber qual é o valor correto. A maioria dos classificadores opera desta forma.

Aprendizagem Não-Supervisionada: Em geral utilizada nos problemas de agrupamento, quando não se conhece as classes reais durante o treino. O algoritmo mais famoso é o K-Means e também é conhecido como algoritmo de clusterização.

Treinar um modelo de Machine Learning nada mais é do que expor os padrões de entrada ao algoritmo para que este “aprenda” sobre aquilo que lhe é apresentado (isso é válido para ambos os métodos de aprendizagem). Em geral é a fase mais demorada do processamento do modelo.

Enquanto o processo de treino é custoso (e pode ser demorado), a grande sacada é que o processo de classificação (que é o que realmente utilizaremos no dia a dia) é extremamente rápido, pois em geral se resume a algumas operações matemáticas para determinar a classe do novo padrão.

Existem alguns algoritmos que dado a sua estrutura, o processo de classificação é lento. Com este comportamente podemos citar o kNN (k Vizinhos Mais Próximos), que durante a classificação compara o novo padrão com todos os existentes.

Bom pessoal, por hoje era isso. No próximo post vamos conhecer os módulos (não lembra o que é? Veja aqui) que usaremos para construir nossa solução no AzureML.

Até a próxima!