1. F1 指标概述与课程目标

说起药物关系预测,很多人上手就跑到模型搭建上去了。

模型跑完,拿着一堆数字发懵,不知道该怎么评估。

我个人习惯,在做任何分类任务之前,先把评估指标想清楚。尤其是 F1,它几乎贯穿了整个药物关系预测的评估环节。

为什么需要 F1?

先问你一个问题:如果我们预测两种药物之间有没有相互作用,数据里 95% 都是“无关”样本,只有 5% 是“有关”。

这时候你写个模型,只管输出“无关”,准确率直接 95%。

看着挺高对吧?但对真正有用的那 5%,你一个都没抓住。

这其实就是 数据不平衡 带来的陷阱。

我在项目中遇到过好几次类似的情况。第一次做药物相互作用预测时,我拿到一个公开数据集,好家伙,正负样本比例接近 1:10。我当时只看了准确率,觉得模型不错,结果后来一查召回率,惨不忍睹。

从那以后,我就养成了习惯:用 F1 来压舱。

F1 到底是什么?

F1 说白了就是 精确率(Precision) 和 召回率(Recall) 的调和平均。

你想想看:精确率管的是“我预测为正的那些,有多大比例是对的”;召回率管的是“真正的正样本里,我抓出来了多少”。

单独看哪一个都有偏颇,F1 把它们揉在一起,给你一个相对均衡的判断。

公式写出来很简单:

F1 = 2 * (Precision * Recall) / (Precision + Recall)

嗯,这里要注意,调和平均数对极端值很敏感。如果精确率或召回率有一个特别低,F1 就会掉得很难看。

换句话说,你只能在两个指标上同时表现好,F1 才好看。耍不了小聪明。

核心观点: F1 不是万能药,但在药物关系预测这种正负样本往往严重不平衡的场景下,它是最实用的单一评估指标之一。

课程目标,我们来拆一下

这门课一共 30 章,我把内容捋成了三个层次,你大概有个数:

层次 包含章节 核心任务
基础篇 第 1-8 章 搞清楚 F1 到底怎么算的,混淆矩阵、精确率、召回率,以及它们为什么在药物领域容易变样
实战篇 第 9-22 章 用真实数据集的例子,跑通 F1 的计算流程,处理多分类、阈值选择、置信度校准这些实际坑
进阶篇 第 23-30 章 多标签预测下的 F1 变体、跨数据集评估、统计显著性检验——让你能拿 F1 去发论文或做竞品分析

每一章我尽量都会带上我在 DrugBank 和 DDInter 数据集上踩过的坑。

有些经验你可能在其他地方看不到,比如为什么有些论文里 F1 看着很高,但在你的数据上一跑就现原形。

一个简单的 F1 计算例子

我们先别急着上框架,先用手动算一次。

假设你的模型对一批药物对做了预测,得到了下面这个混淆矩阵:

实际为正 实际为负
预测为正 80 (TP) 20 (FP)
预测为负 10 (FN) 890 (TN)

精确率 = 80 / (80+20) = 0.8

召回率 = 80 / (80+10) ≈ 0.889

F1 = 2 * 0.8 * 0.889 / (0.8+0.889) ≈ 0.842

看着还不错,0.842。如果我只看准确率呢?

准确率 = (80+890)/1000 = 0.97

0.97 比 0.842 漂亮多了吧?但刚才说过,这里负样本占了 891 条,模型在正样本上的表现其实没那么神。

F1 把这个水分挤掉了。我建议你以后报告指标时,把 F1、精确率、召回率都亮出来,不要只扔一个准确率。

为什么我选择把这个流程画成图

为了让你在进入后面章节之前有个整体框架,下面这张 SVG 图展示了 F1 在药物关系预测评估中的核心地位,以及它跟其他要素的连接关系。

F1 评估体系概览 F1 指标 精确率 召回率 混淆矩阵 药物数据 数据不平衡诊断 模型对比选择 📌 课程核心线索 从 F1 出发 → 透视图数据 → 用于不平衡诊断与模型选型 每章都会落到药物关系预测的具体实践中

一个容易踩的坑

我曾经被一个新手同事问过:“F1 是不是越高越好?”

嗯,理论上是的。但这里有个细节:F1 和阈值强相关。同一套模型,你把判断为正类的概率阈值从 0.5 改成 0.3,F1 可能会有明显变化。

你想想看,阈值降低后,召回率通常上升,但精确率会下降。F1 能否提升,要看两者变化的幅度。

小经验: 实践里我喜欢画 Precision-Recall 曲线,然后选那个让 F1 最大的阈值点。不要直接用默认的 0.5,尤其在药物数据这种不平衡场景下。

课前的心理准备

这门课不会一股脑丢给你一堆数学公式,然后让你自己琢磨。

我的做法是:每章的代码和例子,你都能在自己电脑上跑一遍。

我会用 Python 和 scikit-learn 做演示,偶尔会用到一些自定义函数,但都是你能看懂的那种。

还有一点——我提到的“药物关系预测”泛指所有判断药物之间是否具有某种关系(相互作用、副作用、协同作用等)的二分类或多标签任务。如果你研究的领域不同,但也是不平衡分类,大部分内容可以直接迁移过来。

注意: 不要拿着本课程的 F1 去套生成式任务的评估,那是另一回事。F1 在分类任务上才算得好使。