当前位置: 首页 > 科技观察

免费Python机器学习课程八:Precision,Recall

时间:2023-03-13 00:38:03 科技观察

如何处理机器学习中的倾斜数据集使用倾斜数据集开发有效的机器学习算法可能很棘手。例如,数据集涉及银行欺诈活动或癌症检测。正在发生的事情是,您将在99%的时间内看到数据集中没有欺诈活动或癌症。您可以通过始终仅预测0(如果癌症为1,如果没有癌症则为0)轻松作弊并获得99%的准确率。如果我们这样做,我们将拥有99%准确的机器学习算法,但我们永远无法检测到癌症。如果某人患有癌症,他/她将永远得不到治疗。在银行中,没有采取任何措施来防止欺诈活动。因此,仅凭准确性无法确定一个偏斜的数据集,就像算法是否有效运行一样。背景有不同的评估矩阵可以帮助处理这些类型的数据集。这些评估指标称为精确召回评估指标。要了解准确率和召回率,您需要了解下表及其所有术语。考虑二元分类。它将返回0或1。对于给定的训练数据,如果实际类别为1,并且预测类别也为1,则称为真阳性。如果实际类别为0而预测类别为1,则为误报。如果实际类别为1,但预测类别为0,则称为漏报。如果实际类别和预测类别均为0,则为真阴性。使用所有这些,我们将计算精度和召回率。Precision计算我们预测为欺诈(预测为第1类)的交易中有多少实际上是欺诈的。Precision可以用下面的公式来计算:进一步分解,这个公式可以写成:从公式可以看出,精度越高越好。因为更高的精度意味着更真实的肯定。这意味着当我们说这笔交易是欺诈时,它是真的。召回召回率告诉我们有多少最初是欺诈的交易被检测为欺诈。这意味着如果交易实际上是欺诈性的,如果我们通知银行有适当的权力采取行动。当我第一次阅读精确率和召回率的这些定义时,我花了一段时间才真正理解它们之间的区别。希望你能早点拿到。如果没有,请不要担心。你并不孤单。召回率可以通过以下公式计算:用上面2x2表中定义的术语表示:根据精度和召回率做出决定精度和召回率可以更好地了解算法的实际执行情况,尤其是在数据集高度倾斜的情况。如果我们始终如一地预测0并获得99.5%的准确率,那么召回率和精确率都将为0。因为没有真正的确定性。所以你知道分类器不是一个好的分类器。当精确率和召回率都很高时,表明算法运行良好。假设我们只想以高置信度预测y=1。因为有时候这很重要。特别是当我们处理医疗数据时。假设我们正在测试某人是否患有心脏病或癌症。预测误报会给一个人的生活带来很多痛苦。提醒一下,一般来说,如果假设大于或等于0.5,则逻辑假设预测为1,如果假设小于0.5,则预测为0。Predict1ifassumption≥0.5Predict0ifassumption<0.5但是,当我们像上面那样处理某些敏感情况时,我们希望对我们的结果更加确定,如果assumption≥0.7,我们将预测1,如果Assuming<0.7,我们将预测0。如果你想对你的结果更有信心,你可以看到像0.9这样的值。因此,您可以90%确定某人是否患有癌症。现在,看看精确率和召回率公式。真肯定和假肯定都会更低。因此,精度会更高。但另一方面,由于我们现在要预测更多的负面因素,出现假阴性的概率会更高。在这种情况下,召回率会更高。但是假阴性太多也不好。如果某人确实患有癌症,或者账户存在欺诈,但我们告诉他们他们没有癌症,或者账户没有欺诈,这可能会导致灾难。为了避免误报并提高召回率,我们需要将阈值更改为以下内容:如果假设≥0.3,则预测1如果假设<0.3,则预测0与前一种情况相反,我们将拥有更高的召回率和更低的精度。那么如何确定阈值呢?这将取决于您的要求。根据数据集,您必须决定是需要更高的精度还是更高的召回率。这是精确召回曲线:精确召回曲线可以是任何形状。因此,我在这里展示了三种不同的形状。如果您不能自己决定是需要更高的精度还是更高的召回率,您可以使用F1分数。F1分数F1分数是准确率和召回率的平均值。但是平均公式不同。常规平均公式在这里不起作用。看一下平均公式:(精度+召回率)/2即使精度为零或召回率为零,平均值仍然是0.5。从我们之前的讨论中记住精度为零意味着什么。我们总是可以预测y=1。因此,这不应该是可以接受的。因为precisioncalling的整个思路就是要避免那个。公式F1score为:这里,P是precision,R是recall。如果精度为零或召回率为零,则F1分数将为零。因此,您将知道分类器没有按我们预期的那样工作。当precision和recall都完美时,表示precision为1,recall也为1,F1score也为1。因此,理想的F1score为1。最好尝试不同的阈值并计算精度、召回率和F1分数,以找到适合您的机器学习算法的最佳阈值。结论在本文中,您学习了如何处理偏斜数据集。如何使用F1分数在精度和召回率之间进行选择。希望对你有帮助。