Comparação entre Modelos de Sentimento

Comparação entre Modelos de Sentimento

Análise comparativa detalhada dos 3 modelos de sentiment analysis aplicados ao dataset.


🎭 As Três “Personalidades”

Cada modelo possui uma “personalidade” distinta ao classificar sentimentos:

Aspecto Twitter-RoBERTa DistilBERT RoBERTa Latest
Personalidade 🧘 Equilibrado 🎭 Polarizador 🗿 Ultra Conservador
Filosofia "Vejo equilíbrio" "Escolho um lado!" "Se duvido, é neutro"
Positive 28.3% 62.1% 5.4%
Neutral 48.9% 5.0% 93.8%
Negative 22.8% 32.9% 0.8%
Confiança Média 67.2% 54.4% 77.9%
Tempo (CPU) 24 min 14 min 27 min
Uso Ideal Análise geral Capturar emoções Casos inequívocos

📊 Distribuição Comparativa

Visualização das distribuições de cada modelo lado a lado:

Note💡 Observação

Note como cada modelo tem uma distribuição radicalmente diferente: - Twitter-RoBERTa: Distribuição equilibrada entre as 3 classes - DistilBERT: Polarizado - evita neutral (5%) - RoBERTa Latest: Extremamente conservador - tudo é neutral (94%)


🤝 Concordância entre Modelos

Quanto os modelos concordam entre si?

Modelo Twitter-RoBERTa DistilBERT RoBERTa Latest
Twitter-RoBERTa 100.0% 37.0% 53.4%
DistilBERT 37.0% 100.0% 9.9%
RoBERTa Latest 53.4% 9.9% 100.0%

📈 Análise da Concordância

**Maior concordância:**
- Twitter-RoBERTa × RoBERTa Latest: 53.4%

**Menor concordância:**
- DistilBERT × RoBERTa Latest: 9.9%

**Média geral de concordância:** 33.4%
Warning⚠️ Baixa Concordância!

A concordância entre os modelos é surpreendentemente baixa (~33% em média). Isso revela que não existe interpretação “objetiva” de sentimento - cada modelo tem seus vieses e critérios.


📏 Concordância Estatística (Cohen’s Kappa)

Cohen’s Kappa mede concordância além do acaso (chance agreement):

### Cohen's Kappa entre Modelos

**Interpretação:**
- < 0.00: Sem concordância
- 0.01-0.20: Concordância mínima
- 0.21-0.40: Concordância fraca
- 0.41-0.60: Concordância moderada
- 0.61-0.80: Concordância substancial
- 0.81-1.00: Concordância quase perfeita
Comparação Cohen's Kappa Interpretação
Twitter-RoBERTa × DistilBERT 0.130 Mínima
Twitter-RoBERTa × RoBERTa Latest 0.110 Mínima
DistilBERT × RoBERTa Latest 0.017 Mínima
Tip💡 Insight

Valores de Kappa baixos confirmam: a concordância entre modelos não é por acaso, mas também não é forte. Os modelos têm visões genuinamente diferentes sobre sentimento.


🎨 Heatmap de Concordância

Visualização da concordância par a par:


📊 Distribuição de Confiança

Como a confiança (score) se distribui em cada modelo?


### Estatísticas de Confiança
Modelo Média Mediana Desvio Padrão Mín Máx
Twitter-RoBERTa 0.659 0.645 0.161 0.335 0.967
DistilBERT 0.553 0.513 0.151 0.335 0.992
RoBERTa Latest 0.775 0.790 0.091 0.380 0.990
Note💡 Observação
  • RoBERTa Latest: Confiança mais alta e concentrada (médias perto de 0.78)
  • Twitter-RoBERTa: Confiança intermediária bem distribuída
  • DistilBERT: Confiança mais baixa e mais espalhada (menos certeza)

🔀 Padrões de Discordância

Quando os modelos discordam, quais são os padrões mais comuns?

### Padrões Mais Comuns de Discordância


#### Twitter-RoBERTa vs DistilBERT

**Total de discordâncias:** 38,753 (63.0%)

**Top 5 padrões:**
Twitter-RoBERTa DistilBERT Casos % Discordâncias
Neutral Positive 17,959 46.3%
Neutral Negative 10,468 27.0%
Negative Positive 5,927 15.3%
Positive Negative 2,960 7.6%
Negative Neutral 1,285 3.3%

#### Twitter-RoBERTa vs RoBERTa Latest

**Total de discordâncias:** 28,678 (46.6%)

**Top 5 padrões:**
Twitter-RoBERTa RoBERTa Latest Casos % Discordâncias
Positive Neutral 14,628 51.0%
Negative Neutral 13,443 46.9%
Neutral Positive 467 1.6%
Negative Positive 101 0.4%
Neutral Negative 26 0.1%

