2019-07-12 14:10:06 Dear_leslie 阅读数 24

MSE、RMSE、MAE

1/m 是为了使衡量结果与样本数量无关

使用简单线性回归法

1、使用波士顿数据集

In [474]: from sklearn import datasets
In [476]: boston = datasets.load_boston()
#取出第五个属性,即只使用房间数量这个特征
x=boston.data[:,5]
In [482]: y = boston.target
#去除异常样本数据
In [484]: np.max(y)
Out[484]: 50.0
In [485]: x = x[y<50.0]
In [486]: y = y[y<50.0]

2、进行简单线性回归

#划分数据集
In [491]: from sklearn.model_selection import train_test_split
In [492]: x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2,random_state=666)
In [495]: from SimpleLinearRegression import SimpleLinearRegression2
#简单线性回归
In [496]: reg = SimpleLinearRegression2()
In [497]: reg.fit(x_train,y_train)
In [498]: reg.a_
Out[498]: 7.8608543562689555
In [499]: reg.b_
Out[499]: -27.459342806705543
In [500]: plt.scatter(x_train,y_train)
     ...: plt.plot(x_train,reg.predict(x_train),color="r")

在这里插入图片描述
#使用拟合出来的模型对测试样本进行预测

In [501]: y_predict = reg.predict(x_test)
MSE

在这里插入图片描述

In [503]: mse_test = np.sum((y_predict - y_test)**2) / len(y_test)
In [504]: mse_test
Out[504]: 24.156602134387438
RMSE

在这里插入图片描述

In [505]: from math import sqrt
In [506]: rmse_test = sqrt(mse_test)
In [507]: rmse_test
Out[507]: 4.914936635846635
MAE

在这里插入图片描述

In [508]: mae_test = np.sum(np.absolute(y_predict - y_test)) / len(y_test)
In [509]: mae_test
Out[509]: 3.5430974409463873
scikit-learn中的MSE和MAE
In [510]: from sklearn.metrics import mean_squared_error
In [511]: from sklearn.metrics import mean_absolute_error
In [512]: mean_squared_error(y_test,y_predict)
Out[512]: 24.156602134387438
In [513]: mean_absolute_error(y_test,y_predict)
Out[513]: 3.5430974409463873

最好的衡量线性回归法的指标 R Square

在这里插入图片描述

  • 得到的结果是我们的模型拟合成功的部分
  • R2 <= 1
  • R2越大越好。当我们的预测模型不犯任何错误时,R2取得最大值1
  • R2 < 0时,说明我们的学习模型还不如基准模型。此时,可能数据不存在任何线性关系。

在这里插入图片描述

In [514]: 1 - mean_squared_error(y_test,y_predict)/np.var(y_test)
Out[514]: 0.6129316803937322

scikit-learn中的R square

In [515]: from sklearn.metrics import r2_score
In [516]: r2_score(y_test,y_predict)
Out[516]: 0.6129316803937324
2018-03-17 00:12:02 Katherine_hsr 阅读数 2801

在做机器学习进行实验过程中,我们需要使用分类精度、均方误差等方法衡量模型的性能,从而判断训练出的模型的表现是否符合预期要求。本文整理了7种常见的机器学习算法衡量指标:分类精度、对数损失、混淆矩阵、曲线下面积(AUC)、F1分数、平均绝对误差、均方误差。

1. 分类精度

分类精度其实就是我们所说的准确性,是正确预测数占总样本数的比值。
Accuracy=NumberofCorrectpredictionsTotalnumberofpredictionsmade
只有当属于每个类的样本数量相等时才有效。这个不难理解,假如我们的训练集中有90%的A类样本和10%的B类样本,然后我们的模型对A类样本表现的特别好,能准确的分类出A类样本,而不能分类出B类样本,则这个模型就能获得90%的分类精度。这给我们一种错觉,认为我们的模型表现的很好,但当在50%的A类样本和50%的B类样本的测试集中做测试时,测试精度就只有50%了。

2. 对数损失

对数损失适用于多类分类,他是通过惩罚错误分类来工作的,分类器必须为样本分配属于每个类的概率。假如有N个样本属于M类,则对数损失的计算如下:
LogarithmicLoss=1Ni=1Nj=1Nyijlog(Pij)
这里,yij表示样本i是否属于类别j
Pij表示样本i属于类别j的概率
对数损失函数的值域为0到正无穷。损失函数越接近0准确性越高,所以在训练过程中应尽可能减小对数损失函数来提高分类精度。

