Introdução

Machine Learning é uma tecnologia que permite que computadores aprendam a partir de dados, como imagens e números. Este relatório aborda dois algoritmos populares: a Regressão Linear e a Árvore de Decisão.

Objetivos

Demonstrar a construção e aplicação de modelos de regressão linear e árvore de decisão na linguagem R.

Metodologia

Dados

Foram utilizados dois conjuntos de dados. O primeiro, “mpg”, é parte do pacote ggplot2 e contém informações sobre a eficiência de combustível de vários veículos testados pela EPA. Ele inclui atributos como fabricante, modelo, deslocamento do motor, ano de fabricação, número de cilindros, tipo de transmissão, tipo de tração, consumo de combustível na cidade e na estrada, e categoria do veículo. O segundo conjunto de dados, “iris”, é um clássico da literatura de aprendizado de máquina, contendo 150 observações de flores de íris de três espécies (Setosa, Versicolor, Virginica). Cada observação possui quatro características (comprimento e largura da sépala, comprimento e largura da pétala) e a espécie correspondente, sendo amplamente utilizado para testar algoritmos de classificação.

glimpse(mpg)
## Rows: 234
## Columns: 11
## $ manufacturer <chr> "audi", "audi", "audi", "audi", "audi", "audi", "audi", "…
## $ model        <chr> "a4", "a4", "a4", "a4", "a4", "a4", "a4", "a4 quattro", "…
## $ displ        <dbl> 1.8, 1.8, 2.0, 2.0, 2.8, 2.8, 3.1, 1.8, 1.8, 2.0, 2.0, 2.…
## $ year         <int> 1999, 1999, 2008, 2008, 1999, 1999, 2008, 1999, 1999, 200…
## $ cyl          <int> 4, 4, 4, 4, 6, 6, 6, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 8, 8, …
## $ trans        <chr> "auto(l5)", "manual(m5)", "manual(m6)", "auto(av)", "auto…
## $ drv          <chr> "f", "f", "f", "f", "f", "f", "f", "4", "4", "4", "4", "4…
## $ cty          <int> 18, 21, 20, 21, 16, 18, 18, 18, 16, 20, 19, 15, 17, 17, 1…
## $ hwy          <int> 29, 29, 31, 30, 26, 26, 27, 26, 25, 28, 27, 25, 25, 25, 2…
## $ fl           <chr> "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p", "p…
## $ class        <chr> "compact", "compact", "compact", "compact", "compact", "c…
glimpse(iris)
## Rows: 150
## Columns: 5
## $ Sepal.Length <dbl> 5.1, 4.9, 4.7, 4.6, 5.0, 5.4, 4.6, 5.0, 4.4, 4.9, 5.4, 4.…
## $ Sepal.Width  <dbl> 3.5, 3.0, 3.2, 3.1, 3.6, 3.9, 3.4, 3.4, 2.9, 3.1, 3.7, 3.…
## $ Petal.Length <dbl> 1.4, 1.4, 1.3, 1.5, 1.4, 1.7, 1.4, 1.5, 1.4, 1.5, 1.5, 1.…
## $ Petal.Width  <dbl> 0.2, 0.2, 0.2, 0.2, 0.2, 0.4, 0.3, 0.2, 0.2, 0.1, 0.2, 0.…
## $ Species      <fct> setosa, setosa, setosa, setosa, setosa, setosa, setosa, s…

Modelo de regressão linear

No contexto do aprendizado supervisionado, a Regressão Linear se destaca como um dos modelos mais reconhecidos para prever respostas quantitativas, devido à sua simplicidade em representar dados por meio de uma linha reta e à rapidez no treinamento.

library(plyr)
carros <- rename(mpg, c("manufacturer" = "Marca",
                        "displ" = "Cilindradas",
                        "cty" = "Consumo",
                        "drv" = "Tração",
                        "class" = "Tipo",
                        "model" = "Modelo",
                        "year" = "Ano"))
names(carros)
##  [1] "Marca"       "Modelo"      "Cilindradas" "Ano"         "cyl"        
##  [6] "trans"       "Tração"      "Consumo"     "hwy"         "fl"         
## [11] "Tipo"

O gráfico mostra a relação entre as cilindradas (deslocamento do motor em litros) e o consumo de combustível na cidade (milhas por galão) de diferentes tipos de veículos, representados por diferentes cores, com o tamanho dos pontos indicando o tipo de tração.

ggplot(carros, aes(Cilindradas, Consumo)) +
  geom_point(aes(size = Tração, color = Tipo)) +
  geom_smooth(method = "lm") +
  labs(
    title = "Relação entre Cilindradas e Consumo de Combustível",
    x = "Cilindradas (litros)",
    y = "Consumo na Cidade (milhas por galão)",
    size = "Tipo de Tração",
    color = "Tipo de Veículo"
  ) +
  theme_minimal()

De maneira geral, observa-se que veículos com maiores cilindradas tendem a consumir mais combustível na cidade. Em outras palavras, à medida que o deslocamento do motor aumenta, o consumo de combustível também aumenta, o que é consistente com a expectativa de que motores maiores geralmente consomem mais combustível.

set.seed(123)
filtro <- sample(1:nrow(carros), nrow(carros) * 0.7)
treino <- carros[filtro, ]
teste <- carros[-filtro, ]