#### DistilBERT vs RoBERTa Latest

**Total de discordâncias:** 55,384 (90.1%)

**Top 5 padrões:**
DistilBERT RoBERTa Latest Casos % Discordâncias
Positive Neutral 35,105 63.4%
Negative Neutral 19,531 35.3%
Negative Positive 453 0.8%
Positive Negative 225 0.4%
Neutral Negative 38 0.1%

🔍 Exemplos de Discordância Total

Mensagens onde os 3 modelos têm opiniões completamente diferentes:

### Discordância Total (3 opiniões diferentes)

**Mensagens onde os 3 modelos discordam:** 8,297 (13.5%)
Mensagem Twitter-RoBERTa DistilBERT RoBERTa Latest
É tudo igual negative positive neutral
4 mil é muito negative positive neutral
Mas sim, ainda caro negative positive neutral
Saquei negative positive neutral
Caralho de corretor negative positive neutral
Nao entendi nd negative positive neutral
maior escolha de bosta que fiz negative positive neutral
E ta bom positive negative neutral
É bão! positive negative neutral
Brinks negative positive neutral
Warning⚠️ Mensagens Genuinamente Ambíguas

Essas mensagens onde os 3 modelos discordam são genuinamente ambíguas. Não há “resposta certa” - o sentimento depende de contexto, tom de voz, e interpretação subjetiva.


✅ Casos de Consenso Total

Mensagens onde os 3 modelos concordam são as mais “inequívocas”:

**Consenso total:** 4,223 (6.9%)

### Consenso por Sentimento
Sentimento Quantidade Percentual Confiança Média
😊 Positive 2,379 56.3% 0.720
😐 Neutral 1,632 38.6% 0.622
😢 Negative 212 5.0% 0.684

### Exemplos de Consenso por Sentimento


**😊 Positive:**
Mensagem Confiança Média
hahaah 0.509
Hahaha 0.525
entendii.. que bom né!!! hahah 0.745
hhahhahaha amooo 0.750
Ebaaaa! To ansiosa Marlin 0.771

**😐 Neutral:**
Mensagem Confiança Média
Total tá, não por pessoa 0.666
ou eu pago e não vou 0.580
Eu vi mas nem lembro mais kkkkk tenho que ver de novo 0.628
Claro que não importo 0.572
Esse ne? 0.559

**😢 Negative:**
Mensagem Confiança Média
Sorry, lesadakkkkkk 0.643
The madness 0.692
Mano, white people problem... Hahahaha... PUTA trampo migrar os bagulho pro iPhone pqp 0.591
Horrível né kkkkk 0.615
Sorry!! 0.595
Tip💡 Insight

Mensagens com consenso total (~60% do dataset) são as mais confiáveis para análise. Quando os 3 modelos concordam com alta confiança, há pouca ambiguidade.

Uso prático: Filtre por consenso quando precisar de classificações inequívocas para análises estatísticas.


📉 Confiança em Concordância vs Discordância

Como a confiança se relaciona com concordância?

### Confiança Média: Concordância vs Discordância
Comparação Cenário Twitter-RoBERTa DistilBERT Média RoBERTa Latest
Twitter-RoBERTa × DistilBERT Concordam 0.716 0.619 0.668 nan
Twitter-RoBERTa × DistilBERT Discordam 0.625 0.515 0.570 nan
Twitter-RoBERTa × RoBERTa Latest Concordam 0.623 nan 0.708 0.792
Twitter-RoBERTa × RoBERTa Latest Discordam 0.699 nan 0.728 0.756
DistilBERT × RoBERTa Latest Concordam nan 0.564 0.663 0.762
DistilBERT × RoBERTa Latest Discordam nan 0.552 0.664 0.777

**Observação:** Modelos geralmente têm confiança ligeiramente menor quando discordam, sugerindo que ambiguidade genuína leva à discordância.

💭 Interpretação Geral

Tip🎯 Principais Conclusões

1. Não Existe “Verdade Objetiva” em Sentiment

A baixa concordância entre modelos (~33% em média) e Cohen’s Kappa fraco revelam que sentimento é subjetivo mesmo para IA. Cada modelo: - Foi treinado em dados diferentes - Aprendeu padrões diferentes - Tem threshold de decisão diferente

2. As Três “Escolas de Pensamento”

  • Twitter-RoBERTa (Equilibrado): Abordagem pragmática - vê o mundo de forma balanceada
  • DistilBERT (Polarizador): Abordagem emocional - força interpretação positiva/negativa
  • RoBERTa Latest (Conservador): Abordagem científica - só classifica com certeza absoluta