3. 混淆矩阵

混淆矩阵是其他很多度量类型的基础,是通过一个矩阵描述了模型的精确度。假如我们有一个二分类的问题,标签为YES和NO。在165个测试样本中我们测试了模型,得到如下结果:
这里写图片描述
矩阵的精确度可以通过取主对角线的平均值来计算,即:
Accuracy=TruePositives+FalseNegativesTotalNumberOfSamples
所以这里面的精度为:
Accuracy=100+50165

4. 曲线下面积(AUC)

曲线下面积是适用于二分类问题,是评估中使用最广的指标之一。分类器的AUC等价于随机选择正样本高于随机选择负样本的概率。了解AUC首先需要了解以下术语:
True Positive Rate(真阳性率):它被定义为
TPFN+TP.对于所有的正数据点,它对应于正数据点被正确认为是正的比例。
False Positive Rate(假阳性率):它被定义为FPFP+TN,即对应于所有的负数据点,负数据点被错误的认为是正的比例。False Positive Rate和True Positive Rate的值都在[0, 1]范围内。下图是[0,1]中不同点的False Positive Rate对True Positive Rate曲线下面积。
这里写图片描述
很明显,AUC的范围是[0, 1],值越大,我们模型的性能越好。

5. F1分数

F1分数(F1 Score),是统计学中用来衡量二分类模型精确度的一种指标。它同时兼顾了分类模型的准确率和召回率。F1分数可以看作是模型准确率和召回率的一种加权平均,它的最大值是1,最小值是0。它会告诉我们分类器的精确程度(正确分类的实例数),以及它的稳健成都(它不会错过大量实例)。
高精度低召回率会带来高的精度,但也会错过很难分类的实例。F1得分越高我们的模型表现越好。F1可以表示为:
F1=211precision+1recall
这里写图片描述
其中:Precision为它是正结果的数目除以分类器所预测的正结果的数目
Precision=TruePositiveTruePositive+FalsePositive
Recall为它是正结果数量除以分类器应该预测的正结果的数目(即为实际为正结果的数目)
Recall=TruePositiveTruePositive+FalseNegative

6. 平均绝对误差(Mean Absolute Error)

平均绝对误差是原始值于预测值之间的平均值,用来衡量预测与实际输出还差多远。但是它们并没有给出任何关于错误方向的信息。平均绝对误差用以下公式表达:
MeanAbsoluteError=1Nj=1N|yiyj^|

7. 均方误差(Mean Squared Error)

均方差与平均绝对误差非常相似,唯一的区别在于MSE取原始值与取预测值之差的平方的平均值。MSE的优点是计算梯度更容易,而平均绝对误差需要更负责的线性编程工具来完成。均方误差用以下公式表达:
MeanSquaredError=1Nj=1N(yiyj^)2

2016-10-18 21:29:41 cunyan 阅读数 61

 

选择合适的指标
在构建机器学习模型时,我们首先要选择性能指标,然后测试模型的表现如何。相关的指标有多个,具体取决于我们要尝试解决的问题。
在可以选择性能指标之前,首先务必要认识到,机器学习研究的是如何学习根据数据进行预测。对于本课程和后续的“监督式机器学习”课程,我们将重点关注那些创建分类或创建预测回归类型的已标记数据。
此外,在测试模型时,也务必要将数据集分解为训练数据和测试数据。如果不区分训练数据集和测试数据集,则在评估模型时会遇到问题,因为它已经看到了所有数据。我们需要的是独立的数据集,以确认模型可以很好地泛化,而不只是泛化到训练样本。在下一课中,我们将探讨模型误差的一些常见来源,并介绍如何正确分解本课程的“数据建模和验证”部分中的数据集。
 
 
 
