Análise e Tratamento de Dados para Desafio Técnico – Estágio COATD/OUVIDORIA/ANTT

Análise de Manifestações da Ouvidoria - ANTT

Autor
Afiliação

Pedro Muniz Cherulli

UniCEUB – Ciência de Dados

Data de Publicação

13 de janeiro de 2026

Palavras-chave

Análise Exploratória, R, Python, Ciência de Dados, Ouvidoria, ANTT

1 Visão Geral da Base de Dados

A base de dados utilizada neste relatório é composta pelos registros de manifestações encaminhadas à Ouvidoria da Agência Nacional de Transportes Terrestres (ANTT) ao longo dos anos de 2022 e 2023. Tais registros representam um insumo fundamental para a compreensão das demandas, reclamações, denúncias, solicitações e sugestões apresentadas pelos usuários dos serviços regulados pela Agência, possibilitando a análise das interações estabelecidas entre a ANTT e a sociedade.

As informações encontram-se organizadas em formato tabular, no qual cada linha corresponde a uma manifestação registrada e cada coluna representa um atributo associado ao protocolo, ao usuário, à forma de recebimento, à classificação temática e ao tratamento institucional da demanda. As variáveis disponíveis abrangem, entre outros aspectos, dados temporais, características do manifestante, meios de contato, tipificação da manifestação, estrutura organizacional responsável, níveis hierárquicos de assunto e informações sobre empresas eventualmente relacionadas ao registro.

As principais colunas presentes na base de dados são descritas a seguir:

  • protocolo: Identificador único da manifestação.
  • mensagem: Texto da manifestação registrada pelo usuário.
  • data_cadastro_protocolo: Data de registro da manifestação.
  • tipo_usuario: Categoria do usuário (ex.: Pessoa Física, Pessoa Jurídica e Anônima).
  • forma_resposta: Meio escolhido pelo usuário para receber a resposta da Ouvidoria (auto consulta pela internet, carta, e-mail e telefone).
  • forma_recebimento: Meio pelo qual a manifestação foi recebida (ex.: formulário online, telefone).
  • situacao: Status atual da manifestação (ex.: Concluída).
  • tipo_mensagem: Classificação da manifestação (ex.: Reclamação, Sugestão…)
  • assunto_nivel_1 a assunto_nivel_5: Hierarquia de categorias que detalham o assunto da manifestação.
  • estrutura_organizacional: Unidade responsável pelo atendimento da manifestação.
  • local_ocorrencia_uf: Estado onde ocorreu o fato relatado.
  • local_ocorrencia_cidade: Cidade onde ocorreu o fato relatado.
  • empresa: Empresa relacionada à manifestação, se aplicável.
  • nova_empresa: Nome da empresa mencionada pelo usuário na manifestação, quando não consta na lista de empresas existentes no sistema.
  • prefixo_linha: Prefixo da linha de transporte (Formato: NN-NNNN-NN).
  • linha: Linha de transporte descrita de forma textual (ex.: Nome do município (UF) – Nome do município (UF)).
  • origem: Local de embarque do usuário.
  • destino: Local de desembarque do usuário.

É importante ressaltar que o processo de tratamento e análise dos dados foi desenvolvido de forma iterativa, orientado por uma linha de raciocínio construída progressivamente a partir da exploração da base. Dessa forma, as decisões metodológicas adotadas não refletem, necessariamente, a abordagem mais eficiente do ponto de vista computacional ou técnico, mas sim aquelas que se mostraram coerentes com o aprofundamento gradual na complexidade dos dados e com a validação das hipóteses levantadas ao longo da análise.

2 Tratamento e Preparação dos Dados

Python e R foram utilizados de forma integrada para o tratamento e análise dos dados, aproveitando as capacidades específicas de cada linguagem. O Python foi empregado principalmente para o carregamento, manipulação e transformação dos dados, enquanto o R foi utilizado para a orquestração do fluxo de trabalho, documentação e geração do relatório final.

2.1 Carregamento e Integração dos Dados

O processo de carregamento dos dados foi estruturado de forma a garantir reprodutibilidade, integridade e rastreabilidade das informações utilizadas na análise. As bases de dados referentes aos anos de 2022 e 2023 são obtidas diretamente do portal oficial de dados abertos da Agência Nacional de Transportes Terrestres (ANTT), no formato CSV.

Com o objetivo de tornar o fluxo de execução autossuficiente, foi implementada uma verificação prévia da existência dos arquivos no ambiente local. Caso os arquivos não estejam disponíveis localmente, o procedimento realiza automaticamente o download das bases correspondentes por meio do portal da ANTT, assegurando que a análise possa ser reproduzida sem dependências manuais externas. O mesmo procedimento é aplicado ao dicionário de dados, disponibilizado em formato PDF, o qual subsidia a correta interpretação das variáveis presentes na base.

Após o carregamento individual das bases anuais, os dados são integrados por meio da concatenação dos DataFrames em uma única estrutura analítica. Essa consolidação é necessária para permitir análises conjuntas, comparações temporais e a aplicação uniforme das etapas subsequentes de tratamento

Ao Final a memória é liberada dos objetos temporários utilizados durante o processo de carregamento e integração, otimizando o uso dos recursos computacionais disponíveis.

✔ Dicionário de dados já existe
✔ CSV 2022 usado localmente
✔ CSV 2023 usado localmente
✔ Dados carregados com sucesso
152
⬇ Objetos temporários removidos da memória

2.2 Análise Exploratória Inicial dos Dados

A etapa de análise exploratória tem como objetivo compreender a estrutura geral da base de dados após sua consolidação, permitindo identificar características fundamentais que orientam as decisões de tratamento subsequentes. Nessa fase, são avaliadas a dimensionalidade do DataFrame, os tipos atribuídos a cada variável, a presença de valores ausentes e o comportamento básico das distribuições categóricas.

A inspeção dos tipos de dados possibilita verificar inconsistências de leitura, como variáveis temporais interpretadas como texto, enquanto a análise de valores faltantes fornece subsídios para decidir entre imputação, manutenção ou eventual exclusão de informações. Adicionalmente, a identificação da moda por coluna auxilia na compreensão dos valores predominantes, especialmente em variáveis categóricas, contribuindo para a avaliação da representatividade dos dados.

Essa análise não tem caráter conclusivo, mas exploratório, servindo como base para as decisões metodológicas adotadas ao longo do pipeline de tratamento, sempre respeitando a estrutura original da base e o contexto de geração dos dados.

(1287272, 22) 
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1287272 entries, 0 to 1287271
Data columns (total 22 columns):
 #   Column                    Non-Null Count    Dtype 
---  ------                    --------------    ----- 
 0   protocolo                 1287272 non-null  int64 
 1   mensagem                  1287272 non-null  int64 
 2   data_cadastro_protocolo   1287272 non-null  object
 3   tipo_usuario              1287272 non-null  object
 4   forma_resposta            1287272 non-null  object
 5   forma_recebimento         1287272 non-null  object
 6   situacao                  1287272 non-null  object
 7   tipo_mensagem             1287272 non-null  object
 8   estrutura_organizacional  1287272 non-null  object
 9   assunto_nivel_1           1283860 non-null  object
 10  assunto_nivel_2           1270461 non-null  object
 11  assunto_nivel_3           669509 non-null   object
 12  assunto_nivel_4           554199 non-null   object
 13  assunto_nivel_5           464261 non-null   object
 14  local_ocorrencia_uf       7123 non-null     object
 15  local_ocorrencia_cidade   6542 non-null     object
 16  empresa                   42185 non-null    object
 17  nova_empresa              1895 non-null     object
 18  prefixo_linha             28842 non-null    object
 19  linha                     29281 non-null    object
 20  origem                    35277 non-null    object
 21  destino                   35275 non-null    object
dtypes: int64(2), object(20)
memory usage: 216.1+ MB
None 
Valores faltantes (NAs):
 protocolo                         0
mensagem                          0
data_cadastro_protocolo           0
tipo_usuario                      0
forma_resposta                    0
forma_recebimento                 0
situacao                          0
tipo_mensagem                     0
estrutura_organizacional          0
assunto_nivel_1                3412
assunto_nivel_2               16811
assunto_nivel_3              617763
assunto_nivel_4              733073
assunto_nivel_5              823011
local_ocorrencia_uf         1280149
local_ocorrencia_cidade     1280730
empresa                     1245087
nova_empresa                1285377
prefixo_linha               1258430
linha                       1257991
origem                      1251995
destino                     1251997
dtype: int64 
Moda por coluna:
 protocolo                                                           8048890.0
