机器学习:精确率与召回率的权衡
高精度意味着如果诊断得了那种罕见病的病人,可能病人确实有,这是一个准确的诊断,高召回率意味着如果有一个还有这种罕见疾病的病人,也许算法会正确的识别他们确实患有这种疾病,事实中,在精确与召回之间往往有一个权衡。
精确率是真阳性的数量除以预测的总数,召回率是真正积极的数量除以实际阳性总数,如果用逻辑回归来做预测,然后Logistic回归模型将输出0-1之间的数字,我们通常将逻辑回归的输出阈值设置为0.5,如果高于0.5,预测为1,如果低于0.5,预测为0,假设我们要预测y=1,只有在非常有信心的情况下,这种罕见的疾病才会出现,所以如果每当我们预测病人有疾病,我们可能得送他们去接受一种可能是侵入性的昂贵治疗,所以如果疾病的后果不是那么糟糕,即使不被咄咄逼人的对待,那么我们可能想预测y只等于1,如果我们很有信心,那样的话,可以选择设置更好的阈值,只有当f(x)≥0.7时,才预测y=1,通过提高这个阈值,只有当你非常自信时,你才能预测y=1,这意味着精确度会提高,因为每当你预测一个,提高阈值将带来更高的精度,这也会导致召回率降低,因为现在很少预测一个,在这种疾病的患者总数中,我们将正确诊断更少的人,所以通过将阈值提高到0.7,最终的得到了更好的精度,更低的召回率,事实上,如果你想预测y=1,只有当你非常自信的时候,甚至可以把阈值提高到0.9,这导致了更高的精度,所以当你预测病人有疾病,你可能是对的,这将给你一个非常高的精度,另一方面,召回将进一步恶化,假设我们想避免错过太多这种罕见疾病的病例,所以如果我们想要的是在有疑问的时候预测y=1,这种情况可能是如果治疗不是太侵入性,痛苦或昂贵,但是让疾病得不到治疗对病人的后果要糟糕得多,所以在这种情况下,为了安全起见,可能会想到,预测他们有它,并考虑他们的治疗,如果对于应用程序来说,这是做出决定的更好方法,然后会接受这个阈值,而不是降低它,把它调到0.3,那样的话,只要你认为有30%的可能性,你就会预测到一个或者更好的是疾病存在,只有当你非常确定疾病不存在时,你才能预测零,可以想象,对精确度和召回率的影响将与你在这里看到的相反,降低这个阈值将导致更低的精确率,我们更愿意预测一个高阈值的数据,即使我们不确定,但是结果更高,因为所有有这种病的病人我们可能会正确的识别更多的他们,更普遍的说,只有当f高于某个阈值时,才能灵活的预测,通过选择这个阈值,我们可以在精确和召回之间做出不同的权衡,事实证明,对于大多数学习算法来说,在精确和召回之间有一个权衡,精度和召回都在0-1之间,如果设定一个很高的阈值,假设阈值为0.99,然后最终得到了非常高的精度和较低的召回,当你降低这个阈值的值时,然后你得到了一条曲线,它权衡了精确率和召回率,直到最终,如果你有一个很低的阈值,阈值等于0.01,然后你最终得到非常低的精度,但相对较高的召回率,有时通过绘制这条曲线,然后可以尝试选择一个阈值对应于在这条曲线上选择一个点,平衡了假阳性和假阴性的成本,或者平衡了高精度和高召回的好处,所以绘制不同阈值的精度和召回率允许你选择一个点,阈值并不是真正可以通过交叉验证来实现的,因为你可以为许多应用程序指定最佳点,手动选择阈值进行交易,精确率和召回率是最终要做的。
事实证明,如果你想自动权衡精度和召回,而不是自己动手,还有一个指标叫f(score),它有时用于自动组合精确率和召回率,来帮助选择最佳值,或者两者之间最好的权衡,精确召回的一个挑战是你现在使用两个不同的度量来评估你的算法,所以如果你训练了三种不同的算法,精确召回数字是这样的,如何选择使用哪种算法并不那么明显,有一种算法在精度和召回方面都很好,那你可能想用那个,但是在这个例子中,算法二精度最高,但算法三的召回率最高,算法一在两者之间进行权衡,所以显然没有一种算法是最好的选择,所以为了帮助你决定选择哪种算法,找到一种将精确和召回结合起来的方法可能是有用的,变成一个单一的分数,所以你可以看看哪个算法得分最高,可以把精确度和召回率结合起来的一个方法是取平均值,但事实证明,计算平均值和选择算法,精确率和召回率之间的最高平均值并不那么有效,因为这个算法的精度非常低,事实上,这可能与一种算法相呼应,这种算法实际上打印“y=1"诊断,所有病人都得了这种病,这就是为什么召回率是完美的,但是精确率真的很低,所以算法三实际上不是一个特别有用的算法,即使精确率和召回率之间的平均值相当高,所以不要用精确率和召回率之间的平均值,相反,结合精确率和召回率最常见的方法是计算一些东西,称为Fscore,Fscore是一种结合p和r精度和召回的方法,但这更强调这些值中较低的一个,因为如果一个算法有很低的精确率或者很低的召回率,可能没那么有用,所以Fscore是一种计算平均值的方法,其公式如下,不是平均p和r精确召回,而是平均1/p和1/r,如果p和r很小,那么Fscore也将会很小,计算可看出,第一个算法比第二、三个算法更好,在数学方面,这个方程也称为p和r的调和平均值,它是一种取平均值的方法,更强调较小的价值。