分类和回归
分类涉及到根据未见过的样本进行预测,并确定新实例属于哪个类别。例如,可以根据蓝色或红色或者方形或圆形来组织对象,以便在看到新对象时根据其特征来组织对象。
在回归中,我们想根据连续数据来进行预测。例如,我们有包含不同人员的身高、年龄和性别的列表,并想预测他们的体重。或者,像在本课程的最终项目中一样,我们可能有一些房屋数据,并想预测某所住宅的价值。
手头的问题在很大程度上决定着我们如何评估模型。
 
 
分类指标与回归指标
在分类中,我们想了解模型隔多久正确或不正确地识别新样本一次。而在回归中,我们可能更关注模型的预测值与真正值之间差多少。
在本节课的余下部分,我们会探讨几个性能指标。对于分类,我们会探讨准确率、精确率、召回率和 F 分数。对于回归,我们会探讨平均绝对误差和均方误差
 
 
分类指标
对于分类,我们处理的是根据离散数据进行预测的模型。这就是说,此类模型确定新实例是否属于给定的一组类别。在这里,我们测量预测是否准确地将所讨论的实例进行分类。
 
 
准确率
最基本和最常见的分类指标就是准确率。在这里,准确率被描述为在特定类的所有项中正确分类或标记的项的数量。
举例而言,如果教室里有 15 个男孩和 16 个女孩,人脸识别软件能否正确识别所有男孩和所有女孩?如果此软件能识别 10 个男孩和 8 个女孩,则它识别男孩和女孩的准确率分别为 66% 和 50%:
准确率 = 正确识别的实例的数量/所有实例数量
有关准确率和如何在 sklearn 中使用它的更多信息,请查看此链接 此处
 
 
 
 
F1 分数
既然我们已讨论了精确率和召回率,接下来可能要考虑的另一个指标是 F1 分数。F1 分数会同时考虑精确率和召回率,以便计算新的分数。
可将 F1 分数理解为精确率和召回率的加权平均值,其中 F1 分数的最佳值为 1、最差值为 0:
F1 = 2 * (精确率 * 召回率) / (精确率 + 召回率)
有关 F1 分数和如何在 sklearn 中使用它的更多信息,请查看此链接此处
 
 
 
回归指标
正如前面对问题的回归类型所做的介绍,我们处理的是根据连续数据进行预测的模型。在这里,我们更关注预测的接近程度。
例如,对于身高和体重预测,我们不是很关心模型能否将某人的体重 100% 准确地预测到小于零点几磅,但可能很关心模型如何能始终进行接近的预测(可能与个人的真实体重相差 3-4 磅)。
 
 
平均绝对误差
您可能已回想起,在统计学中可以使用绝对误差来测量误差,以找出预测值与真实值之间的差距。平均绝对误差的计算方法是,将各个样本的绝对误差汇总,然后根据数据点数量求出平均误差。通过将模型的所有绝对值加起来,可以避免因预测值比真实值过高或过低而抵销误差,并能获得用于评估模型的整体误差指标。
有关平均绝对误差和如何在 sklearn 中使用它的更多信息,请查看此链接此处
 
 
均方误差
均方误差是另一个经常用于测量模型性能的指标。与绝对误差相比,残差(预测值与真实值的差值)被求平方。
对残差求平方的一些好处是,自动将所有误差转换为正数、注重较大的误差而不是较小的误差以及在微积分中是可微的(可让我们找到最小值和最大值)。
有关均方误差和如何在 sklearn 中使用它的更多信息,请查看此链接此处
 
 
 
回归分数函数
除了误差指标之外,scikit-learn还包括了两个分数指标,范围通常从0到1,值0为坏,而值1为最好的表现。
虽然在课程最后的项目中,我们不会用到这两个指标,但是需要知道他们很重要。他们还有一个优点,就是看起来和分类指标类似,都是数字越接近1.0分数就越好。
其中之一是R2分数,用来计算真值预测的可决系数。在 scikit-learn 里,这也是回归学习器默认的分数方法。
另一个是可释方差分数
虽然眼下我们不会详细探讨这些指标,一个要记住的重点是,回归的默认指标是“分数越高越好”;即,越高的分数表明越好的表现。而当我们用到前面讲的误差指标时,我们要改变这个设定。
 
2019-08-07 09:44:43 qq_32599479 阅读数 11602

机器学习中各类算法、代价函数、衡量标准

本文是基于以下的系统环境,学习和测试机器学习中的各类算法:

  • Windows 10
  • PyCharm

一、机器学习算法

1、无监督学习

1.1 聚类算法

KMeans算法

  • 优点:
    1)速度快,可并行
  • 缺点:
    1)最终结果对于初始化中心点敏感
    2)需求预先设定聚类个数
  • 相关实现包或类:
    1)sklearn.cluster.KMeans