mensagem                                                              7589843
data_cadastro_protocolo                                            16-02-2023
tipo_usuario                                                    Pessoa física
forma_resposta                                    AUTO CONSULTA PELA INTERNET
forma_recebimento                                                         166
situacao                                                            Concluída
tipo_mensagem                                            Pedido de Informação
estrutura_organizacional                                                   PL
assunto_nivel_1                          TRANSPORTE RODOVIÁRIO DE PASSAGEIROS
assunto_nivel_2                                                       REGULAR
assunto_nivel_3                                               LONGA DISTÂNCIA
assunto_nivel_4                         BILHETE DE PASSAGEM (LONGA DISTÂNCIA)
assunto_nivel_5             BENEFÍCIO DO DEFICIENTE/PASSE LIVRE (LONGA DIS...
local_ocorrencia_uf                                                 São Paulo
local_ocorrencia_cidade                                             São Paulo
empresa                     ANTT - Agência Nacional de Transportes Terrestres
nova_empresa                                                           WEMOBI
prefixo_linha                                                        07018700
linha                                              AURORA(CE) - SAO PAULO(SP)
origem                                                          SAO PAULO(SP)
destino                                                        SAO PAULO (SP)
Name: 0, dtype: object

2.3 Remoção de Colunas Irrelevantes

A remoção de colunas foi orientada tanto por critérios técnicos quanto pela compreensão progressiva da utilidade analítica de cada variável. As colunas excluídas apresentavam uma combinação de baixa taxa de preenchimento ou operacional e ausência de impacto direto nos objetivos analíticos propostos.

Optou-se por não realizar imputação nesses casos, uma vez que o preenchimento artificial poderia introduzir vieses ou interpretações equivocadas, especialmente em variáveis cuja ausência reflete limitações do próprio processo de registro das manifestações. Dessa forma, a exclusão dessas colunas contribui para a redução da dimensionalidade do conjunto de dados, melhora a eficiência computacional e preserva a integridade analítica da base consolidada.

As colunas removidas são:

  • local_ocorrencia_uf
  • local_ocorrencia_cidade
  • nova_empresa
  • prefixo_linha
  • linha
  • origem
  • destino
Colunas removidas. Novo formato do DataFrame: (1287272, 15) 

2.4 Conversão e Padronização de Tipos de Dados

A conversão de tipos de dados foi realizada com o objetivo de garantir consistência semântica e eficiência no armazenamento e processamento das informações. A variável de data data_cadastro_protocolo foi convertida para o tipo datetime, assegurando sua correta interpretação temporal e permitindo operações cronológicas confiáveis nas etapas subsequentes da análise. A partir dessa variável temporal, foram criadas as variáveis derivadas ano e mes, extraídas diretamente do registro de data, com a finalidade de viabilizar análises comparativas entre períodos distintos, especialmente no que se refere à quantificação anual de manifestações.

Adicionalmente, variáveis categóricas foram explicitamente convertidas para o tipo category, o que não apenas reduz o consumo de memória, mas também reforça o caráter qualitativo dessas informações. Essa decisão reflete a compreensão de que tais campos representam categorias fechadas ou semiestruturadas, e não valores textuais livres.

Coluna 'data_cadastro_protocolo' convertida para datetime.
Coluna 'ano' criada a partir de 'data_cadastro_protocolo'.
Coluna 'mes' criada a partir de 'data_cadastro_protocolo'.
Colunas categóricas convertidas para 'category'.

2.5 Tratamento de Valores Ausentes nos Níveis de Assunto e Empresa

O tratamento dos valores ausentes nos campos hierárquicos de assunto foi conduzido de forma explícita, substituindo valores nulos pela categoria “NÃO DETALHADO”. Essa abordagem foi adotada para preservar a informação de que a manifestação existe, mas não foi classificada em determinado nível, evitando a perda de registros relevantes.

De forma análoga, a variável empresa recebeu a categoria “NÃO VINCULADA A EMPRESA”, representando manifestações que não puderam ser associadas a um operador específico. Essa abordagem preserva a rastreabilidade da ausência de informação, evitando que tais registros sejam mascarados por exclusão ou imputações arbitrárias.

É importante ressaltar que, embora a variável empresa apresente baixo percentual de preenchimento (aproximadamente 3%), optou-se por sua manutenção na base de dados por seu valor informativo e pelo potencial de utilização em análises futuras, especialmente no contexto de devolutivas institucionais e feedback direcionado às empresas mencionadas nas manifestações.

Valores faltantes (NAs):
 protocolo                   0
mensagem                    0
data_cadastro_protocolo     0
tipo_usuario                0
forma_resposta              0
forma_recebimento           0
situacao                    0
tipo_mensagem               0
estrutura_organizacional    0
assunto_nivel_1             0
assunto_nivel_2             0
assunto_nivel_3             0
assunto_nivel_4             0
assunto_nivel_5             0
empresa                     0
ano                         0
mes                         0
dtype: int64 

2.6 Reavaliação da Estrutura da Base Após Tratamentos Iniciais

Após a aplicação dos tratamentos iniciais, realizou-se uma nova inspeção da estrutura do DataFrame com o objetivo de validar os efeitos das transformações realizadas. Essa etapa permitiu confirmar a remoção de valores ausentes, a correta atribuição dos tipos de dados e a estabilidade dimensional da base.

A repetição controlada dessa análise faz parte da linha de pensamento adotada, na qual cada decisão de tratamento é acompanhada de uma verificação empírica de seus impactos, garantindo coerência entre intenção metodológica e resultado prático.

(1287272, 17) 
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1287272 entries, 0 to 1287271
Data columns (total 17 columns):
 #   Column                    Non-Null Count    Dtype         
---  ------                    --------------    -----         
 0   protocolo                 1287272 non-null  int64         
 1   mensagem                  1287272 non-null  int64         
 2   data_cadastro_protocolo   1287272 non-null  datetime64[ns]
 3   tipo_usuario              1287272 non-null  category      
 4   forma_resposta            1287272 non-null  category      
 5   forma_recebimento         1287272 non-null  category      
 6   situacao                  1287272 non-null  category      
 7   tipo_mensagem             1287272 non-null  category      
 8   estrutura_organizacional  1287272 non-null  category      
 9   assunto_nivel_1           1287272 non-null  category      
 10  assunto_nivel_2           1287272 non-null  category      
 11  assunto_nivel_3           1287272 non-null  category      
 12  assunto_nivel_4           1287272 non-null  category      
 13  assunto_nivel_5           1287272 non-null  category      
 14  empresa                   1287272 non-null  category      
 15  ano                       1287272 non-null  int64         
 16  mes                       1287272 non-null  category      
dtypes: category(13), datetime64[ns](1), int64(3)
memory usage: 57.7 MB
None 
Valores faltantes (NAs):
 protocolo                   0
mensagem                    0
data_cadastro_protocolo     0
tipo_usuario                0
forma_resposta              0
forma_recebimento           0
situacao                    0
tipo_mensagem               0
estrutura_organizacional    0
assunto_nivel_1             0
assunto_nivel_2             0
assunto_nivel_3             0
assunto_nivel_4             0
assunto_nivel_5             0
empresa                     0
ano                         0
mes                         0
dtype: int64 
Moda por coluna:
 protocolo                                              8048890.0
mensagem                                                 7589843
data_cadastro_protocolo                      2023-02-16 00:00:00
tipo_usuario                                       Pessoa física
forma_resposta                       AUTO CONSULTA PELA INTERNET
forma_recebimento                                            166
situacao                                               Concluída
tipo_mensagem                               Pedido de Informação
estrutura_organizacional                                      PL
assunto_nivel_1             TRANSPORTE RODOVIÁRIO DE PASSAGEIROS
assunto_nivel_2                                          REGULAR
assunto_nivel_3                                    NÃO DETALHADO
assunto_nivel_4                                    NÃO DETALHADO
assunto_nivel_5                                    NÃO DETALHADO
empresa                                  NÃO VINCULADA A EMPRESA
ano                                                       2022.0
mes                                                            8
Name: 0, dtype: object

2.7 Análise da Distribuição das Variáveis Categóricas

A análise dos valores distintos e das contagens por categoria teve como finalidade compreender a distribuição interna das principais variáveis qualitativas da base. Esse procedimento permitiu identificar categorias dominantes, padrões recorrentes e possíveis assimetrias relevantes para a interpretação dos dados.

Essa etapa não teve caráter preditivo, mas exploratório, auxiliando na validação das escolhas feitas anteriormente, como a manutenção de determinadas variáveis e a criação de categorias explícitas para valores ausentes.


Coluna: tipo_usuario
Valores distintos: 6
Contagem:
 tipo_usuario
Pessoa física       981689
Pessoa jurídica     176767
Anônimo             128545
Servidor ANTT          110
Pensionista ANTT        83
Apostenado ANTT         78
Name: count, dtype: int64

Coluna: forma_resposta
Valores distintos: 4
Contagem:
 forma_resposta
AUTO CONSULTA PELA INTERNET    1001228
E-MAIL                          237259
TELEFONE                         45322
CARTA                             3463
Name: count, dtype: int64

Coluna: forma_recebimento
Valores distintos: 9
Contagem:
 forma_recebimento
166                 908446
WhatsApp            150077
E-mail              127797
Chat                 77203
Fale Conosco         20268
Pessoalmente          1527
Carta                 1155
Telefone               584
Chat Passe Livre       215
Name: count, dtype: int64

Coluna: situacao
Valores distintos: 1
Contagem:
 situacao
Concluída    1287272
Name: count, dtype: int64

Coluna: tipo_mensagem
Valores distintos: 6
Contagem:
 tipo_mensagem
Pedido de Informação    850819
Outras Solicitações     338450
Reclamação               97538
Sugestão                   273
Elogio                     115
Denúncia                    77
Name: count, dtype: int64

Coluna: estrutura_organizacional
Valores distintos: 76
Contagem:
 estrutura_organizacional
PL       464993
CA       355883
SUROC    128206
GEAUT    113483
SUPAS    105185
          ...  
ASINT         1
ASINF         1
GEPES         1
GSNOS         1
GETIC         1
Name: count, Length: 76, dtype: int64

Coluna: assunto_nivel_1
Valores distintos: 12
Contagem:
 assunto_nivel_1
TRANSPORTE RODOVIÁRIO DE PASSAGEIROS          598702
ATENDIMENTO DA OUVIDORIA                      366929
ADMINISTRAÇÃO                                 163144
TRANSPORTE RODOVIÁRIO DE CARGAS               137767
RODOVIAS FEDERAIS CONCEDIDAS                   15475
NÃO DETALHADO                                   3412
TRANSPORTE FERROVIÁRIO                           799
SERVIÇO DE ATENDIMENTO AO CONSUMIDOR - SAC       418
TRANSPORTE MULTIMODAL                            357
ATENDIMENTO DA CONCESSIONÁRIA                    254
TRANSPORTE DUTOVIÁRIO                             11
LEI GERAL DE PROTEÇÃO DE DADOS PESSOAIS            4
Name: count, dtype: int64

Coluna: assunto_nivel_2
Valores distintos: 136
Contagem:
 assunto_nivel_2
REGULAR                                                                525549
ANDAMENTO/RESPOSTA PROTOCOLO (SISTEMA DA OUVIDORIA)                     88448
RNTRC - REGISTRO NACIONAL DOS TRANSPORTADORES RODOVIÁRIOS DE CARGAS     77000
FOGE À COMPETÊNCIA DA ANTT                                              75988
PERDA DA LIGAÇÃO/CONEXÃO (DESLIGADO/DESCONECTADO PELO USUÁRIO)          68309
                                                                        ...  
FUNCIONAMENTO DO GUICHÊ (TRANSP.FERROVIÁRIO)                                2
EM TRATAMENTO                                                               1
COVID-19 - ADMINISTRATIVO                                                   1
ATENDIMENTO FISCAL ANTT                                                     1
REUNIÃO DE DIRETORIA                                                        1
Name: count, Length: 136, dtype: int64

Coluna: assunto_nivel_3
Valores distintos: 86
Contagem:
 assunto_nivel_3
NÃO DETALHADO                                              617763
LONGA DISTÂNCIA                                            523105
CADASTRAMENTO/RECADASTRAMENTO (RNTRC)                       25566
ENGANO                                                      18301
INCLUSÃO/EXCLUSÃO DE VEÍCULO (RNTRC)                        16147
                                                            ...  
CADASTRAMENTO/RECADASTRAMENTO RNTRC - COVID-19 - CARGAS         1
EQUIPAMENTOS DE INFORMÁTICA                                     1
CONDUTA DE FUNCIONÁRIO DA EMPRESA (TRANSP.FRETADO)              1
MOBILIÁRIO                                                      1
TOMADA DE SUBSÍDIO                                              1
Name: count, Length: 86, dtype: int64

Coluna: assunto_nivel_4
Valores distintos: 59
Contagem:
 assunto_nivel_4
NÃO DETALHADO                                                           733073
BILHETE DE PASSAGEM (LONGA DISTÂNCIA)                                   462266
BENEFÍCIO DO IDOSO (LONGA DISTÂNCIA)                                     17151
ITINERÁRIO/LINHA/FREQUÊNCIA/HORÁRIO (LONGA DISTÂNCIA)                    14287
ATRASO (LONGA DISTÂNCIA)                                                 10441
SISTEMA DE AUTORIZAÇÃO DE VIAGEM                                         10108
CADASTRAMENTO/RECADASTRAMENTO (TAF)                                       7743
AVARIA MECÂNICA/DEFEITO EM EQUIPAMENTO OBRIGATÓRIO (LONGA DISTÂNCIA)      4538
DOCUMENTAÇÃO DE PESSOA FÍSICA                                             3743
IDENTIFICAÇÃO DO PASSAGEIRO (LONGA DISTÂNCIA)                             2605
DOCUMENTAÇÃO DE PESSOA FÍSICA - RNTRC                                     2205
BAGAGEM (LONGA DISTÂNCIA)                                                 2190
DOCUMENTAÇÃO DE PESSOA JURÍDICA                                           2131
DOCUMENTAÇÃO DE PESSOA JURÍDICA - RNTRC                                   1708
CARACTERÍSTICAS DO VEÍCULO (LONGA DISTÂNCIA)                              1656
CONDUTA DE FUNCIONÁRIO DA EMPRESA (LONGA DISTÂNCIA)                       1610
HIGIENE DO VEÍCULO (LONGA DISTÂNCIA)                                      1141
REVALIDAÇÃO ORDINÁRIA DO RNTRC                                            1090
AR CONDICIONADO (LONGA DISTÂNCIA)                                         1007
CADASTRO DE MOTORISTA (LONGA DISTÂNCIA)                                    850
PONTO DE PARADA/APOIO (LONGA DISTÂNCIA)                                    635
TRANSPORTE DE MENORES DE 6 ANOS (LONGA DISTÂNCIA)                          622
SUPRIMIR VIAGEM A QUE ESTEJA OBRIGADO (LONGA DISTÂNCIA)                    569
PROTOCOLO PARA AUTORIZAÇAO DE VIAGEM (SISAUT FORA DO AR)                   425
SEGURANÇA DOS PASSAGEIROS (LONGA DISTÂNCIA)                                422
TARIFA (SEMI-URBANO)                                                       366
FUNCIONAMENTO DO GUICHÊ (LONGA DISTÂNCIA)                                  313
CONDUTA DE FUNCIONÁRIO DA EMPRESA (SEMI-URBANO)                            295
ITINERÁRIO/LINHA/FREQUÊNCIA/HORÁRIO (SEMI-URBANO)                          249
LISTA DE PASSAGEIROS (TRANSP.FRETADO)                                      244
DADOS TRIMESTRAIS - SISDAP                                                 144
ATRASO (SEMI-URBANO)                                                       139
TERMO DE AUTORIZAÇÃO DE SERVIÇOS REGULARES - TAR                           136
INCLUSÃO/EXCLUSÃO DE VEÍCULO (LONGA DISTÂNCIA)                             135
SISTEMA DE AUTORIZAÇÃO DE VIAGEM FORA DO AR                                126
BENEFÍCIO DO IDOSO (SEMI-URBANO)                                           119
SEGURANÇA DOS PASSAGEIROS (SEMI-URBANO)                                    113
CADASTRAMENTO/RECADASTRAMENTO (LONGA DISTÂNCIA)                            108
CINTO DE SEGURANÇA (LONGA DISTÂNCIA)                                       105
AVARIA MECÂNICA/DEFEITO EM EQUIPAMENTO OBRIGATÓRIO (SEMI-URBANO)            98
BENEFÍCIO DO DEFICIENTE/PASSE LIVRE (SEMI-URBANO)                           61
ASSALTO/FURTO (LONGA DISTÂNCIA)                                             53
MENORES DE 16 ANOS (TRANSP. FRETADO)                                        53
COBRANÇA INDEVIDA (LONGA DISTÂNCIA)                                         50
ACIDENTE (LONGA DISTÂNCIA)                                                  36
HIGIENE DO VEÍCULO (SEMI-URBANO)                                            20
BILHETE DE PASSAGEM/VALE TRANSPORTE (SEMI-URBANO)                           20
SEGURO DE RESPONSABILIDADE CIVIL (LONGA DISTÂNCIA)                          17
SERVIÇO DE ATENDIMENTO AO CONSUMIDOR - SAC (LONGA DISTÂNCIA)                15
DANO/EXTRAVIO DE BAGAGEM (TRANS.FRETADO)                                    12
MAIORES DE 16 ANOS (TRANSP. FRETADO)                                         7
SERVIÇO DE ATENDIMENTO AO CONSUMIDOR - SAC (SEMI-URBANO)                     5
BENEFÍCIO DO IDOSO (TRANSP.FERROVIÁRIO)                                      5
BENEFÍCIO DO DEFICIENTE/PASSE LIVRE (TRANSP.FERROVIÁRIO)                     5
INCLUSÃO/EXCLUSÃO DE VEÍCULO (SEMI-URBANO)                                   3
BENEFÍCIO DO JOVEM ESTUDANTE (TRANSP.FERROVIÁRIO)                            1
ACIDENTE (SEMI-URBANO)                                                       1
SEGURO DE RESPONSABILIDADE CIVIL (SEMI-URBANO)                               1
TRANSPORTE DE MENORES DE 6 ANOS (SEMI-URBANO)                                1
Name: count, dtype: int64

Coluna: assunto_nivel_5
Valores distintos: 20
Contagem:
 assunto_nivel_5
NÃO DETALHADO                                                                    823011
BENEFÍCIO DO DEFICIENTE/PASSE LIVRE (LONGA DISTÂNCIA)                            450129
BENEFÍCIO DO JOVEM ESTUDANTE (LONGA DISTÂNCIA)                                     4200
DEVOLUÇÃO DO VALOR PAGO (LONGA DISTÂNCIA)                                          2977
REVALIDAÇÃO PARA OUTRO DIA/HORÁRIO (LONGA DISTÂNCIA)                               2558
DANO/EXTRAVIO DE BAGAGEM (LONGA DISTÂNCIA)                                         1331
TARIFA (LONGA DISTÂNCIA)                                                           1076
MENORES DE 16 ANOS (LONGA DISTÂNCIA)                                                900
BENEFÍCIO DO IDOSO, DESCONTO DE 100% (LONGA DISTÂNCIA)                              439
BENEFÍCIO DO IDOSO, DESCONTO MÍNIMO DE 50% (LONGA DISTÂNCIA)                        198
VENDA DUPLICADA (LONGA DISTÂNCIA)                                                   184
MAIORES DE 16 ANOS (LONGA DISTÂNCIA)                                                124
REDUÇÃO DE FREQUÊNCIA - BENEFÍCIO JOVEM ESTUDANTE (LONGA DISTÂNCIA)                  31
SEGURO FACULTATIVO (LONGA DISTÂNCIA)                                                 24
PESO/DIMENSÃO/VOLUME (LONGA DISTÂNCIA)                                               23
REDUÇÃO DE FREQUÊNCIA - BENEFÍCIO DO IDOSO (LONGA DISTÂNCIA)                         22
REDUÇÃO DE FREQUÊNCIA - BENEFÍCIO DO DEFICIENTE/PASSE LIVRE (LONGA DISTÂNCIA)        15
TAXA DE EMBARQUE (LONGA DISTÂNCIA)                                                   15
PESO/DIMENSÃO/VOLUME DE BAGAGEM (LONGA DISTÂNCIA)                                     9
DESCONTO PARA ESTUDANTES (LONGA DISTÂNCIA)                                            6
Name: count, dtype: int64

2.8 Exclusão da Variável de Situação

A variável situacao foi removida após análise exploratória indicar baixa variabilidade informacional e sobreposição semântica com outras variáveis já presentes na base. Sua manutenção não agregaria valor analítico adicional proporcional à complexidade introduzida.

Essa decisão reflete a abordagem incremental adotada ao longo do trabalho, na qual variáveis são mantidas ou removidas com base em evidências observadas durante o aprofundamento na estrutura dos dados.

df = df.drop(columns=["situacao"])
print("Coluna 'situacao' removida. Novo formato do DataFrame:", df.shape)
Coluna 'situacao' removida. Novo formato do DataFrame: (1287272, 16)

2.9 Identificação de Recontatos por Protocolo

A criação da variável qtd_contatos_protocolo teve como objetivo capturar a recorrência de manifestações associadas a um mesmo protocolo, permitindo identificar casos em que um mesmo usuário entrou em contato múltiplas vezes.

A partir dessa contagem, foi definida a variável booleana recontato, que sinaliza explicitamente a existência de múltiplos registros associados ao mesmo protocolo. Essa abordagem preserva a informação sobre recorrência sem eliminar registros potencialmente relevantes para a análise do comportamento dos usuários da ouvidoria.

df["qtd_contatos_protocolo"] = (
    df.groupby("protocolo")["mensagem"]
      .transform("count")
)

df["recontato"] = df["qtd_contatos_protocolo"] > 1

2.10 Identificação e Remoção de Duplicatas Puras

A remoção de duplicatas foi conduzida de forma criteriosa, considerando como duplicatas puras apenas os registros que apresentavam igualdade em todas as variáveis relevantes.

Essa estratégia garante que manifestações com o mesmo protocolo sejam mantidas sempre que houver qualquer alteração informacional significativa, preservando recontatos legítimos e variações relevantes que possuem um mesmo número de protocolo. Apenas registros estritamente redundantes foram removidos, resultando em uma base analítica mais enxuta, sem perda de informação substantiva.

Número de duplicatas puras: 23010
Percentual de duplicatas puras: 1.79% 
Formato do DataFrame antes da remoção de duplicatas puras: (1287272, 18)
Novo formato do DataFrame após remoção de duplicatas puras: (1264262, 18)

2.11 Salvamento da Base de Dados Tratada

Segue o salvamento da base de dados tratada em formato CSV, utilizando codificação UTF-8 para garantir compatibilidade com diferentes softwares de análise e visualização.

Base de dados tratada salva em: C:\Users\Muniz\OneDrive\Documentos\Pessoal\ANTT\data\manifestacoes_de_ouvidoria_tratadas.csv

2.12 Conclusão do Tratamento e Preparação dos Dados

O processo de tratamento dos dados permitiu transformar uma base bruta, heterogênea e com elevado volume de registros em uma base analítica estruturada, coerente e alinhada aos objetivos do estudo. As decisões adotadas ao longo do pipeline não tiveram como foco exclusivo a otimização técnica, mas sim a preservação do significado informacional dos dados, respeitando a lógica operacional da Ouvidoria da ANTT.

A manutenção de colunas com altos percentuais de valores ausentes, aliada à criação explícita de categorias como “NÃO DETALHADO” e “NÃO VINCULADA A EMPRESA”, possibilitou tratar a ausência de informação como um atributo analítico relevante, e não como uma falha a ser ocultada. Adicionalmente, a conversão criteriosa de tipos de dados, a padronização de datas e a remoção de duplicatas puras garantiram maior consistência, rastreabilidade e confiabilidade à base final.

A estratégia adotada para lidar com protocolos repetidos preservou manifestações que apresentavam alterações reais de conteúdo, ao mesmo tempo em que eliminou redundâncias estruturais, resultando em um conjunto de dados mais enxuto e informativamente mais rico. Dessa forma, a base consolidada reflete de maneira mais fiel o comportamento de contato dos usuários com a Ouvidoria, incluindo a identificação de recontatos e recorrências.

Com a base devidamente tratada, torna-se possível avançar para a etapa de visualizações e análises com maior segurança metodológica. A redução de ruídos, a padronização semântica das variáveis categóricas e a eliminação de duplicidades artificiais permitem que os gráficos e indicadores produzidos reflitam padrões reais de comportamento, e não artefatos do processo de coleta ou registro.

Além disso, a criação de variáveis como recontato e qtd_contatos_protocolo amplia o potencial analítico da base, viabilizando visualizações focadas em recorrência, persistência de demandas e complexidade dos atendimentos. Esses ganhos estabelecem uma base sólida para análises descritivas e exploratórias mais precisas, bem como para futuras extensões analíticas, como segmentações, comparações temporais e apoio à tomada de decisão institucional.


3 Análise Exploratória com Visão de Negócio

As visualizações a seguir baseiam-se em uma base previamente tratada, cujo processo priorizou a preservação do significado informacional dos registros e a identificação de padrões reais de comportamento dos usuários, evitando distorções causadas por duplicidades artificiais ou imputações arbitrárias.

3.1 Análise Inicial do Volume de Manifestações por Ano

A análise comparativa do número de manifestações registradas nos anos de 2022 e 2023 revela insights importantes sobre a dinâmica de interação entre os usuários e a Ouvidoria da ANTT ao longo do período. A visualização a seguir apresenta o total de manifestações por ano, permitindo uma avaliação direta das variações anuais no volume de registros.

A comparação do número total de manifestações por ano evidencia uma leve redução no volume de registros de 2022 para 2023, embora os valores permaneçam próximos. Esse comportamento indica uma relativa estabilidade na demanda da Ouvidoria ao longo do período analisado, sem variações abruptas que sinalizem mudanças estruturais no padrão de acionamento.

3.1.1 Tipo de mensagem mais frequente em 2022 e 2023

Após a análise do volume total de manifestações por ano, torna-se pertinente aprofundar a compreensão acerca do perfil dessas manifestações, com foco no tipo de mensagem registrado. Nesse contexto, as visualizações a seguir apresentam a distribuição dos tipos de mensagens mais frequentes nos anos de 2022 e 2023, possibilitando uma comparação direta entre os períodos e a identificação de padrões predominantes no acionamento da Ouvidoria da ANTT.

A análise dos gráficos demonstra que, embora o Pedido de Informação permaneça como o tipo de mensagem mais frequente em ambos os anos, observa-se uma mudança relevante no comportamento das manifestações entre 2022 e 2023. Em particular, o volume de Reclamações apresentou crescimento expressivo no período, aproximadamente dobrando de um ano para o outro, o que indica um aumento significativo no registro de insatisfações ou problemas relatados pelos usuários. Em contraste, as demais categorias mantiveram padrões relativamente estáveis, com Outras Solicitações permanecendo como o segundo tipo mais recorrente e Sugestões, Elogios e Denúncias apresentando participação residual. Esse resultado sinaliza uma possível intensificação de conflitos ou falhas percebidas pelos usuários em 2023, aspecto que merece atenção em análises subsequentes.

3.1.2 Aprofundamento na análise dos tipos de mensagem

Devido à relevância observada no aumento das Reclamações em 2023, torna-se pertinente aprofundar a análise para compreender melhor os fatores subjacentes a esse comportamento. A visualização a seguir detalha a distribuição dos tipos de mensagens, com foco especial nas Reclamações, permitindo identificar categorias específicas que possam estar contribuindo para o crescimento observado.

A análise dos gráficos demonstra que, embora Transporte Rodoviário de Passageiros permaneça como o assunto mais frequente em ambos os anos, observa-se uma mudança relevante no comportamento das manifestações entre 2022 e 2023. Em especial, o volume de Transporte Rodoviário de Passageiros apresentou crescimento expressivo — mais que o dobro de um ano para o outro — indicando aumento significativo nas manifestações dos usuários.

A Agência Nacional de Transportes Terrestres (ANTT) realizou uma audiência pública para discutir o aprimoramento do fluxo de reclamações dos usuários, com o objetivo de melhorar os mecanismos de atendimento e incentivar a resolução de conflitos diretamente com as empresas prestadoras de serviços, o que reforça a importância de análises detalhadas sobre o aumento das reclamações observadas neste período.

Audiência Pública na ANTT debate aprimoramento do fluxo de reclamações dos usuários

Principais assuntos por ano:

  • 2022

    • Transporte Rodoviário de Passageiros: 24.379
    • Transporte Rodoviário de Cargas: 3.187
    • Atendimento da Ouvidoria: 1.710
  • 2023

    • Transporte Rodoviário de Passageiros: 53.031
    • Atendimento da Ouvidoria: 2.794
    • Transporte Rodoviário de Cargas: 2.505

As demais categorias mantiveram padrões relativamente estáveis. O aumento mais expressivo em Transporte Rodoviário de Passageiros sinaliza intensificação de demandas e conflitos percebidos pelos usuários, aspecto que merece atenção em análises subsequentes para aprimorar os canais de atendimento e resposta a reclamações.

3.1.3 Empresas com Maiores Números de Reclamações

Como descrito pela matéria apresentada anteriormente o aumento expressivo nas reclamações relacionadas ao Transporte Rodoviário de Passageiros em 2023, torna-se relevante identificar quais empresas estão associadas ao maior número de registros nesse tipo de manifestação. A visualização a seguir apresenta as top 5 empresas com maior número de reclamações nos anos de 2022 e 2023, permitindo uma análise comparativa e a identificação de possíveis tendências ou mudanças no comportamento dos usuários em relação aos operadores de transporte.

A análise dos gráficos revela que algumas empresas mantiveram posições de destaque em ambos os anos, enquanto outras apresentaram variações significativas no número de reclamações. A empresa com o maior número de reclamações em 2022 continuou a liderar em 2023, indicando uma persistência nas questões enfrentadas pelos usuários. No entanto, outras empresas mostraram aumentos ou diminuições notáveis, sugerindo mudanças na percepção dos usuários ou na qualidade dos serviços prestados. É importante destacar que nem todas as reclamações relacionadas ao Transporte Rodoviário de Passageiros estavam vinculadas a empresas, o que explica por que aproximadamente apenas 10% dos registros aparecem no gráfico anterior. Isso levanta a questão de saber se essas manifestações realmente não tinham relação com empresas específicas ou se houve algum erro ou inconsistência no preenchimento das informações.

3.2 Tipos de Usuário que mais Acionam a Ouvidoria

A análise dos tipos de usuário que mais acionam a Ouvidoria da ANTT permite compreender o perfil dos manifestantes e identificar segmentos específicos que demandam maior atenção. A visualização a seguir apresenta a distribuição dos tipos de usuário ao longo do período analisado, destacando aqueles que mais frequentemente recorrem aos canais de comunicação da Ouvidoria.

A análise do gráfico revela que as Pessoas Físicas são o grupo que mais aciona a Ouvidoria da ANTT, representando a maior parte das manifestações registradas. Esse comportamento é esperado, uma vez que pessoas físicas são os principais beneficiários dos serviços regulados pela agência e, portanto, têm maior propensão a relatar problemas, solicitar informações ou expressar opiniões sobre a qualidade dos serviços prestados. Outros tipos de usuário, como Pessoa Jurídica e Anônimos, também contribuem para o volume de manifestações, mas em proporções significativamente menores. Esses insights são fundamentais para direcionar estratégias de atendimento e comunicação, garantindo que as necessidades dos principais grupos de manifestantes sejam adequadamente atendidas.

3.2.1 Porque algumas pessoas aparecem como “Anônimas”?

A categorização de alguns manifestantes como “Anônimo” na base de dados da Ouvidoria da ANTT pode ser atribuída a diversos fatores relacionados ao processo de registro das manifestações. Primeiramente, é possível que alguns usuários optem por não fornecer informações pessoais durante o cadastro de suas manifestações, seja por questões de privacidade, receio de retaliação ou simplesmente por preferirem manter o anonimato ao expressar suas opiniões ou relatar problemas. Além disso, o sistema de registro pode permitir o envio de manifestações sem a obrigatoriedade de identificação, o que facilita a participação de usuários que desejam permanecer anônimos. Outra possibilidade é a ocorrência de falhas ou omissões no preenchimento dos dados, seja por parte dos usuários ou devido a limitações técnicas do sistema de registro. Essas razões combinadas explicam por que uma parcela dos manifestantes é classificada como “Anônimo” na base de dados, refletindo a diversidade de perfis e preferências dos usuários que interagem com a Ouvidoria da ANTT.

Por isso é válido buscar os chamados de pessoas “Anônimas” para entender melhor o perfil dessas manifestações e identificar possíveis padrões ou necessidades específicas desse grupo de usuários.

3.2.2 Análise dos Assuntos mais Contatados por Manifestantes Anônimos (Nível 1)

A análise do gráfico indica que as manifestações registradas como “Anônimas” concentram-se majoritariamente em assuntos relacionados ao Atendimento da Ouvidoria, enquanto os demais temas apresentam ocorrência residual ou praticamente inexistente. Esse comportamento evidencia uma forte concentração temática, limitando a capacidade interpretativa do gráfico no nível de agregação adotado (assunto_nivel_1). Diante da baixa diversidade de assuntos observada, a análise no nível assunto_nivel_1 não se mostra suficientemente informativa. Assim, torna-se metodologicamente mais adequado aprofundar a investigação por meio do assunto_nivel_2, que possibilita maior granularidade e pode revelar padrões, subtemas e demandas específicas associadas às manifestações anônimas.

3.2.3 Análise dos Assuntos mais Contatados por Manifestantes Anônimos (Nível 2)

A análise do gráfico, ao aprofundar a investigação para o nível assunto_nivel_2, permite compreender com maior clareza a razão pela qual determinadas manifestações são classificadas como “Anônimas”. Observa-se que, na realidade, essas ocorrências não correspondem a manifestações deliberadamente anônimas, mas sim a atendimentos “Não Identificados”, nos quais não houve possibilidade técnica ou procedimental de identificação do manifestante. Isso se evidencia pelo fato de que todas as categorias identificadas nesse nível dizem respeito a situações em que a identificação do usuário é inviável, como “Perda da ligação/conexão (desligado/desconectado pelo usuário)”, “Perda da ligação (desligado pelo atendente)” e “Foge à competência da ANTT”. Dessa forma, a classificação como “Anônimo” reflete limitações operacionais do atendimento, e não uma escolha explícita do usuário pelo anonimato, indicando a necessidade de uma distinção conceitual mais precisa entre manifestações anônimas e não identificadas.

3.3 Métodos de contato mais Utilizados pelos Usuários

A análise dos métodos de contato mais utilizados pelos usuários para acionar a Ouvidoria da ANTT oferece insights valiosos sobre as preferências e comportamentos dos manifestantes. A visualização a seguir apresenta a distribuição dos diferentes canais de comunicação adotados ao longo do período analisado, destacando aqueles que são mais frequentemente utilizados.

A análise do gráfico revela que o 166 (Telefone da Ouvidoria) se consolida como o principal meio de contato utilizado pelos cidadãos, concentrando a maior parte das manifestações registradas. Esse resultado indica uma clara preferência pelo atendimento telefônico, possivelmente associada à facilidade de acesso, à gratuidade do serviço e à possibilidade de interação direta e imediata com um atendente, o que pode transmitir maior sensação de resolutividade e acolhimento ao usuário.

3.4 Análise dos Assuntos de Nível mais Frequentes

A identificação dos assuntos mais frequentes constitui uma etapa fundamental da análise, pois permite compreender quais temas concentram a maior parte das manifestações registradas na Ouvidoria da ANTT. Ao analisar os assuntos em diferentes níveis de agregação, torna-se possível identificar tanto padrões gerais de demanda quanto indícios de problemas recorrentes que impactam diretamente a experiência dos usuários. Essa abordagem fornece uma visão inicial do foco das manifestações e orienta os aprofundamentos analíticos subsequentes, direcionando a investigação para os temas que efetivamente concentram maior relevância no conjunto de dados.

3.4.1 Análise dos Assuntos de Nível 1 mais Frequentes

Análise inicial dos assunto_nível_1 mais frequentes permite identificar os temas predominantes nas manifestações registradas na Ouvidoria da ANTT. A visualização a seguir apresenta os top 5 assuntos de nível 1 mais recorrentes, oferecendo uma visão geral das principais demandas dos usuários.

O gráfico evidencia uma concentração significativa das manifestações no tema “Transporte Rodoviário de Passageiros”, que se destaca de forma expressiva em relação aos demais assunto_nivel_1. Esse resultado indica que a maior parte das demandas dos usuários está diretamente relacionada aos serviços de transporte de passageiros, sugerindo elevada exposição desse setor a reclamações, solicitações ou questionamentos recorrentes. Diante desse cenário, torna-se pertinente aprofundar a análise nos níveis subsequentes de classificação associados a esse assunto, a fim de identificar com maior precisão os tipos de problemas ou demandas mais frequentes.

Em contrapartida, os demais assuntos — como Atendimento da Ouvidoria, Administração e Transporte Rodoviário de Cargas — apresentam volumes consideravelmente menores, o que indica uma distribuição menos complexa das manifestações nesses eixos. Isso reforça o papel analítico do detalhamento hierárquico principalmente para os assuntos mais abrangentes e recorrentes, onde a decomposição em níveis inferiores se torna essencial para uma compreensão mais precisa das causas subjacentes.

3.4.2 Análise dos Assuntos de Nível 2 mais Frequentes

Ao longo da análise, o assunto_nivel_2 mostrou-se especialmente relevante por representar um nível intermediário de categorização: mais específico do que o assunto_nivel_1, porém ainda suficientemente generalista quando comparado aos níveis mais detalhados. Essa característica permite capturar padrões temáticos de forma mais precisa, sem perder a capacidade de interpretação agregada dos dados. Diante disso, torna-se pertinente identificar e analisar os assuntos de nível 2 mais frequentes, a fim de compreender com maior clareza as principais demandas apresentadas pelos usuários à Ouvidoria da ANTT.

O gráfico evidencia uma forte concentração das manifestações no assunto_nivel_2 “Regular”, que se destaca de forma expressiva em relação às demais categorias. Esse resultado indica que grande parte das demandas apresenta caráter genérico, o que limita a compreensão detalhada dos motivos específicos dos contatos nesse nível de análise. Por essa razão, torna-se pertinente aprofundar a investigação no assunto_nivel_3 associado às ocorrências classificadas como “Regular”, a fim de identificar com maior precisão os temas subjacentes a essas manifestações. Em contrapartida, observa-se que a maioria das demais categorias tem seu atendimento encerrado já no assunto_nivel_2, não demandando maior detalhamento, o que reforça o papel do nível 3 principalmente como instrumento de refinamento das classificações mais amplas.

3.4.3 Análise dos Assuntos de Nível 3 mais Frequentes dentro do Assunto “Regular”

Aprofundando a análise no assunto_nivel_3 das manifestações classificadas como “Regular”, torna-se possível identificar os temas específicos que predominam dentro dessa categoria ampla. A visualização a seguir apresenta o assunto de nível 3 mais frequente entre as manifestações enquadradas como “Regular”, oferecendo insights sobre as demandas específicas dos usuários nesse contexto.

A análise do gráfico evidencia que, dentro do assunto_nivel_2 “Regular”, praticamente todas as manifestações são classificadas no assunto_nivel_3 como “Longa Distância”, concentrando mais de 95% dos registros. Em razão dessa elevada concentração, optou-se por apresentar apenas essa categoria, uma vez que a inclusão de outras não agregaria valor analítico relevante. Esse resultado indica que o nível 3, nesse contexto, não oferece granularidade suficiente para compreender as particularidades das demandas. Diante disso, torna-se necessário avançar para a análise do assunto_nivel_4, que pode fornecer maior detalhamento e permitir uma interpretação mais precisa dos motivos subjacentes às manifestações.

3.4.4 Análise dos Assuntos de Nível 4 mais Frequentes dentro do Assunto “Regular” e “Longa Distância””

Aprofundando ainda mais a análise, o assunto_nivel_4 das manifestações classificadas como “Regular” e “Longa Distância” oferece uma visão detalhada dos temas específicos que predominam dentro dessa subcategoria. A visualização a seguir apresenta os assuntos de nível 4 mais frequentes entre essas manifestações, permitindo uma compreensão mais precisa das demandas dos usuários nesse contexto.

A análise do gráfico evidencia uma concentração extremamente elevada das manifestações no assunto de nível 4 “Bilhete de Passagem (Longa Distância)”, que supera de forma expressiva todas as demais categorias. Esse resultado indica que, mesmo após sucessivos refinamentos nos níveis de classificação, a maior parte das demandas relacionadas ao tema “Regular” e “Longa Distância” permanece fortemente associada a questões envolvendo a comercialização e o acesso a passagens.

As demais categorias — como Benefício do Idoso, Itinerário/Linha/Frequência/Horário, AtrasoRaso e Avaria Mecânica — apresentam volumes significativamente inferiores, reforçando o caráter predominante do tema relacionado ao bilhete de passagem. Essa assimetria sugere que o nível 4 ainda agrega diferentes situações sob uma mesma categoria ampla, o que limita a compreensão detalhada das demandas dos usuários.

Diante desse cenário, torna-se metodologicamente pertinente realizar a última etapa de aprofundamento no assunto_nivel_5, especificamente para as ocorrências classificadas como “Bilhete de Passagem (Longa Distância)”, com o objetivo de identificar subtemas mais específicos e compreender com maior precisão os principais motivos que levam os usuários a acionar a Ouvidoria da ANTT nesse contexto.

3.4.5 Análise dos Assuntos de Nível 5 mais Frequentes dentro do Assunto “Regular”, “Longa Distância” e “Bilhete de Passagem (Longa Distância)”

Aprofundando a análise para o assunto_nivel_5 das manifestações classificadas como “Regular”, “Longa Distância” e “Bilhete de Passagem (Longa Distância)”, torna-se possível identificar os temas específicos que predominam dentro dessa subcategoria. A visualização a seguir apresenta os assuntos de nível 5 mais frequentes entre essas manifestações, oferecendo insights sobre as demandas específicas dos usuários nesse contexto.

A análise hierárquica dos assuntos de atendimento, do nível 1 ao nível 5, evidencia um padrão claro de concentração progressiva das manifestações em poucos temas centrais, à medida que se aprofunda o nível de detalhamento. Nos níveis mais agregados, observa-se inicialmente uma predominância de classificações amplas, como “Regular”, que, embora representem grande volume de registros, oferecem limitada capacidade explicativa sobre as reais motivações dos contatos.

Com o refinamento sucessivo para os níveis 3 e 4, torna-se evidente que a maior parte dessas manifestações está associada ao contexto de transporte rodoviário de passageiros em longa distância, especialmente a questões relacionadas ao bilhete de passagem. Esse resultado demonstra que os níveis intermediários ainda concentram diferentes demandas sob categorias genéricas, o que reforça a necessidade de aprofundamento analítico.

O exame final no assunto_nivel_5 revela, de forma inequívoca, que a esmagadora maioria das manifestações refere-se ao Benefício do Deficiente/Passe Livre em viagens de longa distância, superando amplamente quaisquer outros subtemas, como benefício do jovem estudante ou devolução de valores pagos. Essa concentração extrema indica que o principal foco de insatisfação, dúvida ou demanda dos usuários está relacionado ao acesso, à utilização ou às condições desse benefício específico.

De maneira geral, os resultados demonstram que apenas a análise nos níveis mais detalhados permite compreender efetivamente as demandas da sociedade, uma vez que os níveis superiores tendem a mascarar problemas específicos ao agrupar temas distintos em categorias genéricas. Assim, a abordagem hierárquica adotada mostrou-se fundamental para revelar o verdadeiro núcleo das manifestações encaminhadas à Ouvidoria da ANTT, fornecendo subsídios relevantes para o aprimoramento de políticas públicas, processos de atendimento e estratégias de comunicação institucional.

3.5 Análise da Sazonalidade por Tipos de Mensagem

A análise da sazonalidade dos principais tipos de mensagem ao longo do período de janeiro de 2022 a dezembro de 2023 revela padrões distintos que podem estar relacionados a fatores sazonais, eventos específicos ou campanhas de comunicação. A visualização a seguir apresenta a evolução mensal dos três tipos de mensagem mais frequentes, permitindo identificar tendências e variações ao longo do tempo.

Observa-se que o volume de Pedidos de Informação mantém uma tendência relativamente desgovernada, com picos ocasionais que podem estar relacionados a eventos específicos ou campanhas de comunicação. Em contraste, as Reclamações apresentam uma tendência ascendente, especialmente a partir de maio de 2023, culminando em um aumento significativo em meses posteriores. Esse comportamento sugere uma crescente insatisfação dos usuários ou uma maior conscientização sobre os canais de reclamação disponíveis. As Outras Solicitações também exibem variações, embora em menor escala, indicando que esse tipo de manifestação é menos sensível a fatores sazonais. Esses insights são cruciais para a Ouvidoria da ANTT, pois permitem identificar períodos de maior demanda e ajustar estratégias de atendimento e comunicação com os usuários.

3.6 Análise dos Recontatos por Protocolo

A análise dos recontatos por protocolo visa compreender a frequência com que os usuários retornam à Ouvidoria da ANTT para registrar múltiplas manifestações relacionadas a um mesmo protocolo. Essa métrica é fundamental para avaliar a eficácia do atendimento inicial e identificar possíveis lacunas no processo de resolução de demandas. A visualização a seguir apresenta a distribuição dos recontatos ao longo do período analisado, destacando o número de protocolos que geraram múltiplos registros.

É possível observar que o número de recontatos por protocolo diminuiu signitivamente no segundo semestre de 2022, mantendo-se em níveis mais baixos ao longo de 2023. Esse comportamento pode indicar uma melhoria na resolução das demandas iniciais ou uma maior satisfação dos usuários com o atendimento prestado pela Ouvidoria. No entanto, é importante considerar que outros fatores, como mudanças nos processos internos ou na comunicação com os usuários, também podem influenciar essa métrica. A análise contínua dos recontatos é essencial para identificar tendências e ajustar estratégias de atendimento, visando sempre a melhoria da experiência do usuário e a eficácia na resolução das manifestações registradas.

3.7 Conclusão da Análise Exploratória com Visão de Negócio

A análise exploratória das manifestações da Ouvidoria da ANTT, referentes aos anos de 2022 e 2023, evidenciou que, embora o volume total de registros tenha permanecido relativamente estável, houve uma mudança significativa no perfil das demandas, especialmente no crescimento expressivo das reclamações em 2023.

A decomposição hierárquica dos assuntos demonstrou que categorias amplas, como “Regular”, concentram grande volume de registros, mas mascaram problemas específicos, os quais só se tornam visíveis nos níveis mais detalhados. Ao aprofundar a análise até o assunto_nivel_5, identificou-se que a maior parte das manifestações está fortemente concentrada em questões relacionadas ao Benefício do Deficiente/Passe Livre em viagens de longa distância, revelando um ponto crítico de atenção para a política pública regulada pela Agência.

Adicionalmente, a análise dos registros classificados como “Anônimo” evidenciou que muitos deles correspondem, na prática, a atendimentos não identificados por limitações operacionais, e não a uma escolha deliberada do usuário pelo anonimato, indicando uma oportunidade de aprimoramento conceitual e operacional no processo de registro das manifestações.

Esses resultados reforçam a importância de análises orientadas por granularidade temática, bem como da utilização estratégica dos dados da Ouvidoria como instrumento de apoio à tomada de decisão institucional, ao aprimoramento dos canais de atendimento e ao direcionamento de ações regulatórias e comunicacionais da ANTT.


4 Machine Learning para Apoio à Triagem

Nesta seção, é desenvolvido um modelo de Machine Learning com o objetivo de auxiliar a triagem automática das manifestações recebidas pela Ouvidoria da ANTT. A proposta consiste em construir um classificador capaz de prever o assunto_nivel_1 a partir de variáveis categóricas, numéricas e binárias disponíveis na base de dados.

Para essa finalidade, são explorados dois algoritmos com características distintas: Regressão Logística, que atua como um modelo linear e interpretável, e Random Forest, um método baseado em árvores de decisão que captura relações não lineares e interações complexas entre as variáveis. A utilização de ambos permite comparar desempenho, robustez e adequação ao problema de triagem.

4.1 Ajuste de Variáveis e Preparação dos Dados

Antes do treinamento dos modelos, são aplicados critérios de preparação dos dados visando melhorar a qualidade do aprendizado e a confiabilidade dos resultados.

Inicialmente, é realizada a remoção de classes com baixa frequência na variável alvo assunto_nivel_1. Classes com menos de 50 ocorrências são excluídas da base, pois tendem a gerar modelos instáveis e com baixo poder preditivo, além de dificultar a avaliação adequada do desempenho. Esse procedimento garante que todas as classes utilizadas no treinamento possuam representatividade mínima.

Em seguida, é feita uma amostragem estratificada de 5% da base resultante. A estratificação assegura que a distribuição das classes seja preservada na amostra, evitando distorções que poderiam comprometer o treinamento e a comparação entre modelos. Essa etapa também contribui para a redução do custo computacional, tornando o processo mais eficiente sem perder a estrutura essencial dos dados.

Por fim, a base amostrada é utilizada nas etapas subsequentes de separação entre variáveis independentes e dependente, pré-processamento e divisão entre conjuntos de treino e teste, sempre mantendo a proporção das classes. Dessa forma, estabelece-se um fluxo consistente e controlado para o desenvolvimento e avaliação dos modelos de Machine Learning aplicados à triagem das manifestações.

Classes removidas: {'LEI GERAL DE PROTEÇÃO DE DADOS PESSOAIS', 'TRANSPORTE DUTOVIÁRIO'}
Número de classes finais: 10
Base original: (1264262, 18)
Base amostrada (5%): (63212, 18)

4.2 Separação entre Variáveis Independentes e Dependente

Nesta etapa, é realizada a definição clara entre as variáveis independentes (features) e a variável dependente (target), o que é fundamental para a correta formulação do problema de aprendizado supervisionado.

A variável dependente escolhida é assunto_nivel_1, que representa o rótulo a ser previsto pelos modelos. Essa variável concentra a informação de interesse principal da análise, sendo utilizada como saída (y) no processo de treinamento e avaliação.

As variáveis independentes são organizadas de acordo com sua natureza:

  • Variáveis categóricas (features_cat): representam atributos qualitativos, como o tipo de usuário, a forma de recebimento da manifestação e características organizacionais ou temporais (mês). Essas variáveis não possuem uma escala numérica intrínseca e, portanto, exigem técnicas específicas de codificação no pré-processamento.

  • Variáveis numéricas (features_num): correspondem a atributos quantitativos, como o ano do registro e a quantidade de contatos associados ao protocolo, permitindo operações matemáticas diretas.

  • Variáveis binárias (features_bin): assumem apenas dois estados possíveis (por exemplo, 0 ou 1), como a variável recontato, indicando a ocorrência ou não de um novo contato relacionado à manifestação.

Após a definição das listas de variáveis, é realizada a separação efetiva dos dados, em que o conjunto X reúne todas as variáveis independentes (categóricas, numéricas e binárias), enquanto o vetor y contém exclusivamente a variável dependente. Essa estruturação garante organização, clareza e compatibilidade com os pipelines de pré-processamento e modelagem adotados nas etapas subsequentes.

target = 'assunto_nivel_1'

features_cat = [
    'tipo_usuario',
    'forma_recebimento',
    'tipo_mensagem',
    'estrutura_organizacional',
    'mes'
]

features_num = [
    'ano',
    'qtd_contatos_protocolo'
]

features_bin = [
    'recontato'
]

X = df_sample[features_cat + features_num + features_bin]
y = df_sample[target]

4.3 Divisão entre Conjuntos de Treino e Teste

A divisão do conjunto de dados em treino e teste é uma etapa essencial no fluxo de modelagem, pois permite avaliar o desempenho do modelo em dados não vistos durante o treinamento, fornecendo uma estimativa mais realista de sua capacidade de generalização.

No código apresentado, a função train_test_split é utilizada para separar as variáveis explicativas (X) e a variável alvo (y) em dois subconjuntos distintos:

  • Conjunto de treino (X_train, y_train): utilizado para ajustar os parâmetros do modelo.
  • Conjunto de teste (X_test, y_test): reservado exclusivamente para a avaliação final do modelo.

O parâmetro test_size=0.2 define que 20% dos dados serão destinados ao conjunto de teste, enquanto os 80% restantes compõem o conjunto de treino. Essa proporção é amplamente adotada por equilibrar a quantidade de dados disponíveis para aprendizado e avaliação.

O uso de stratify=y garante que a distribuição das classes da variável alvo seja preservada em ambos os conjuntos. Essa estratificação é especialmente importante em problemas de classificação, principalmente quando há desbalanceamento entre as classes, evitando vieses na avaliação do modelo.

Por fim, o parâmetro random_state=42 fixa a semente de aleatoriedade do processo, assegurando reprodutibilidade dos resultados. Dessa forma, a mesma divisão entre treino e teste será obtida sempre que o código for executado, facilitando comparações entre diferentes modelos e experimentos.

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(
    X,
    y,
    test_size=0.2,
    stratify=y,
    random_state=42
)

4.4 Pré-processamento dos Dados

Antes do treinamento dos modelos de aprendizado de máquina, é fundamental realizar o pré-processamento dos dados, garantindo que as variáveis estejam em um formato adequado e comparável. No código apresentado, esse processo é estruturado por meio de um pipeline de pré-processamento utilizando o ColumnTransformer, que permite aplicar transformações distintas a diferentes grupos de variáveis de forma organizada e reproduzível.

4.4.1 Tratamento das Variáveis Categóricas

As variáveis categóricas (features_cat) são transformadas por meio do One-Hot Encoding, técnica que converte categorias em colunas binárias. Cada coluna representa a presença ou ausência de uma determinada categoria, evitando a introdução de relações ordinais inexistentes entre os valores categóricos.

O parâmetro handle_unknown='ignore' garante que categorias não vistas durante o treinamento não causem erros na fase de predição, sendo simplesmente ignoradas. Já o parâmetro min_frequency=100 agrupa categorias raras (com frequência inferior a 100 ocorrências) em uma única categoria, reduzindo a dimensionalidade do conjunto de dados e mitigando problemas relacionados à alta esparsidade.

4.4.2 Tratamento das Variáveis Numéricas e Binárias

As variáveis numéricas e binárias (features_num + features_bin) são padronizadas utilizando o StandardScaler. Essa técnica transforma os dados para que tenham média zero e desvio padrão igual a um, o que é especialmente importante para modelos sensíveis à escala das variáveis, como regressão logística e redes neurais.

A padronização garante que todas as variáveis contribuam de maneira equilibrada para o aprendizado do modelo, evitando que atributos com maiores magnitudes dominem o processo de otimização.

4.4.3 Integração no Pipeline

O ColumnTransformer integra todas essas transformações em um único pipeline, assegurando que o mesmo pré-processamento seja aplicado de forma consistente tanto nos dados de treino quanto nos dados de teste. Essa abordagem reduz riscos de data leakage, melhora a reprodutibilidade dos experimentos e facilita a integração com os modelos de machine learning do scikit-learn.

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline

preprocessor = ColumnTransformer(
    transformers=[
        (
            'cat',
            OneHotEncoder(
                handle_unknown='ignore',
                min_frequency=100
            ),
            features_cat
        ),
        (
            'num',
            Pipeline(
                steps=[
                    ('scaler', StandardScaler())
                ]
            ),
            features_num + features_bin
        )
    ]
)

4.5 Treinamento dos Modelos

Nesta etapa, são treinados os dois modelos de Machine Learning definidos para o apoio à triagem automática das manifestações: Regressão Logística e Random Forest. Ambos são integrados a um pipeline que combina o pré-processamento dos dados e o algoritmo de classificação em um único fluxo, garantindo consistência e evitando vazamento de informação (data leakage).

4.5.1 Regressão Logística

A Regressão Logística é configurada como um classificador multiclasse, adequada para problemas de classificação supervisionada com múltiplas categorias na variável alvo. O parâmetro max_iter=1000 define um número elevado de iterações para assegurar a convergência do algoritmo, especialmente em conjuntos de dados com grande número de variáveis geradas pelo One-Hot Encoding.

O uso de class_weight='balanced' ajusta automaticamente os pesos das classes de forma inversamente proporcional à sua frequência, mitigando os efeitos do desbalanceamento entre as categorias do assunto_nivel_1. O parâmetro random_state=42 garante a reprodutibilidade dos resultados.

A Regressão Logística é então inserida em um Pipeline juntamente com o pré-processador, assegurando que todas as transformações sejam aprendidas exclusivamente a partir do conjunto de treino e aplicadas de forma idêntica durante o treinamento do modelo.

from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline

logreg = LogisticRegression(
    max_iter=1000,
    class_weight='balanced',
    random_state=42
)

pipeline_logreg = Pipeline(
    steps=[
        ('preprocess', preprocessor),
        ('classifier', logreg)
    ]
)

pipeline_logreg.fit(X_train, y_train)
Pipeline(steps=[('preprocess',
                 ColumnTransformer(transformers=[('cat',
                                                  OneHotEncoder(handle_unknown='ignore',
                                                                min_frequency=100),
                                                  ['tipo_usuario',
                                                   'forma_recebimento',
                                                   'tipo_mensagem',
                                                   'estrutura_organizacional',
                                                   'mes']),
                                                 ('num',
                                                  Pipeline(steps=[('scaler',
                                                                   StandardScaler())]),
                                                  ['ano',
                                                   'qtd_contatos_protocolo',
                                                   'recontato'])])),
                ('classifier',
                 LogisticRegression(class_weight='balanced', max_iter=1000,
                                    random_state=42))])

4.5.2 Random Forest

O segundo modelo treinado é o Random Forest, um algoritmo de ensemble baseado em múltiplas árvores de decisão, capaz de capturar relações não lineares e interações complexas entre as variáveis.

O parâmetro n_estimators=100 define o número de árvores na floresta, enquanto max_depth=20 limita a profundidade máxima de cada árvore, ajudando a controlar o sobreajuste (overfitting). O parâmetro min_samples_leaf=50 impõe um número mínimo de observações em cada folha, tornando o modelo mais robusto e menos sensível a ruídos nos dados.

Assim como na Regressão Logística, o uso de class_weight='balanced' contribui para lidar com o desbalanceamento das classes, e random_state=42 assegura a reprodutibilidade.

O Random Forest também é encapsulado em um Pipeline com o mesmo pré-processador, garantindo coerência metodológica e possibilitando uma comparação justa de desempenho entre os dois modelos treinados.

from sklearn.ensemble import RandomForestClassifier
from sklearn.pipeline import Pipeline

rf = RandomForestClassifier(
    n_estimators=100,
    max_depth=20,
    min_samples_leaf=50,
    class_weight='balanced',
    random_state=42
)

pipeline_rf = Pipeline(
    steps=[
        ('preprocess', preprocessor),
        ('classifier', rf)
    ]
)

pipeline_rf.fit(X_train, y_train)
Pipeline(steps=[('preprocess',
                 ColumnTransformer(transformers=[('cat',
                                                  OneHotEncoder(handle_unknown='ignore',
                                                                min_frequency=100),
                                                  ['tipo_usuario',
                                                   'forma_recebimento',
                                                   'tipo_mensagem',
                                                   'estrutura_organizacional',
                                                   'mes']),
                                                 ('num',
                                                  Pipeline(steps=[('scaler',
                                                                   StandardScaler())]),
                                                  ['ano',
                                                   'qtd_contatos_protocolo',
                                                   'recontato'])])),
                ('classifier',
                 RandomForestClassifier(class_weight='balanced', max_depth=20,
                                        min_samples_leaf=50,
                                        random_state=42))])

4.6 Avaliação dos Modelos

A avaliação dos modelos é realizada a partir das previsões geradas sobre o conjunto de teste, que contém dados não utilizados no treinamento. Para cada classificador (Regressão Logística e Random Forest), são calculadas métricas quantitativas e visualizações que permitem analisar o desempenho geral e o comportamento do modelo em cada classe do assunto_nivel_1.

O principal instrumento de avaliação utilizado é o relatório de classificação, que apresenta, para cada classe, as métricas precision, recall, f1-score e support, além de médias agregadas. Essas métricas são fundamentais para compreender não apenas a acurácia global, mas também como o modelo se comporta diante de diferentes tipos de erro.

4.6.1 Precision (Precisão)

A precision mede a proporção de previsões corretas entre todas as previsões realizadas para uma determinada classe. Em outras palavras, indica o quão confiáveis são as previsões positivas feitas pelo modelo para aquela classe.

\[\text{Precision} = \frac{\text{Verdadeiros Positivos (VP)}}{\text{Verdadeiros Positivos (VP)} + \text{Falsos Positivos (FP)}}\]

Um valor alto de precision significa que, quando o modelo prevê uma determinada categoria de assunto_nivel_1, essa previsão tende a estar correta. Essa métrica é especialmente importante em cenários em que classificações incorretas geram alto custo, como o encaminhamento equivocado de uma manifestação para o setor errado.

4.6.2 Recall (Revocação ou Sensibilidade)

O recall mede a capacidade do modelo de identificar corretamente todas as ocorrências reais de uma determinada classe. Ele indica qual proporção dos exemplos pertencentes à classe foi efetivamente reconhecida pelo modelo.

\[\text{Recall} = \frac{\text{Verdadeiros Positivos (VP)}}{\text{Verdadeiros Positivos (VP)} + \text{Falsos Negativos (FN)}}\]

Um recall elevado indica que o modelo consegue capturar a maior parte das manifestações daquela classe, reduzindo a quantidade de casos que deixam de ser identificados corretamente. No contexto da triagem da Ouvidoria, isso é relevante para evitar que manifestações importantes passem despercebidas ou sejam classificadas de forma genérica.

4.6.3 F1-score

O f1-score é a média harmônica entre precision e recall, oferecendo uma métrica única que equilibra ambas. Ele é particularmente útil quando há desbalanceamento entre as classes, pois penaliza modelos que apresentam bom desempenho em apenas uma das duas métricas.

\[\text{F1-score} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}\]

