社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

【机器学习】机器学习常见的评价指标(回归、分类、聚类)

机器学习初学者 • 8 月前 • 169 次点击  

1.1 回归的评价指标

回归的评价指标主要有:

均方误差(Mean Square Error,MSE)、平均绝对误差(Mean Absolute Error,MAE)、均方根误差 (Root Mean Square Error,RMSE)、R_Squared(R2 score)。

分别表示第个样本的真实值和预测值,为样本个数,则以下评价指标的公式如下:

1. 均方误差(Mean Square Error,MSE)

均方误差指的就是模型预测值与样本真实值之间距离平方的平均值。其公式如下所示:

MSE 曲线的特点是光滑连续、可导,便于使用梯度下降算法,是比较常用的一种损失函数。而且,MSE 随着误差的减小,梯度也在减小,这有利于函数的收敛,即使固定学习因子,函数也能较快取得最小值。

2.均方根误差 (Root Mean Square Error,RMSE)

3. 平均绝对误差(Mean Absolute Error,MAE)

平均绝对误差指的就是模型预测值与样本真实值之间距离的平均值。其公式如下所示:

这个指标是对绝对误差损失的预期值。

选择 MSE 还是 MAE 呢?

实际应用中,我们应该选择 MSE 还是 MAE 呢?从计算机求解梯度的复杂度来说,MSE 要优于 MAE,而且梯度也是动态变化的,能较快准确达到收敛。但是从离群点角度来看,如果离群点是实际数据或重要数据,而且是应该被检测到的异常值,那么我们应该使用MSE。另一方面,离群点仅仅代表数据损坏或者错误采样,无须给予过多关注,那么我们应该选择MAE作为损失。

4.R_Squared(R2 score)

这里用到以下公式:

回归平方和:SSR(Sum of Squared Regression)

即预测值与平均值的误差,反映自变量与因变量之间的相关程度的偏差平方和,是指模型解释掉的变异。

残差平方和:SSE(Sum of Squared Error)

即预测值与真实值的误差,反映模型拟合程度。

总离差平方和:SST(Sum of Squared Total)

即平均值与真实值的误差,反映与数学期望的偏离程度。

R_Squared又叫决定系数(Coefficient of Determination)也叫拟合优度,反映因变量的全部变异能通过回归关系被自变量解释的比例。越接近于1,说明模型拟合得越好。

进一步化简:

分子就变成了常用的评价指标均方误差MSE,分母就变成了方差。

对于 R_Squared可以通俗地理解为使用均值作为误差基准,看预测误差是否大于或者小于均值基准误差。

R_Squared= 1,样本中预测值和真实值完全相等,没有任何误差,表示回归分析中自变量对因变量的解释越好。

R_Squared = 0。此时分子等于分母,样本的每项预测值都等于均值。

R_Squared不是R的平方,也可能为负数(分子>分母),模型等于盲猜,还不如直接计算目标变量的平均值,此时数据不存在任何线性相关关系。

1.2 分类的评价指标

在分类算法中,针对一个二分类问题,即将实例分成正类(Positive)或负类(Negative),在实际分类中会出现以下四种情况:

  1. 正确肯定(True Positive,TP):预测为真,实际为真

  2. 正确否定(True Negative,TN):预测为假,实际为假

  3. 错误肯定(False Positive,FP):预测为真,实际为假

  4. 错误否定(False Negative,FN):预测为假,实际为真

如图1所示,这是一个混淆矩阵,混淆矩阵的每一行是样本的预测值,每一列是样本的真实值:

注意:有些教材把行列反一下,即每一列是样本的预测值,每一行是样本的真实值。



预测值



Positive
Negtive
实际值
Positive
TP
FN

Negtive
FP
TN
图1混淆矩阵

分类的主要评价指标:

1.准确率(Accuracy)

准确率是分类问题中最简单也是最直观的评价指标,准确率是指分类正确的样本占总样本个数的比例,是针对所有样本的统计量。

2.精准率(Precision)

又称为查准率,代表对正样本结果的预测准确程度,具体公式如下:

精准率的含义就是在预测为正样本的结果中,有多少是准确的。这个指标比较谨慎,分类阈值较高。

3.召回率(Recall)

又称为查全率,是针对原始样本而言的一个评价指标。在实际为正样本中,被预测为正样本所占的百分比。具体公式如下:

召回率也是对部分样本的统计量,侧重对真实的正类样本的统计。

4.F1 score

F1 score是精准率和召回率的调和平均值,它定义为:

F1分数可以看作是模型准确率和召回率的一种加权平均,它的最大值是1,最小值是0。

5.ROC曲线

ROC(Receiver Operating Characteristic)曲线,又称接受者操作特征曲线。ROC曲线的横轴为False Positive Rate,也叫伪阳率(FPR),即预测错误且实际分类为负的数量与所有负样本数量的比例,纵轴为True Positive Rate,也叫真阳率(TPR),即预测正确且实际分类为正的数量与所有正样本的数量的比例。
图2 ROC曲线样例

如何从ROC曲线看分类效果的好坏?ROC曲线越靠近左上角,效果越好。从图2中可以看出,越好的分类效果,曲线下的面积越大,曲线越靠近左上角。

6.AUC

AUC的全称是(Area Under ROC Curve),也就是ROC曲线下方的面积,AUC的范围是0到1,AUC越大,代表模型的性能越好。

7.P-R曲线

P-R曲线是描述精确率和召回率变化的曲线。P-R曲线刻画查准率和查全率(召回率)之间的关系,横轴为查全率,纵轴为查准率,查准率和查全率是一对矛盾的度量,一般来说,查准率高时,查全率往往偏低,查全率高时,查准率往往偏低。

图3 P-R曲线样例

模型与坐标轴围成的面积越大,则模型的性能越好。从图3中可以直接看出来。

分类评价指标案例

这里有一个评价指标的案例:假设有100张照片,其中,猫的照片有60张,狗的照片是40张。

输入这100张照片进行二分类识别,找出这100张照片中的所有的猫。识别结果的混淆矩阵见表1:

表1 识别结果的混淆矩阵


预测值



Positive
Negtive
实际值
Positive
TP = 40
FN = 20

Negtive
FP = 10
TN = 30

根据分类结果的混淆矩阵,可以得到分类结果的表格(表2)

表2分类结果
项目
符号
猫狗的例子
识别出的正例
TP + FP
40+10=50
识别出的负例
TN + FN
30+20=50
总识别样本数
TP + FP + TN + FN
50+50=100
识别对了的正例与负例
TP + TN
40+30=70
识别错了的正例与负例
FP + FN
10+20=30
实际总正例数量
TP + FN
40+20=60
实际总负例数量
TN + FP
30+10=40

根据混淆矩阵,可以求得准确率、精确率、召回率等指标:

由于:。则召回率为:

1.3 聚类的评价指标

1 均一性(Homogeneity)

均一性也称为同一性,类似于精确率,一个簇中只包含一个类别的样本,则满足均一性。其实也可以认为就是准确率(每个聚簇中正确分类的样本数占该聚簇总样本数的比例和),我们用表示均一性。

代表类别数,是正确分类的样本,表示真实类别,代表总样本数,为正确分类的样本数。

2 完整性(Completeness)

类似于召回率,同类别样本被归类到相同簇中,则满足完整性:(每个聚簇中正确分类的样本数占该类型的总样本数比例的和),我们用表示完整性。

3 V-measure

均一性和完整性的加权平均,我们用表示V-measure,公式如下:

4 轮廓系数(Silhouette Coefficient)

我们用表示样本的轮廓系数,这里需要以下几个指标:

簇内不相似度:计算样本到同簇其它样本的平均距离为,应尽可能小。

簇间不相似度:计算样本到其它簇的所有样本的平均距离,应尽可能大。

轮廓系数:值越接近1表示样本聚类越合理,越接近-1,表示样本应该分类到另外的簇中,近似为0,表示样本应该在边界上;所有样本的的均值被成为聚类结果的轮廓系数。具体公式如下:

图4 轮廓系数案例

图4的案例中,假设数据集被拆分为4个簇,样本对应的值就是所有中其他样本点与样本的距离平均值。

样本对应的值分两步计算,首先计算该点分别到中样本点的平均距离,然后将三个平均值中的最小值作为的度量。

5 调整兰德系数(ARI, Adjusted Rnd Index)

数据集共有个元素,两个聚类结果分别是:

的元素个数为:

sum
sum

记:

ARI取值范围为[−1,1],值越大意味着聚类结果与真实情况越吻合。从广义的角度来讲,ARI衡量的是两个数据分布的吻合程度。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/189275