二、数据预处理

1. 数据变换

1.1 数据标准化

  • 优点:
    1)将数据缩放成均值为0,标准差为1的新数据
  • 缺点:
    1)原始数据应符合高斯分布
    2)加入新的数据时,需要重新计算所有的点
  • 相关实现包或类:
    1)sklearn.preprocessing.StandardScaler

1.2 数据归一化

  • 优点:
    1)利用特征的最大最小值,将特征的值缩放到[0,1]区间
  • 缺点:
    1)加入新的数据时,需要重新计算所有的点
  • 相关实现包或类:
    1)sklearn.preprocessing.MinMaxScaler

2. 特征工程

特征工程是将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的预测准确性

1.1 缺失值处理

1.2 数据转换

1.3 特征抽取

将非数值型的特征属性转换成数值类型的过程就是特征抽取,让计算机更好的理解数据

1.3.1 字典数据特征抽取
from sklearn.feature_extraction import DictVectorizer

data = [{'city': '北京', 'temperature': 100}, 
		{'city': '上海', 'temperature': 60}, 
		{'city': '深圳', 'temperature': 30}]
model = DictVectorizer(sparse=False)
transform = model.fit_transform(data)
print(model.get_feature_names())
print(transform)
# ['city=上海', 'city=北京', 'city=深圳', 'temperature']
# [[  0.   1.   0. 100.]
#  [  1.   0.   0.  60.]
#  [  0.   0.   1.  30.]]
1.3.2 文本数据特征抽取
  • 文本全部为英文的情况
from sklearn.feature_extraction.text import CountVectorizer

data = ["life is short, like python", "life is too long, dislike python"]
model = CountVectorizer()
transform = model.fit_transform(data)
print(model.get_feature_names())
print(transform.toarray())

# 单个字母不统计
# ['dislike', 'is', 'life', 'like', 'long', 'python', 'short', 'too']
# [[0 1 1 1 0 1 1 0]
#  [1 1 1 0 1 1 0 1]]
  • 文本全部为中英文混合的情况
#  对于含有中英文的文本,需要先进行分词
from sklearn.feature_extraction.text import CountVectorizer
import jieba
data1 = "人生苦短,我喜欢python"
data2 = "人生漫长,不用python"
con1 = jieba.cut(data1)
con2 = jieba.cut(data2)
content1 = list(con1)
content2 = list(con2)
c1 = ' '.join(content1)
c2 = ' '.join(content2)
print(c1)
print(c2)

model = CountVectorizer()
cv = model.fit_transform([c1, c2])
print(model.get_feature_names())
print(cv.toarray())

# 人生 苦短 , 我 喜欢 python
# 人生 漫长 , 不用 python
# ['python', '不用', '人生', '喜欢', '漫长', '苦短']
# [[1 0 1 1 0 1]
#  [1 1 1 0 1 0]]
  • tf-idf提取
    tf:term frequency 词的频率
    idf:inverse document frequency 逆文档频率 = log(总文档数量 / 该词出现的文档数量)
    tf * idf = 重要性程度
#  对于含有中英文的文本,需要先进行分词
from sklearn.feature_extraction.text import CountVectorizer
import jieba
data1 = "人生苦短,我喜欢python"
data2 = "人生漫长,不用python"
con1 = jieba.cut(data1)
con2 = jieba.cut(data2)
content1 = list(con1)
content2 = list(con2)
c1 = ' '.join(content1)
c2 = ' '.join(content2)
print(c1)
print(c2)

model = CountVectorizer()
cv = model.fit_transform([c1, c2])
print(model.get_feature_names())
print(cv.toarray())

# 人生 苦短 , 我 喜欢 python
# 人生 漫长 , 不用 python
# ['python', '不用', '人生', '喜欢', '漫长', '苦短']
# [[0.40993715 0.         0.40993715 0.57615236 0.         0.57615236]
#  [0.40993715 0.57615236 0.40993715 0.         0.57615236 0.        ]]

2、有监督学习

2.1 随机森林算法

  • 优点:
    1)能够处理高维度特征数据,并且不用做特征选择
    2)训练完成后,能够给出哪些特征比较重要
    1)容易做并行化方法,速度比较快
    1)可以进行可视化展示,便于分析
  • 缺点:
    1)最终结果对于初始化中心点敏感
    2)需求预先设定聚类个数
  • 相关实现包或类:
    1)sklearn.cluster.KMeans