Valores elevados de f1-score indicam que o modelo consegue manter um bom equilíbrio entre prever corretamente uma classe e identificar a maior parte de suas ocorrências reais.

4.6.4 Support (Suporte)

O support corresponde ao número de observações reais de cada classe presentes no conjunto de teste. Essa métrica não avalia diretamente o desempenho do modelo, mas fornece um contexto essencial para a interpretação das demais métricas.

Classes com suporte muito baixo tendem a apresentar métricas mais instáveis, enquanto classes com maior suporte fornecem estimativas mais confiáveis de precision, recall e f1-score. Por isso, o support ajuda a compreender o peso relativo de cada classe na avaliação geral do modelo.

4.6.5 Matriz de Confusão

A matriz de confusão é uma representação tabular que permite analisar, de forma detalhada, os acertos e erros de classificação do modelo. Nessa matriz, as linhas representam as classes reais e as colunas representam as classes preditas pelo modelo. Cada célula indica a quantidade de observações classificadas em uma determinada combinação de classe real e classe prevista.

A diagonal principal da matriz de confusão concentra os acertos do modelo, ou seja, os casos em que a classe predita coincide com a classe real. Valores elevados ao longo dessa diagonal indicam que o modelo apresenta bom desempenho na identificação correta das classes do assunto_nivel_1.

