Seleção: a primeira etapa consiste da seleção e formação do dataset, que pode incluir subconjuntos de dados de várias fontes, sendo algumas destas, API’s, planilhas, dados abertos, sistemas, data warehouses, etc.
Pré-Processamento: esta etapa visa verificar a qualidade dos dados. Muitas das bases normalmente vêm com dados faltantes ou inconsistentes, os quais devem ser ajustados de acordo com os princípios da consulta, para evitar os chamados ruídos. Por exemplo, em uma base que contém dados nulos, estes devem ser corrigidos ou removidos, dependo do objetivo da mineração.
Transformação: etapa de normalização, agregação, inserção de novos atributos, redução e sintetização dos dados. Os dados nesta etapa, são adaptados, dependendo do tipo de algoritmo que será rodado.
Mineração: aplicar técnicas e algoritmos dependendo de cada objetivo, como verificar hipóteses ou descobrir padrões de forma autônoma, que sejam úteis e desconhecidas aos analistas. Cabe nesta fase também, verificar quais algoritmos se comportaram melhor para aquela base de dados.
Avaliação: na última etapa, é feita a análise dos dados para que seja apresentado o conhecimento adquirido com aquelas informações e como irão impactar nos processos de decisão, com o propósito de deixar as informações mais simples de serem entendidas e apresentar sua relevância.
Estas etapas podem ser visualizadas como um fluxograma, onde os passos vistos na figura 1, podem ser ajustados dependo dos resultados. Nada impede, por exemplo, de retornar à etapa de pré-processamento depois de realizar a etapa de mineração, sendo que os dados não foram apresentados da maneira esperada.
Muito bem, mas e por onde eu posso começar?
Para aplicar a mineração, é fundamental definir bem os problemas que se pode resolver com cada base de dados. Este processo é bem simples, seguindo alguns passos, como a descrição do dataset, da classe, e os atributos da base que vamos utilizar para resolver o problema. Considere uma imobiliária que quer analisar o banco de dados de vendas de propriedades, e que deseja descobrir quais variáveis mais influenciam no preço da venda.
Descrição: Dados sobre o histórico de venda de propriedades de um imobiliária.
Classe: Quais variáveis mais influenciam no preço de venda das propriedades?
Atributos: área da propriedade, quantidade de quartos e preço da venda.
Após esta descrição é necessário definir em qual tipo de mineração tal problema se encaixa, sendo esta classificação fundamental para a escolha dos algoritmos. Esta análise requer de um estudo aprofundado nos 4 tipos, que são a Associação, Regressão, Classificação e Clusterização. Para mais informações, visite este site, que mostra um mapa para classificação de problemas e algoritmos.
Para o nosso problema vamos utilizar a regressão, pois utilizamos uma base histórica de vendas e queremos prever quais atributos mais impactam neste histórico de dados.
Descrição: Dados sobre o histórico de venda de propriedades de um imobiliária.
Classe: Quais variáveis mais influenciam no preço de venda das propriedades?
Atributos: área da propriedade, quantidade de quartos e preço da venda.
Classificação: Regressão.
Vamos aplicar agora um exemplo prático, na plataforma RStudio, que utiliza a linguagem R para mineração de dados. Primeiramente, vamos importar nossa base de dados usando a biblioteca DAAG, que contém base de dados prontas para exercícios, e carregar a base denominada houseprices:
library(DAAG) # biblioteca com bases prontas
data(houseprices) # carregando database
Vamos criar então, nosso modelo para machine learning, utilizando a biblioteca CARET de algoritmos:
set.seed(123) # "para controlar aleatoriedade"
library(caret)
# ------------ dividindo banco de dados para o modelo de Regressão -----------
dataindex <- createDataPartition(houseprices$sale.price, p= .7, list=FALSE)
# separação 70% do banco de dados para treino e o restante para teste.
housetreino <- houseprices[dataindex,]
houseteste <- houseprices[-dataindex,]
Nesta etapa, definimos que parte do banco será para treino e outra parte para teste, de modo que o modelo passe a treinar com os atributos para reconhecimento de padrões. Agora vamos utilizar os algoritmos no modelo:
# --- algoritmo GLM
modeloML1 <- train(sale.price~bedrooms+area, data = housetreino, method="glm")
# ---- algoritmo Random Forest
modeloML2 <- train(sale.price~bedrooms+area, data = housetreino, method="ranger", importance="impurity")
# comparando os algoritmos
listamodelos <- list(glm=modeloML1, ranger= modeloML2)
comparacao <- resamples(listamodelos)
dotplot(comparacao) #plotando análise de menor erro dos algoritmos
Para esta análise foram utilizados os algoritmos GLM e Random Forest, no qual o GLM se comportou melhor conforme a análise, apresentando menor erro.