📅  最后修改于: 2023-12-03 14:55:27.389000             🧑  作者: Mango
在机器学习中,我们常常需要对一个连续输出的预测值进行二元分类,例如把预测股票价格是否会涨或跌表示为0或1。针对这种情况,我们设定一个决策阈值来将预测值映射为0或1。本文将探讨决策阈值选取的重要性和方法。
一般情况下,我们把预测值大于等于某个阈值$T$的样本预测为正例,小于阈值的样本预测为负例。由于阈值选取的不同,将导致模型的性能出现不同的变化。
在选择决策阈值时,我们需要关注的指标有三个:精度、召回率和F1分数。
精度:指分类器正确预测为正样本的样本占总预测样本数的比例。$$\text{Precision}=\frac{\text{TP}}{\text{TP}+\text{FP}}$$其中TP表示预测为正的真实正样本数,FP表示预测为正的真实负样本数。
召回率:指分类器正确预测为正样本的样本占总正样本数的比例。$$\text{Recall}=\frac{\text{TP}}{\text{TP}+\text{FN}}$$其中TP表示预测为正的真实正样本数,FN表示预测为负的真实正样本数。
F1分数:综合了精度和召回率的指标。$$\text{F1}=\frac{2\times\text{Precision}\times\text{Recall}}{\text{Precision}+\text{Recall}}$$
ROC曲线是根据不同阈值所对应的TP率和FP率绘制的曲线,它能够帮助我们分析和比较不同阈值下的分类器性能。TP率和FP率分别定义为$$\text{TPR}=\frac{\text{TP}}{\text{TP}+\text{FN}},\ \text{FPR}=\frac{\text{FP}}{\text{TN}+\text{FP}}$$其中TN表示预测为负的真实负样本数。ROC曲线的横轴是FPR,纵轴是TPR,它尽量向左上角突出表示分类器性能更好。
在许多机器学习库中,都提供了使用默认阈值的函数。例如,在scikit-learn库的predict方法中,阈值被设置为0.5。
当我们想要在F1分数和TPR、FPR之间进行权衡时,我们可以在ROC曲线上选取一个分类器性能最好的点。这个点的具体选取方式可以根据实际情况而变化,例如我们可以选择最高的F1得分、最高的TPR、最小的FPR等。
一种比较常用的方法是通过在一定范围内随机搜索来选取最优的阈值。这里我们可以使用网格搜索或随机搜索等方法,寻找最优的阈值。在随机搜索中,我们首先选取一些有代表性的阈值(例如0.01、0.05、0.1、0.5、1等),然后在这些阈值中随机选择一个进行分类,并计算对应的评价指标。
决策阈值对机器学习中的二元分类算法的性能有重要的影响。在选取阈值时,我们需要关注精度、召回率和F1分数,并可以使用ROC曲线、随机搜索等方法来选取最优的阈值。