Por outro lado, os valores fora da diagonal principal representam os erros de classificação. Esses erros mostram para quais classes as manifestações estão sendo incorretamente atribuídas, permitindo identificar padrões de confusão entre categorias específicas. Esse tipo de análise é especialmente relevante no contexto da triagem automática, pois evidencia quais assuntos tendem a ser confundidos entre si e podem demandar ajustes no modelo, inclusão de novas variáveis ou refinamento das classes.

Assim, a matriz de confusão complementa as métricas numéricas ao fornecer uma visão qualitativa do comportamento do modelo, facilitando a interpretação dos resultados e a identificação de oportunidades de melhoria.

4.6.6 Acurácia Geral

A acurácia geral mede a proporção total de previsões corretas realizadas pelo modelo em relação ao número total de observações avaliadas. Em termos simples, ela indica quantas manifestações foram corretamente classificadas, independentemente da classe.

\[\text{Acurácia} = \frac{\text{Número de Previsões Corretas}}{\text{Número Total de Observações}}\]

Essa métrica é calculada a partir da soma dos valores da diagonal principal da matriz de confusão, que representa os acertos do modelo, dividida pelo total de registros no conjunto de teste. Portanto, existe uma relação direta entre a acurácia e a concentração de valores elevados na diagonal principal.

