F1值会受到不平衡数据的影响吗?

  统计/机器学习 监督式学习 模型验证    浏览次数:7271        分享
3

现在的用来做二元分类的数据集是严重非平衡的,我想知道在这种情况下,F1值还适不适用?数据非平衡对F1值有什么样的影响?


 

yangyang   2018-06-14 06:28



   2个回答 
10

当然有影响的。

看下图,横坐标是数据中阳性样本的比重,纵坐标是一个随机预测结果对应的F1值,可以看作是baseline。阳性样本的比重不同,baseline变化很大,所以数据的平衡性对F1值影响还是很大的。

代码如下

from sklearn.metrics import f1_score
import numpy as np
import matplotlib.pyplot as plt

fracs, f1s = [], []
for frac in np.linspace(0.01, 0.99, 20):
    n = 1000000
    n1 = int(n * frac)
    n0 = n - n1
    true = [1] * n1 + [0] * n0
    pred = np.random.randint(0, 2, n)
    fracs.append(frac)
    f1s.append(f1_score(true, pred))
    
plt.plot(fracs, f1s)
plt.xlabel('% of positive labels')
plt.ylabel('F1 score of random guess')
plt.show()


SofaSofa数据科学社区DS面试题库 DS面经

mrhust   2018-06-21 23:11

谢谢! - yangyang   2018-06-26 22:44
4

关于非平衡数据以及各种metric对应的表现可以看看这篇Facing Imbalanced Data


SofaSofa数据科学社区DS面试题库 DS面经

Nagozi   2018-06-25 05:48

谢谢! - yangyang   2018-06-26 22:45


  相关讨论

利用交叉验证调参后还需要用完整的数据集重新训练吗?

有顺序的多元分类模型应该用评判标准?

多元分类问题有没有F1?

分类中的F1精度、F2精度、F3精度是什么意思?

怎么用KS值来评价二元分类器?

机器学习中lift的概念是什么?怎么用来评价模型?

precision-recall曲线下面积有什么意义?

测试误差小于训练误差,是为什么?

k近邻算法(k-NN)怎么选k

二元分类问题中经常提到的TP,TN,FN,FP都是什么意思?

  随便看看

线性回归是机器学习算法吗?

线性可分是什么意思?

matplotlib一个画板上多个图叠加,如何决定图层上下?

python产生服从常用概率分布的随机数

micro和macro F1 score分别是什么意思?