在二分类问题中,阳性和阴性似然比是评估分类器性能的重要指标。阳性似然比(LR+)和阴性似然比(LR-)分别表示在给定的测试结果下,样本属于正类或负类的可能性。这些比率可以帮助从先验概率推断出后验概率,从而对分类结果进行更准确的评估。
阳性似然比(LR+)定义为敏感性(sensitivity)与(1-特异性)(specificity)的比值。敏感性是指真正例(tp)占真正例和假负例(fn)总和的比例,而特异性是指真负例(tn)占真负例和假正例(fp)总和的比例。因此,LR+的计算公式为:
LR+ = sensitivity / (1 - specificity) = tp / (tp + fn) / (tn / (tn + fp))
阴性似然比(LR-)定义为(1-敏感性)与特异性的比值,计算公式为:
LR- = (1 - sensitivity) / specificity = (fp / (fp + tn)) / (tn / (tn + fp))
在这里,tp代表真正例的数量,fp代表假正例的数量,tn代表真负例的数量,fn代表假负例的数量。LR+的范围从1到无穷大,而LR-的范围从0到1。
LR+的值越大,表示正预测为真正例的可能性相对于先验概率越高。如果LR+等于1,则表示预测正类的样本属于任一类的概率相同,因此测试无用。LR-越接近0,表示给定样本为假负例的概率越低。如果LR-等于1,则测试无用,因为测试后患病的可能性没有变化。LR-大于1则表示分类器系统性地预测与真实标签相反的结果。
在医学领域,这种比率通常用于确定疾病的存在与否,分类器作为一个诊断测试,个体患病的先验概率可以是该疾病的流行率(即特定人群中受影响的比例),而后验概率则是在阳性测试结果下疾病真正存在的概率。
计算似然比的函数通常接受以下参数:
y_true: 1d array-like, or label indicator array / sparse matrix
真实(正确)的目标值。
y_pred: 1d array-like, or label indicator array / sparse matrix
分类器返回的估计目标值。
labels: array-like, default=None
用于索引矩阵的标签列表。这可以用来选择正类和负类,并按照labels=[负类,正类]的顺序排列。如果为None,则使用在y_true或y_pred中至少出现一次的标签,并按排序顺序使用。
sample_weight: array-like of shape (n_samples,), default=None
样本权重。
raise_warning: bool, default=True
当出现零除错误时是否引发特定情况的警告消息。即使没有引发错误,函数在这种情况下也会返回nan。
函数返回一个包含两个浮点数的元组,第一个是阳性似然比,第二个是阴性似然比。
当假正例等于0时,阳性似然比未定义;当真负例等于0时,阴性似然比未定义;当真正例加假负例等于0时,两个比率都未定义。在这些情况下,如果raise_warning=True,则会引发UserWarning。
更多关于似然比在诊断测试中的信息,可以参考Wikipedia的相关条目。以下是使用Python中的scikit-learn库计算似然比的示例代码:
import numpy as np
from sklearn.metrics import class_likelihood_ratios
# 示例数据
y_true = np.array([0, 1, 0, 1, 0])
y_pred = np.array([1, 1, 0, 0, 0])
# 计算似然比
positive_likelihood_ratio, negative_likelihood_ratio = class_likelihood_ratios(y_true, y_pred)
print(positive_likelihood_ratio, negative_likelihood_ratio)
这段代码首先导入了必要的库,然后定义了真实标签和预测标签的数组,最后调用class_likelihood_ratios函数计算并打印出阳性和阴性似然比。