Embora a acurácia forneça uma visão geral do desempenho do classificador, sua interpretação deve ser feita com cautela em problemas multiclasse e com possível desbalanceamento, como o da triagem das manifestações da Ouvidoria. Nesses casos, um valor elevado de acurácia pode mascarar desempenhos fracos em classes menos frequentes.

Por esse motivo, a acurácia geral deve ser analisada em conjunto com a matriz de confusão e métricas como precision, recall e f1-score, garantindo uma avaliação mais robusta e alinhada ao objetivo operacional do modelo.

4.6.7 Considerações Gerais

A análise conjunta dessas métricas permite uma avaliação mais completa do desempenho dos modelos do que a acurácia isoladamente. Em problemas de classificação multiclasse e potencialmente desbalanceados, como a triagem de manifestações da Ouvidoria, compreender os trade-offs entre precision e recall é fundamental para escolher o modelo mais adequado ao objetivo operacional da aplicação.

Relatório de Classificação – Regressão Logística (5% da Amostra)
                                            precision    recall  f1-score   support

                             ADMINISTRAÇÃO       0.94      0.84      0.88      1621
             ATENDIMENTO DA CONCESSIONÁRIA       0.12      0.33      0.18         3
                  ATENDIMENTO DA OUVIDORIA       0.99      0.76      0.86      3654
                             NÃO DETALHADO       0.03      0.91      0.07        34
              RODOVIAS FEDERAIS CONCEDIDAS       0.19      0.77      0.30       154