modelo_reg_linear <- lm(Consumo ~ Cilindradas, data = treino)
summary(modelo_reg_linear)
## 
## Call:
## lm(formula = Consumo ~ Cilindradas, data = treino)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.7197 -1.6044 -0.1616  1.0932 13.5593 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  26.7423     0.6124   43.66   <2e-16 ***
## Cilindradas  -2.7903     0.1635  -17.07   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.772 on 161 degrees of freedom
## Multiple R-squared:  0.644,  Adjusted R-squared:  0.6418 
## F-statistic: 291.2 on 1 and 161 DF,  p-value: < 2.2e-16
predicoes <- predict(modelo_reg_linear, teste)
erro <- teste$Consumo - predicoes

mse <- mean(erro^2)
mae <- mean(abs(erro))
r2 <- 1 - (sum(erro^2) / sum((teste$Consumo - mean(teste$Consumo))^2))


cat("Mean Squared Error (MSE):", mse, "\n")
## Mean Squared Error (MSE): 4.382306
cat("Mean Absolute Error (MAE):", mae, "\n")
## Mean Absolute Error (MAE): 1.592549
cat("R-squared:", r2, "\n")
## R-squared: 0.5789425

Modelo de árvore de decisão

Árvore de Decisão também é um algoritmo de aprendizado de máquina supervisionado. Utilizado tanto para classificação quanto para regressão. Isso significa que ele pode ser empregado para prever categorias discretas (como sim ou não) e valores numéricos (como o valor do lucro em reais), ou seja, mais abrangente.

library(rpart)

set.seed(123)
filtro_i <- sample(1:nrow(iris), nrow(iris)*0.7)
treino_i <- iris[filtro,]
teste_i <- iris[-filtro,]
modelo_i <- rpart(Species ~ ., data = treino_i)
prp(modelo_i, extra = 1)

prev_i <- predict(modelo_i, teste_i, type = "class")
confusionMatrix(prev_i, teste_i$Species)
## Confusion Matrix and Statistics
## 
##             Reference
## Prediction   setosa versicolor virginica
##   setosa         15          0         0
##   versicolor      0         10         1
##   virginica       0          2        13
## 
## Overall Statistics
##                                           
##                Accuracy : 0.9268          
##                  95% CI : (0.8008, 0.9846)
##     No Information Rate : 0.3659          
##     P-Value [Acc > NIR] : 7.234e-14       
##                                           
##                   Kappa : 0.8896          
##                                           
##  Mcnemar's Test P-Value : NA              
## 
## Statistics by Class:
## 
##                      Class: setosa Class: versicolor Class: virginica
## Sensitivity                 1.0000            0.8333           0.9286
## Specificity                 1.0000            0.9655           0.9259
## Pos Pred Value              1.0000            0.9091           0.8667
## Neg Pred Value              1.0000            0.9333           0.9615
## Prevalence                  0.3659            0.2927           0.3415
## Detection Rate              0.3659            0.2439           0.3171
## Detection Prevalence        0.3659            0.2683           0.3659
## Balanced Accuracy           1.0000            0.8994           0.9272
#install.packages("kableExtra")
library(kableExtra)
Matriz de Confusão
Prediction setosa versicolor virginica
setosa 15 0 0
versicolor 0 10 1
virginica 0 2 13

Resultados e Discussão

O modelo de Regressão Linear ajustado para prever o consumo de combustível com base nas cilindradas dos veículos apresentou um intercepto de 26.7423 e um coeficiente para cilindradas de -2.7903, ambos com significância estatística elevada. Isso indica que, em média, o consumo de combustível diminui em 2.7903 milhas por galão para cada litro adicional de cilindrada. O Erro Quadrático Médio (MSE) foi de 4.3823, sugerindo uma boa adequação do modelo, enquanto o Erro Absoluto Médio (MAE) foi de 1.5925, oferecendo uma visão intuitiva da precisão. O R-quadrado (R²) foi de 0.5789, indicando que aproximadamente 57.89% da variabilidade no consumo de combustível é explicada pelas cilindradas, embora o modelo não capture toda a variação observada. Em resumo, o modelo confirma a relação inversa entre cilindradas e consumo de combustível, mas indica a presença de outros fatores influentes. No caso do modelo de Árvore de Decisão, que visou classificar as espécies de íris com base em características morfológicas, a matriz de confusão revelou uma acurácia de 92.68% e um índice Kappa de 88,96%, demonstrando um bom desempenho geral e alta concordância entre previsões e observações. A análise por classe mostrou alta sensibilidade e especificidade, especialmente para as espécies setosa e virginica, com menor desempenho na classificação de versicolor.

Conclusão

Este relatório apresentou conceitos fundamentais de Machine Learning, focando em regressão linear e árvores de decisão, e como implementá-los em R. O aprendizado de máquina permite extrair insights valiosos de dados brutos, resolvendo problemas complexos e melhorando a tomada de decisões. A regressão linear, amplamente utilizada por economistas e analistas, ajuda a prever tendências e fornecer suporte quantitativo para decisões de negócios. Por outro lado, as árvores de decisão oferecem uma maneira intuitiva de definir regras de negócio e classificar dados.