不平衡数据的处理
参考博文数据不平衡与smote算法
smote算法,python实现
我当时看到这个问题,首先思考:何为不平衡数据?不平衡数据是如何产生的?
1. 何为不平衡数据?
可通过一些具体例子来理解
例如在信贷评估中,违约的是少数、医学影响的癌细胞识别中,癌细胞是少数、公用事业欺诈检测,欺诈的是少数等
2. 不平衡数据不经过处理,直接建模会产生什么影响?
为了解决这个问题,我们首先要了解混淆矩阵,AUC值和ROC曲线
2.1 混淆矩阵
混淆矩阵也称为误差矩阵,是表示精度评估的一种标准格式,用n行n列的矩阵形式表示。具体评估指标有准确率、精确率和召回率等。在人工智能领域,混淆矩阵作为一种可视化工具被广泛使用
- TP(True Positive): 真实为0,预测也为0
- FN(False Negative): 真实为0,预测为1
- FP(False Positive): 真实为1,预测为0
- TN(True Negative): 真实为0,预测也为0
举个例子,直观了解一下
假设我们有一个两类分类问题:根据照片内判断男女,以下是一个包含10个记录的测试数据集,包含标签分类和模型的预测结果
标签分类 | 预测结果 |
---|---|
男 | 女 |
男 | 男 |
女 | 女 |
男 | 男 |
女 | 男 |
女 | 女 |
女 | 女 |
男 | 男 |
男 | 女 |
女 | 女 |
设1-男,0-女,则混淆矩阵如下:
真实情况 | 预测结果 | |
1 | 0 | |
1 | 3(TP) | 2(FN) |
0 | 1(FP) | 4(TN) |
1. 准确率(Accuracy)
(1)什么是准确率?
所有预测正确的样本占所有样本的比例
(2)计算公式
A c c u r a c y = T P + T N T P + T N + F P + F N Accuracy =\frac{TP+TN}{TP+TN+FP+FN} Accuracy=TP+TN+FP+FNTP+TN
在例子中, A c c u r a c y = 7 10 Accuracy = \frac{7}{10} Accuracy=107
2. 精确率 (Precision)
(1)什么是精确率?
预测结果为正例的样本中真实为正例的比例
(2)计算公式
P r e c i s i o n = T P T P + F P Precision = \frac{TP}{TP+FP} Precision=TP+FPTP
在例子中, P r e c i s i o n = 3 4 Precision=\frac{3}{4} Precision=4