SERVIÇO DE ATENDIMENTO AO CONSUMIDOR - SAC       0.01      0.50      0.02         4
                    TRANSPORTE FERROVIÁRIO       0.05      0.75      0.10         8
                     TRANSPORTE MULTIMODAL       0.00      0.33      0.01         3
           TRANSPORTE RODOVIÁRIO DE CARGAS       0.98      0.79      0.88      1361
      TRANSPORTE RODOVIÁRIO DE PASSAGEIROS       0.97      0.87      0.92      5801

                                  accuracy                           0.83     12643
                                 macro avg       0.43      0.69      0.42     12643
                              weighted avg       0.96      0.83      0.88     12643
Acurácia – Regressão Logística (5% da Amostra): 0.8257

Relatório de Classificação – Random Forest (5% da Amostra)
                                            precision    recall  f1-score   support

                             ADMINISTRAÇÃO       0.91      0.85      0.88      1621
             ATENDIMENTO DA CONCESSIONÁRIA       0.05      0.67      0.10         3
                  ATENDIMENTO DA OUVIDORIA       0.99      0.79      0.88      3654
                             NÃO DETALHADO       0.03      0.79      0.07        34
              RODOVIAS FEDERAIS CONCEDIDAS       0.14      0.47      0.21       154
SERVIÇO DE ATENDIMENTO AO CONSUMIDOR - SAC       0.01      0.75      0.02         4
                    TRANSPORTE FERROVIÁRIO       0.07      1.00      0.12         8
                     TRANSPORTE MULTIMODAL       0.01      0.67      0.03         3
           TRANSPORTE RODOVIÁRIO DE CARGAS       1.00      0.82      0.90      1361
      TRANSPORTE RODOVIÁRIO DE PASSAGEIROS       0.97      0.86      0.91      5801

                                  accuracy                           0.83     12643
                                 macro avg       0.42      0.77      0.41     12643
                              weighted avg       0.96      0.83      0.88     12643