二、代价函数

1、均方误差代价函数

在这里插入图片描述

2、交叉熵代价函数

在这里插入图片描述

三、衡量标准

1、熵

在这里插入图片描述

2、Gini系数

在这里插入图片描述


2019-01-24 11:39:10 tjuyanming 阅读数 140

机器学习中的性能度量指标

对机器学习、深度学习中的学习器的泛化性能进行评估,不仅仅需要有效可行的实验方法,还需要有衡量模型泛化能力的评价标准。这就是性能度量指标。在回归任务中,我们使用均方误差来衡量性能;在分类任务中,我们使用错误率、精度、查全率、查准率、F1度量、P-R曲线、ROC-AUC等指标来衡量模型。本文重点记录了分类任务的度量指标。

我们假设在预测任务中:给定样例集合D=(x1,x1),(x2,y2),....(xm,ym)D = {(x_1,x_1),(x_2,y_2),....(x_m,y_m)},其中yiy_ixix_i真实标记,f(xi)f(x_i)xix_i​的预测结果。

回归任务:

在回归任务中,我们使用均方误差来衡量模型性能。均方误差定义如下:
E(f;D)=1mi=1n(f(xi)yi)2 E(f;D) = \frac{1}{m}\sum_{i=1}^n(f(x_i)-y_i)^2

分类任务:

1. 错误率和精度:

精确度和错误率是分类中最常用的两种性能度量,既适用于二分类,也适用于多任务分类。错误率就是预测错误的测试样本占整体样本的比率。精确度就是预测正确的测试样本占整体样本的比率。针对我们之前提到的样例D,分类任务的错误率为:
E(f;D)=1mi=1nI(f(xi)yi) E(f;D) = \frac{1}{m}\sum_{i=1}^nI(f(x_i) \neq y_i)
其中 I(x)I(x) 称为指示函数,在这里取值如下:
{1,x=true0,x=false \left\{\begin{array}{cc} 1, &amp; x = true\\ 0, &amp; x = false \end{array} \right.
精确度定义为:
acc(f;D)=1mi=1nI(f(xi)=yi)=1E(f;D) acc(f;D) = \frac{1}{m}\sum_{i=1}^nI(f(x_i) = y_i) \\ = 1 - E(f;D)

2. 查全率、查准率

查全率,查准率在信息检索中是常用的度量指标。查全率又称召回率(recall),简单的来说就是正确的信息有多少被模型检索出来了;查准率又称为准确率,即模型检索出来的结果有多少是真正正确的。

在二分类问题中,我们将样例根据其真实类别与学习模型预测类别的组合,划分为true positive,false positive,true negative,false negative。

名称 解释
真正例 (true positive) TP 真实的正例被模型识别为正例
假正例 (false positive) FP 真正的反例被模型识别为正例
真反例 (true negative) TN 真正的反例被识别为反例
假反例 (false negative) FN 真正的正例被识别为反例

我们常使用混淆矩阵(confusion matrix)来描述上述的关系:

在这里插入图片描述

查准率(Precision)定义为:
P=TPTP+FP P = \frac{TP}{TP+FP}
查准率(Recall)定义为:
R=TPTP+FN R = \frac{TP}{TP + FN}
查准率和查全率是一对矛盾的变量。通常来说,查准率较高的时候,查全率往往偏低。查全率较高的时候,查准率往往较低。(可以这样理解,如果我们的模型把所有样本都标记为正例,那么查全率为100%,但是查准率比较低。反之,如果我们的模型十分的谨慎,则可能造成查准率特别高,但是查全率比较低的情况)

3. P-R曲线和F1度量

P-R曲线通常被用来直观地显示出学习器在样本总体上的查全率,查准率。P-R曲线的定义如下:我们根据模型对样本的预测值进行排序,排在前边的是模型认为“最可能的”正例(即置信度高的),排在最后的是模型认为“最不可能的”正例。我们设置不同的阈值,针对每一个阈值,计算模型的准确率和召回率。然后将召回率作为横轴,准确率作为纵轴,根据坐标绘制计算P-R曲线。

例如:我们将模型预测的置信度进行从高到低排序,然后分别按照0.5,0.6,0.7的阈值,来判断一个样本是否是正样本,并计算准确率和召回率

序号 真实标签 Hyp(0.5) Hyp(0.6) Hyp(0.7) Score
1 0.9998
2 0.9438
3 0.8992
4 0.8692
5 0.8095
6 0.7238
7 0.6752
8 0.5383
9 0.4102
10 0.4053

计算结果:

阈值 召回率 准确率 P-R曲线坐标
0.5 1 7/8 = 0.875 (1,0.875)
0.6 1 1 (1,1)
0.7 6/7 = 0.857 1 (0.857,1)

根据坐标,绘制P-R曲线。常见P-R曲线如下所示:
在这里插入图片描述
在P-R曲线中,若一个模型的P-R曲线被另外一个模型的曲线完全的“包住”,那么我们说后者优于前者。例如图中的A曲线完全包裹了C曲线,所以模型A性能优于模型C。但是,一旦P-R曲线发生交叉,无法判断两者的性能,例如图中的A和B。

如果A的P-R曲线和B的曲线交叉,并且我们还希望比较两个模型的性能,我们通常使用“平衡点”(Break-Even Point,简称BEP)。BEP是P-R曲线和直线y=xy=x的交点,即“查全率” = “查准率”时候的取值。

更常用的综合考虑查准率和查全率的指标还有F1度量,F1度量是查全率R和查准率P的算术平均值。
1F1=12(1P+1R) \frac{1}{F1} = \frac{1}{2}* (\frac{1}{P} + \frac{1}{R})

F1=2PRP+R F1 = \frac {2*P*R}{P+R}

4. ROC与AUC

ROC曲线(Receiver Operating Characteristic) 和之前提到的P-R曲线有相同之处。ROC曲线也是根据模型对样本的预测值进行排序,排在前边的是模型认为“最可能的”正例(即置信度高的),排在最后的是模型认为“最不可能的”正例。我们设置不同的阈值,计算不同的度量指标。在P-R曲线中,我们使用查全率作为横坐标,使用查准率作为纵坐标。在ROC中,我们使用“真正例率(TPR)“作为纵轴,使用”假正例率(FPR)“作为横轴,两个指标的定义如下:
TPR=TPTP+FN TPR = \frac{TP}{TP+FN}

FPR=FPTN+FP FPR=\frac{FP}{TN+FP}
ROC曲线的一般图像如下:
在这里插入图片描述
与PR曲线比较相同。当一个模型A的ROC曲线被另外一个模型B完全的“包住”地时候,后者的性能要优于前者。当两个曲线交叉地时候,我们需要引入AUC指标才能比较两个模型的性能。AUC(Area Under ROC Curve) 是什么呢?顾名思义,AUC就是ROC曲线下的面积。AUC值越大,模型的性能就越好。

在前面我们介绍了P-R曲线,这是一个综合考虑查全率和查准率的度量指标。那么为什么我们还要定义一个ROC曲线呢?考虑下边一种情况。假设我们将测试集中的负样本增加10倍以后,PR曲线和ROC曲线的变化如下所示:
在这里插入图片描述
可以看出,当我们的数据集中的负样本增加十倍以后,ROC曲线的变化是不大的。但是P-R曲线发生了很大的变化。

分析:对于PR曲线来说,当样本中的负样本增加10倍以后,召回率(Recall)不变的时候,模型肯定将很多的反例错误的标记为正例,这样模型的查准率就会降低很多。所以PR曲线变化很大。

对于ROC曲线来说,横轴为假正例率,纵轴为真正例率。假如样本中的负样本增加10倍以后,当纵轴的真正例率(召回率)不变的时候,模型肯定将很多的反例错误的标记为正例,即FP的数值会变大。因此,FPR的分子(FP)和分母(TN+FP,即负样本个数)都增多了,所以FPR数值变化相对查准率来看,变化不大。

PR曲线比ROC曲线更加关注正样本,而ROC则兼顾了两者。当我们希望查看模型在特定的数据集上的表现,PR曲线更能直观地反映其性能。

当我们常常选择不同的测试集的时候,P-R曲线的变化就会很大,而ROC曲线则能更加稳定地反映模型本身的好坏。ROC曲线的应用场景更加广泛。


参考资料:

[1]《机器学习》- 周志华

[2] P-R曲线及与ROC曲线区别

[3] ROC曲线和PR(Precision-Recall)曲线

没有更多推荐了,返回首页