class_weight和sample_weight
1、在SVC中对于不平衡数据可以调节svcl类中的参数class_weight和fit接口中的参数sample_weight
如果只设置class_weight,那么参数C变为:class_weight[i]*C 。
如果同时调节class_weight和sample_weight,那么参数C变为:class_weight[i] * sample_weight[i] * C。
2、准确率失去作用的原因:
从准确率的角度来说,不做样本平衡时的准确率反而更高,做了样本平衡的准确率反而下降了,这是因为做了样本平衡后,为了要更多的捕捉出少数类,模型误伤了许多多数类样本,而多数类样本被分错的样本数量大于少数类被分类正确的样本数量,使得模型整体的精确性下降。
3、如果要追求整体的accuracy,那么不要设置class_weight和sample_weight。
如果要追求的是捕捉少数类(因为少数类被判错的代价是巨大的),那么就要使用class_weight和sample_weight。
混淆矩阵
1、在混淆矩阵中,我们将少数类认为正例,多数类人为是反例。
1、准确率:acc = (a+d) / (a+b+c+d)
2、精确度:preision = a / (a+c)
预测的少数类中有多少是被分类正确。
3、敏感度:recall= a / (a+b)
实际的少数类有多少被预测出来了
recall越高,预测出的少数类越多。
4、特异度:specificity = d /(c+d)
实际的多数类中,有多少被预测正确了。
5、假正率:FPR = c / (c+d)
将多数类判断错误的的能力。样本平衡后,FPR会下降,因为有