如何评估机器学习模型的性能
为了理解这一点,让我们看这个例子:当您在百度中查询时,它返回40个页面,但是只有30个相关。但是您的朋友告诉您,该查询共有100个相关页面。所以它的精度是30/40 = 3/4 = 75%,而召回率是30/100 = 30%。因此,在这种情况下,精度是“搜索结果的有用程度”,召回率是“结果的完成程度”。 ROC和AUC 接收器工作特性曲线(ROC): 它是 通过从模型给出的概率得分的反向排序列表中获取多个阈值而计算出的 TPR(真正率)和FPR(假正率)之间的关系图 。 现在,我们如何绘制ROC? 为了回答这个问题,让我带您回到上面的表1。仅考虑M1模型。您会看到,对于所有x值,我们都有一个概率得分。在该表中,我们将得分大于0.5的数据点分配为类别1。现在,以概率分数的降序对所有值进行排序,并以等于所有概率分数的阈值一一取值。然后,我们将获得阈值= [0.96,0.94,0.92,0.14,0.11,0.08]。对应于每个阈值,预测类别,并计算TPR和FPR。您将获得6对TPR和FPR。只需绘制它们,您将获得ROC曲线。 注意:由于最大TPR和FPR值为1,因此ROC曲线下的面积(AUC)在0和1之间。 蓝色虚线下方的区域是0.5。AUC = 0表示模型很差,AUC = 1表示模型完美。只要您模型的AUC分数大于0.5。您的模型很有意义,因为即使是随机模型也可以得分0.5 AUC。 非常重要: 即使是从不平衡的数据集生成的哑模型,您也可以获得很高的AUC。因此,在处理不平衡的数据集时请务必小心。 注意: 只要维持顺序,AUC与数值概率分数无关。只要所有模型在根据概率得分排序后给出相同顺序的数据点,所有模型的AUC都将相同。 对数损失 该性能度量检查数据点的概率得分与截止得分的偏差,并分配与偏差成比例的惩罚。 对于二进制分类中的每个数据点,我们使用以下公式计算对数损失: 其中p =数据点属于类别1的概率,y是类别标签(0或1)。 假设某些x_1的p_1为0.95,某些x_2的p_2为0.55,并且符合1类条件的截止概率为0.5。然后两者都符合类别1的条件,但是p_2的对数损失将比p_1的对数损失大得多。 从曲线中可以看到,对数损失的范围是[0,无穷大]。 对于多类别分类中的每个数据点,我们使用以下公式计算对数损失: 如果x(o,c)属于类别1,则y(o,c)=1。其余概念相同。 测定系数 用 R 2 表示 。 在预测测试集的目标值时,我们会遇到一些误差(e_i),这是预测值与实际值之间的差。 假设我们有一个包含n个条目的测试集。众所周知,所有数据点都有一个目标值,例如[y1,y2,y3…….yn]。让我们将测试数据的预测值设为[f1,f2,f3,……fn]。 通过使用以下公式计算 残差平方 和,即所有误差(e_i)平方的总和, 其中fi是第i个数据点的模型的预测目标值。 取所有实际目标值的平均值: 然后计算与测试集目标值的方差成正比的 总平方和 : 如果同时观察两个平方和的公式,则可以看到唯一的区别是第二项,即y_bar和fi。平方总和在某种程度上给我们一种直觉,即它仅与残差平方和相同,但预测值为[,,,…….,n次]。是的,您的直觉是正确的。假设有一个非常简单的均值模型,无论输入数据如何,均能每次预测目标值的平均值。 现在我们将R²表示为: 正如您现在所看到的,R²是一种度量,用于将模型与非常简单的均值模型进行比较,该均值模型每次均返回目标值的平均值,而与输入数据无关。比较有4种情况: 情况1:SS_R = 0 (R²= 1)完美的模型,完全没有错误。 情况2:SS_R> SS_T (R²<0)模型甚至比简单的均值模型差。 情况3:SS_R = SS_T (R²= 0)模型与简单均值模型相同。 情况4:SS_R <SS_T (0 <R²<1)模型还可以。 因此,简而言之,您应该非常了解您的数据集和问题,然后您始终可以创建一个混淆矩阵,并检查其准确性,精度,召回率,并绘制ROC曲线,并根据需要找出AUC。但是,如果您的数据集不平衡,请不要使用准确性作为度量。如果您想对模型进行更深入的评估,以使概率分数也得到权重,请选择对数损失。 请记住,请务必评估您的训练!
(编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |