F1-Score
A pontuação F1 é a média harmônica entre precisão e revocação, por isso permanece baixa a menos que ambas sejam altas. Fórmula, F-beta, F1 macro e micro e uso em detecção.
A pontuação F1 é uma única métrica que combina precisão e revocação como sua média harmônica: F1 = 2 × precisão × revocação / (precisão + revocação). Seu valor vai de 0 a 1 e só chega a 1 quando um modelo não tem falsos positivos nem falsos negativos. Uma média harmônica é puxada para o menor dos valores de entrada, então a F1 continua baixa sempre que a precisão ou a revocação é baixa, o que a torna o resumo usual para problemas desbalanceados, como detecção de defeitos, triagem de fraudes e recuperação de documentos, nos quais a acurácia é enganosa. A pontuação F1 também é chamada de F-score balanceado ou medida F e, em máscaras de pixels binárias, corresponde ao coeficiente Dice.
Como a pontuação F1 é calculada#
Escrita em contagens da matriz de confusão, F1 = 2TP / (2TP + FP + FN). Os verdadeiros negativos nunca aparecem na fórmula, então a F1 mede apenas o desempenho do modelo na classe positiva. Isso é adequado para tarefas em que os positivos são raros e os negativos têm pouca importância; quando os verdadeiros negativos são importantes, o coeficiente de correlação de Matthews ou a acurácia balanceada considera as quatro células. O que diferencia a F1 de uma média simples é a média harmônica: um modelo com precisão de 1,0 e revocação de 0,1 tem média aritmética de 0,55 e F1 de 0,18.
F-Beta e média multiclasse#
A F1 atribui o mesmo peso à precisão e à revocação. A pontuação F-beta geral considera a revocação β vezes mais importante que a precisão; assim, F2 favorece a revocação, como na triagem médica, em que não detectar um caso tem um custo alto, e F0,5 favorece a precisão, como na filtragem de spam, em que um falso alarme tem um custo alto.
Com mais de duas classes, a F1 é calculada para cada classe e, em seguida, é feita a média:
- F1 macro: a média não ponderada das pontuações por classe, de modo que uma classe rara conta tanto quanto uma classe comum.
- F1 ponderada: a média das pontuações por classe ponderada pelo número de exemplos verdadeiros de cada classe.
- F1 micro: uma única F1 calculada a partir de TP, FP e FN agrupados em todas as classes. Em tarefas multiclasse de rótulo único, ela equivale à acurácia.
from sklearn.metrics import f1_score
# Imbalanced inspection labels: 8 good parts, 2 defective parts
y_true = ["ok"] * 8 + ["defect"] * 2
y_pred = ["ok"] * 7 + ["defect"] + ["defect", "ok"]
# F1 for each class, then two ways to average them
per_class = f1_score(y_true, y_pred, labels=["ok", "defect"], average=None)
print(f"F1 ok: {per_class[0]:.3f}, F1 defect: {per_class[1]:.3f}")
print(f"Macro F1: {f1_score(y_true, y_pred, average='macro'):.3f}")
print(f"Micro F1: {f1_score(y_true, y_pred, average='micro'):.3f}")O script imprime F1 de 0,875 para peças boas e 0,500 para defeitos, F1 macro de 0,688 e F1 micro de 0,800. O modelo classifica corretamente 8 de 10 peças, então a F1 micro equivale à acurácia de 0,80, e a F1 macro é menor porque a classe de defeitos, de desempenho fraco, conta tanto quanto a classe majoritária.
F1 em detecção de objetos#
Um detector tem precisão e revocação em cada limiar de confiança, portanto também tem uma curva F1 em função da confiança. O pico dessa curva indica o limiar de confiança que melhor equilibra detecções falsas e objetos não detectados — o único ponto de operação em que um modelo implantado funciona. A F1 complementa a precisão média (mAP), que integra todos os limiares para classificar modelos. A validação do YOLO26 salva essa curva como BoxF1_curve.png e informa a precisão, a revocação e a F1 por classe na confiança em que a F1 média atinge o pico.
from ultralytics import YOLO
# Load a pretrained YOLO26 nano detector
model = YOLO("yolo26n.pt")
# Validation sweeps confidence thresholds and saves BoxF1_curve.png
metrics = model.val(data="coco8.yaml")
# Precision, recall, and F1 at the confidence where mean F1 peaks
print(f"Precision: {metrics.box.mp:.3f}")
print(f"Recall: {metrics.box.mr:.3f}")
print(f"Mean F1: {metrics.box.f1.mean():.3f}")A F1 média calcula a média dos valores de F1 por classe, então pode diferir ligeiramente da média harmônica da precisão média e da revocação média impressas acima.










