Olá, pessoal!
Ultimamente tenho estudado e lido bastante sobre Machine Learning, e devo confessar: eu fiquei assustado com a facilidade de criar uma solução dessas com o Azure Machine Learning.
Vamos fazer um exemplo?
Este artigo faz parte de uma série! Para visualizar a série inteira, clique aqui.
Existem duas formas diferentes de utilizar o Azure Machine Learning Studio: uma delas é gratuita e a outra paga. Há algumas diferenças entre as duas versões, mas para fins de estudo, a versão gratuita é excelente.
Você pode ficar por dentro das restrições dessa versão acessando este link.
O exemplo será feito todo através da versão gratuita – você pode autenticar com sua conta Microsoft sem medo! Depois de autenticar no Studio, você será redirecionado para a seguinte página:
Bom, o exemplo de hoje será muito mais um hands-on do que um detalhamento de cada coisa que existe no Studio.
É muito importante que você tenha uma noção mínima de Machine Learning antes de começar a fazer essa implementação. Caso não tenha, dê uma passada neste artigo e depois volte pra cá.
O Azure nos permite fazer o experimento do início ao fim, desde obter os dados, até expor um modelo treinado por web service. Vamos entender o ambiente antes de começar a implementação.
É possível visualizar um menu lateral, conforme na imagem abaixo:
Este menu agrupa os artefatos envolvidos com sua conta. Hoje trabalharemos apenas com um experimento, então selecione o item Experiment.
Tudo começa com a criação de um experimento, então vá até o menu inferior e pressione o botão “+ NEW” no canto esquerdo, conforme na imagem a seguir:
Este botão mostrará um painel com diversos templates de experimentos. Por enquanto vamos selecionar o primeiro template: Blank Experiment.
Agora estamos na página de criação de experimentos. Você verá que um monte de itens apareceram no menu lateral e um monte de novas ações estão disponíveis no menu inferior.
Ok, vamos começar a trabalhar! Lembram da primeira etapa?
Respondendo algumas perguntas antes de começar
- 1. Escolher a pergunta que estamos tentando responder
- 2. Escolher o conjunto de dados para responder esta pergunta
- 3. Identificar como medir o resultado
A pergunta que vamos tentar responder, é:
- Baseando-se em suas características, qual o preço deste carro?
Para tentar responder a esta pergunta, vamos usar um conjunto de dados sobre automóveis, disponível no próprio Azure Machine Learning Studio.
Por fim, como faremos para medir os resultados obtidos?
Bom, essa é a etapa mais complicada, mas há uma boa estratégia para isso. Primeiro vamos analisar os dados que serão utilizados.
Para fazer isso, expanda o item Saved Datasets > Samples. Com isso, você verá o item Automobile price data (Raw), conforme na imagem a seguir:
Simplesmente clique e arraste para a área indicada no próprio Studio. Um item do tipo dataset será criado em seu experimento. Para visualizar os dados pressione o círculo na base do item e selecione a opção Visualize.
Sinta-se à vontade para explorar os dados! Há muito informação disponível. Logo de cara, no diálogo, já conseguimos ver que os dados possuem 205 linhas e 26 colunas.
Além disso, temos uma informação importantíssima sobre nossos dados: a última coluna nos dá a informação de preço, então sabemos que trata-se de um aprendizado supervisionado.
Por conta da natureza deste tipo de problema, podemos medir os resultados da seguinte maneira:
- 1. Utilizamos parte dos dados para treinar nosso modelo
- 2. Aplicamos o modelo treinado na segunda parte dos dados
- 3. Comparamos o preço que o modelo informou com o preço presente no conjunto de dados
Com isso conseguimos medir o quão bom (ou ruim) nosso modelo ficou!
Começando as implementações
Com as perguntas respondidas, podemos começar nossa implementação! A única coisa que fizemos até agora foi arrastar os dados para o experimento, mas será que estes dados já estão preparados para o experimento?
Não, não estão. Lembram dos processos envolvidos?
- Pré-processamento
- Treinamento
- Avaliação
Como citado no outro artigo, o pré-processamento geralmente é a etapa mais demorada e complicada – não seria diferente em nosso exemplo!
Pré-processamento
Bom, eu disse um pouquinho antes que os dados não estão preparados, mas o que isso significa, de fato?
Significa que devemos preparar os dados para treinarmos o modelo corretamente, removendo dados inconsistentes ou colunas desnecessárias.
Quando estamos visualizando os dados é possível selecionar cada feature (coluna) do dataset. Ao fazer isso, somos expostos à uma série de informações sobre a feature selecionada. A propósito, na terminologia de Machine Learning é muito comum as colunas serem chamadas de features.
Veja um exemplo de informações sobre uma feature específica:
Como a imagem ilustra, há um monte de informações sobre as features. Essas informações variam de acordo com o tipo da feature.
Uma das informações relevantes nesta feature é a quantidade de linhas que não possuem esta coluna preenchida: 41.
Geralmente, em massas de dados gigantes isso não seria um problema, mas quando 41 de 205 registros não possuem a informação, ela pode ser problemática.
Para resolver isso, vamos desconsiderar essa coluna! Escolha o item Data Transformation > Manipulation > Select Columns in Dataset.
Inicialmente, ao incluir este item, você verá que ele possuí um ícone vermelho. Isso porque a transformação precisa ser vinculada a um dataset, e para fazer isso, basta conectar os dois itens.
Pressione o mesmo círculo que usamos para visualizar os dados, mas desta vez mantenha o mouse pressionado e arraste até o item seguinte!
- Mas espere, ainda temos problemas – o que houve?
Simples, ainda não selecionamos quais colunas vamos utilizar! Para fazer isso, pressione o item no experimento. No painel à direita pressione o botão Launch column selector e, por fim, selecione todas as colunas desejadas!
Depois de fazer isso, você deve pressionar o botão “Run” no menu inferior. Isso fará com que seu experimento seja executado e os resultados já possam ser visualizados.
Agora você pode visualizar os dados pressionando a base do item de transformação, assim como fizemos no dataset e você perceberá que a coluna excluída não está mais lá!
- Ótimo, agora os dados estão prontos!
Não tão rápido. Ainda temos que lidar com outros valores que faltam. Desta vez são exemplos mais pontuais e pequenos.
Agora adicionaremos o item Clean Missing Data presente na mesma seção Data Transformation > Manipulation. Conectaremos a saída do item anterior à ela e nas opções do painel à direita vamos selecionar como Cleaning Mode o valor: Remove entire row.
Com isso, removeremos todas as linhas que possuem valores incompletos!
Ao terminar o processo e visualizar os dados novamente, é possível notar que temos 193 linhas, ao invés das 205 originais.
Agora, sim, os dados já estão no formato ideal! O último passo é dividir os dados em dois conjuntos diferentes. Um deles será utilizado para treinamento do modelo e o outro para validação do modelo.
Como isso é uma tarefa bastante comum, temos um item preparado para isso! Utilize o componente em: Data Transformation > Sample and Split > Split Data.
Para isso, basta conectar este componente aos dados e definir o percentual de registros para divisão:
Este item possui duas saídas de dados. Uma delas será utilizada para o treino do nosso modelo e a outra para a validação do modelo já treinado!
Execute novamente o experimento e com isso este processo está finalizado!
Ainda precisamos treinar e validar nosso modelo, mas por hoje o trabalho já está feito. No próximo artigo vamos terminar o trabalho e validar os resultados.
O que você achou deste artigo? Quer ver mais artigos sobre Machine Learning? Me conte nos comentários.
Até mais!