Acurácia - Random Forest (5% da Amostra) 0.8289

4.7 Conclusão Comparativa – Regressão Logística vs Random Forest (5% da Amostra)

4.7.1 Visão geral do desempenho

Os dois modelos testados — Regressão Logística e Random Forest — apresentaram resultados gerais muito parecidos, com uma acurácia próxima de 83%. Isso significa que, de forma geral, ambos conseguem classificar corretamente cerca de 8 em cada 10 manifestações recebidas pela Ouvidoria.

  • Regressão Logística: acurácia ≈ 82,6%
  • Random Forest: acurácia ≈ 82,9%

É importante destacar que acurácia mede apenas o total de acertos, sem indicar como esses acertos estão distribuídos entre os diferentes tipos de assunto. Por isso, apesar dos números semelhantes, o comportamento dos modelos é bastante diferente quando analisamos cada categoria separadamente.

4.7.2 Desempenho nos assuntos mais frequentes

Nos assuntos que concentram a maior parte das manifestações — como:

  • Transporte Rodoviário de Passageiros
  • Atendimento da Ouvidoria
  • Administração
  • Transporte Rodoviário de Cargas

os dois modelos apresentaram excelente desempenho. Em termos simples, isso significa que:

  • Quando o modelo aponta um desses assuntos, ele quase sempre está correto;
  • A maioria das manifestações desses temas é corretamente identificada;
  • Os erros são relativamente poucos e previsíveis.