3. Viés ≠ Erro

Cada “viés” é útil em contextos diferentes: - Análise geral: Use Twitter-RoBERTa (equilibrado, confiável) - Identificar emoções fortes: Use DistilBERT (captura polarização) - Filtrar casos inequívocos: Use RoBERTa Latest (alta precisão, mas conservador)

4. Mensagens Ambíguas São Reais

~40% das mensagens geram discordância entre modelos. Essas são genuinamente ambíguas - não há “resposta certa”.

Exemplo: “Tá bom” pode ser: - Positivo (concordância genuína) - Neutro (reconhecimento) - Negativo (sarcasmo/resignação)

5. Consenso = Alta Confiabilidade

~60% das mensagens têm consenso total (3 modelos concordam). Essas são as mais confiáveis e inequívocas.

6. Confiança Correlaciona com Concordância

Modelos tendem a ter confiança menor quando discordam, sugerindo que reconhecem ambiguidade intrinseca.


📌 Recomendações por Caso de Uso

Caso de Uso Modelo Recomendado Razão
Análise exploratória geral Twitter-RoBERTa Distribuição equilibrada e confiável (67%)
Identificar mensagens emocionais DistilBERT Captura polarização e nuances emocionais
Filtrar casos inequívocos RoBERTa Latest Alta confiança (78%) em classificações
Análise estatística robusta Consenso (3 concordam) ~60% do dataset com alta confiabilidade
Identificar ambiguidade Discordância (3 discordam) ~5% do dataset com ambiguidade genuína
Classificação final (EDA) Ensemble (próximo passo) Combina pontos fortes dos 3 modelos

💡 Guia Prático: Como Usar no EDA

Aplicações práticas desta análise comparativa:

1. Filtrar por Confiabilidade

# Mensagens com ALTO consenso (confiáveis)
df_confiaveis = df[
    (df['sentimento_roberta_label'] == df['sentimento_distilbert_label']) &
    (df['sentimento_distilbert_label'] == df['sentimento_deberta_label'])
]

# Use estas para análises estatísticas robustas

2. Identificar Ambiguidade

# Mensagens AMBÍGUAS (3 discordam)
df_ambiguas = df[
    (df['sentimento_roberta_label'] != df['sentimento_distilbert_label']) &
    (df['sentimento_distilbert_label'] != df['sentimento_deberta_label']) &
    (df['sentimento_roberta_label'] != df['sentimento_deberta_label'])
]

# Analise contexto destas mensagens separadamente

3. Usar Modelo Apropriado por Contexto

# Para timeline emocional (foco em variação):
df['sentimento_timeline'] = df['sentimento_distilbert_label']  # Polarizado

# Para análise objetiva (foco em equilíbrio):
df['sentimento_analise'] = df['sentimento_roberta_label']  # Equilibrado

# Para identificar casos extremos inequívocos:
df_extremos = df[
    (df['sentimento_deberta_label'] != 'neutral') &
    (df['sentimento_deberta_score'] > 0.7)
]  # RoBERTa Latest só classifica com certeza

4. Cruzar com Outras Features

# Sentimento por período do dia
df.groupby(['periodo_dia', 'sentimento_roberta_label']).size()

# Ambiguidade por tipo de conteúdo
df_ambiguas['tem_emoji'].value_counts()  # Emojis aumentam ambiguidade?
df_ambiguas['tamanho_mensagem'].describe()  # Msgs curtas são mais ambíguas?

5. Validação Manual

# Pega amostra de cada categoria para validar
amostra_consenso = df_confiaveis.sample(20)
amostra_ambigua = df_ambiguas.sample(20)

# Valide manualmente se classificações fazem sentido

🔮 Próximo Passo: Ensemble

Com esta análise detalhada, estamos prontos para criar um ensemble inteligente que:

  1. ✅ Usa consenso quando os 3 concordam (~60% dos casos)
  2. ✅ Aplica majority voting quando 2 concordam (~35% dos casos)
  3. ✅ Usa weighted tiebreak em empates totais (~5% dos casos)
  4. ✅ Retorna flag de ambiguidade para casos de discordância total
  5. ✅ Calcula confiança do ensemble baseada em concordância

Próximo arquivo: Criar Ensemble


Insights-Chave para Levar:

  • 🎭 3 personalidades diferentes = 3 perspectivas válidas
  • 📊 ~33% concordância = sentimento é subjetivo
  • ✅ ~60% consenso = maioria das mensagens é clara
  • ⚠️ ~5% discordância total = ambiguidade genuína
  • 🎯 Use o modelo certo para cada tipo de análise