文章目录
- 前言
- 一、节点分类的评价指标
- 1. 混淆矩阵 (Confusion Matrix)
- 2. 准确率 (Accuracy)
- 3. 精确率 (Precision)
- 4. 召回率 (Recall)
- 5. F1分数 (F1 Score)
- 6. ROC曲线和AUC值 (Receiver Operating Characteristic and Area Under Curve)
- 二、链路预测的评价指标
- 1. **AUC (Area Under Curve)**
- 2. **Precision@L**
- 3. **Ranking Score**
- 三、社区检测的评价指标
- 1. **模块度 (Modularity)**
- 2. **标准化互信息 (Normalized Mutual Information, NMI)**
- 总结
前言
开始跑代码,先搞清楚评价指标,才能修改优化代码。
一、节点分类的评价指标
1. 混淆矩阵 (Confusion Matrix)
-
含义:混淆矩阵是一个用于评估分类模型性能的表格,它显示了实际类别和算法预测类别之间的关系。
-
表格:
真实/预测 \ 实际 预测正类 (Predicted Positive) 预测负类 (Predicted Negative) 实际正类 (Actual Positive) True Positive (TP) False Negative (FN) 实际负类 (Actual Negative) False Positive (FP) True Negative (TN)
2. 准确率 (Accuracy)
- 计算: Accuracy = T P + T N T P + T N + F P + F N \text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN} Accuracy=TP+TN+FP+FNTP+TN
- 含义:表示整个分类结果中正确分类的比例。
3. 精确率 (Precision)
-
计算: Precision = T P T P + F P \text{Precision} = \frac{TP}{TP + FP} Precision=TP+FPTP
-
含义 :表示对于预测为正类别的样本中,实际为正类别的比例。
-
例如,贷款时我们宁可少借出去钱,也不能把钱借给不还钱的人。
4. 召回率 (Recall)
- 计算: Recall = T P T P + F N \text{Recall} = \frac{TP}{TP + FN} Recall=TP+FNTP
- 含义:表示对于实际为正类别的样本中,被正确预测为正类别的比例。
- 例如,体检时,宁可把健康人列为患病的人,也要尽可能找出患病的人。
提高精确率往往意味着降低召回率,反之亦然。
5. F1分数 (F1 Score)
- 计算: F1 Score = 2 × Precision × Recall Precision + Recall \text{F1 Score} = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} F1 Score=2×Precision+RecallPrecision×Recall
- 含义:是精确率和召回率的调和平均值,用于衡量算法的综合性能。
上述指标都是越大越好(一般)
6. ROC曲线和AUC值 (Receiver Operating Characteristic and Area Under Curve)
- 含义:
- ROC曲线是一个用来展示分类模型在所有可能的分类阈值下的性能图。
- 它通过绘制真正率(召回率)和假正率来展示模型的性能。
- 计算:
- 真正率(True Positive Rate, TPR):也称为召回率或灵敏度,是模型正确预测为正类(第一类)的样本占所有实际正类样本的比例。计算公式为 TPR = T P T P + F N \text{TPR} = \frac{TP}{TP + FN} TPR=TP+FNTP
- 假正率(False Positive Rate, FPR):是模型错误预测为正类的样本占所有实际负类(第二类)样本的比例。计算公式为 FPR = F P F P + T N \text{FPR} = \frac{FP}{FP + TN} FPR=FP+TNFP
- 绘制方法:
- 横轴是假正率(FPR),纵轴是真正率(TPR)。
- 不同的点代表不同的分类阈值,模型的分类阈值改变时,会在ROC曲线上移动。
- 曲线下面积(AUC)越大,模型的性能越好。
- AUC值:
- AUC值是ROC曲线下的面积,用来量化整个ROC曲线的总体性能。
- AUC值的范围从0到1,AUC值越接近1,说明模型的分类性能越好;AUC值越接近0.5,说明模型的分类性能接近随机猜测。
- 计算:
- AUC值可以通过计算ROC曲线下的梯形面积获得。
- 在实际应用中,通常使用数值积分方法或梯形法则来近似计算AUC值。
AUC面积计算方式不好算,可以用下面的计算公式:
解释:
- 分母:正样本 (值为1)的有4个,负样本(值为0)的有6个。故4*6共24种组合。
- 分子:正样本的预测值>负样本预测值,记为1。正样本的预测值=负样本预测值,记为0.5。故第一个正样本分别与负样本比较得4.5, 第二个正样本得6,以此类推为2,6,相加即为4.5+6+2+6
如果解释看不明白,指路B站视频
样本不平衡时,得到的准确率、精确率、召回率结果含有很大的水分。
故如果样本不平衡,使用F1或ROC曲线。
二、链路预测的评价指标
1. AUC (Area Under Curve)
- 计算:AUC通过比较测试集中存在的边和不存在的边的相似值来评估算法的性能。具体来说,是绘制ROC曲线(真正率对假正率的图)并计算曲线下的面积。
- 含义:AUC值衡量算法区分实际边和非边对的能力。AUC值越高,模型的预测能力越好。
2. Precision@L
- 计算:Precision@L是仅考虑排名前L的预测链接的精确率。计算公式为 Precision@L = 排名前L的预测链接中正确的数量 L \text{Precision@L} = \frac{\text{排名前L的预测链接中正确的数量}}{L} Precision@L=L排名前L的预测链接中正确的数量
- 含义:衡量模型在给定的前L个预测中预测正确的比例。这个指标有助于了解模型在最有可能的预测中的表现。
3. Ranking Score
- 计算:Ranking Score基于节点对的排名来评价预测性能。具体来说,是计算测试集中的边和不存在的边的相似值的排名,并根据排名顺序给出分数。
- 含义:衡量算法预测的边的排名质量。一个高的Ranking Score意味着好的预测性能,即正确的链接更有可能被排在前面。
三、社区检测的评价指标
1. 模块度 (Modularity)
- 计算:模块度是通过以下公式计算的 Modularity = 1 2 m ∑ i , j [ A i j − d i d j 2 m ] δ ( C i , C j ) \text{Modularity} = \frac{1}{2m} \sum_{i,j} \left[ A_{ij} - \frac{d_i d_j}{2m} \right] \delta(C_i, C_j) Modularity=2m1i,j∑[Aij−2mdidj]δ(Ci,Cj),其中 A i j A_{ij} Aij 是邻接矩阵中的元素, d i d_i di 和 d j d_j dj 是节点的度, δ ( C i , C j ) \delta(C_i, C_j) δ(Ci,Cj) 是一个指示函数,如果节点i和j在同一社区则为1,否则为0。
- 含义:模块度衡量网络被划分的社区结构的紧密程度。值越高,表示社区内部连接越紧密,社区间的连接越稀疏,因此社区划分质量越好。
2. 标准化互信息 (Normalized Mutual Information, NMI)
- 计算:NMI是通过以下公式计算的 NMI ( R , F ) = 2 × ∑ i , j N i j log ( N i j N i ∗ N j ∗ ) ∑ i N i ∗ log ( N i ∗ S ) + ∑ j N j ∗ log ( N j ∗ S ) \text{NMI}(R,F) = \frac{2 \times \sum_{i,j} N_{ij} \log \left(\frac{N_{ij}}{N_i^* N_j^*}\right)}{\sum_i N_i^* \log \left(\frac{N_i^*}{S}\right) + \sum_j N_j^* \log \left(\frac{N_j^*}{S}\right)} NMI(R,F)=∑iNi∗log(SNi∗)+∑jNj∗log(SNj∗)2×∑i,jNijlog(Ni∗Nj∗Nij),其中 N i j N_{ij} Nij 是真实社区i和算法得到的社区j之间共有的节点数, N i ∗ N_i^* Ni∗ 和 N j ∗ N_j^* Nj∗ 分别是真实社区i和算法得到的社区j中的节点总数,S是网络中的总节点数。
- 含义:NMI衡量算法得到的社区划分与真实社区划分之间的相似度。值越高,表示算法得到的社区划分与真实社区划分越相似。
总结
节点分类的评价指标已全部学习吸收,剩余两个部分仍然待学习····
评价指标的选择和理解对于优化机器学习模型至关重要。通过深入分析这些指标,我们能够更清晰地了解模型的性能,并据此进行相应的调整和优化。