Na prática, isso indica que ambos os modelos são confiáveis para a maior parte do volume de trabalho da Ouvidoria, onde se concentram os temas mais recorrentes.

4.7.3 Diferença principal: assuntos menos frequentes

A maior diferença entre os modelos aparece nos assuntos raros, ou seja, aqueles que ocorrem poucas vezes na base de dados.

4.7.3.1 Regressão Logística

  • Age de forma mais cautelosa;
  • Só classifica um assunto raro quando há maior certeza;
  • Comete menos erros por “excesso de confiança”;
  • Pode deixar de identificar alguns casos raros, mas evita classificações incorretas em grande escala.

4.7.3.2 Random Forest

  • Tenta identificar praticamente todos os casos raros;
  • Consegue encontrar quase todos eles;
  • Porém, acaba classificando muitas manifestações comuns como se fossem raras, mesmo quando não são;
  • Isso gera um grande número de erros desse tipo.

De forma simples:
o Random Forest prefere “não deixar passar nada”, enquanto a Regressão Logística prefere “errar menos”.

4.7.4 O que mostram as matrizes de confusão

As matrizes de confusão ajudam a visualizar esses comportamentos:

  • A diagonal principal concentra os acertos dos modelos;
  • Fora da diagonal estão os erros;
  • O Random Forest apresenta mais erros espalhados, principalmente envolvendo assuntos raros;
  • A Regressão Logística apresenta erros mais concentrados e previsíveis.

Isso indica que a Regressão Logística é mais estável, enquanto o Random Forest é mais sensível, mas menos preciso em certos contextos.

4.7.5 Médias macro e ponderadas

  • As métricas que dão peso igual a todos os assuntos mostram que o Random Forest “se sai melhor” em temas raros, mas sem grande qualidade.
  • As métricas que dão mais peso aos assuntos mais frequentes mostram que os dois modelos são praticamente equivalentes.

Ou seja, o ganho do Random Forest acontece principalmente onde há poucos dados, sem grande impacto no desempenho geral.

4.8 Conclusão Final

  • A Regressão Logística apresentou um desempenho mais equilibrado, cometendo menos erros graves e oferecendo classificações mais confiáveis.
  • O Random Forest mostrou potencial para identificar assuntos raros, mas comete muitos erros ao fazer isso, o que pode confundir a triagem automática.
  • Para o uso prático na Ouvidoria — onde confiabilidade e clareza são fundamentais — a Regressão Logística é a escolha mais adequada.
  • O Random Forest pode ser útil em situações específicas, desde que acompanhado de ajustes adicionais e revisão humana.

4.8.1 Conclusão prática

Para apoiar a triagem institucional das manifestações, a Regressão Logística oferece o melhor equilíbrio entre simplicidade, confiabilidade e desempenho.
O Random Forest é promissor, mas exige cuidados extras para evitar classificações equivocadas, especialmente em assuntos menos frequentes.