逻辑斯蒂回归
二分类问题的性能指标
前我们判断分类问题的性能如:准确率、查正率(精确率)、查全率(召回率)、F1值,这些性能指标在二分类中都适用,除了这些以外,二分类还有其他以下性能检测技术。
1、混淆矩阵
针对于二分类问题,将实例可以分为正例和反例,也称为阳性和阴性。在实际的情况下有4种。
1)预测为阳性实际为阳性,我们称为真阳性(也称为真正例),记为:TP (True Postive)
2)预测为阳性实际为阴性,我们称为假阳性(也称为假正例),记为:FP(False Postive)
3)预测为阴性实际为阴性,我们称为真阴性(也称为真负例),记为:TN(True Negative)
4)预测为阴性实际为阳性,我们称为假阴性(也称为假负例),记为:FN(False Negative)
接着前面的癌细胞的数据,癌细胞的标签是阴性和阳性,这是一个典型的二分类问题
混淆矩阵:一个混淆矩阵可以对阴性和阳性的情况做可视化的显示,具体如下:这个矩阵是一个2*2的矩阵,矩阵的每一行是一个实例的真实类,矩阵的每一列是一个实例预测类
1.1 举个简单的例子
-
创建混淆矩阵
矩阵的每一行是一个实例的真实类
矩阵的每一列是一个实例预测类
混淆矩阵
对角线上为真假,先阴后阳 -
画出这个混淆矩阵
1.2 癌细胞数据
- 查看标签
- 导入算法,预测标签,进行对比
- 画出癌细胞预测的混淆矩阵图
2、ROC与AUC
2.1 阀值
二分类问题,在预测的时候,并不是直接预测出类别,而是预测出一个[0,1]之间的连续的值,这个值一般是一个概率值,如果这个概率大于或者等于某个阀值(比如逻辑斯蒂中阀值默认为0.5)就认为是1,即为阳性(正例),否则就认为是0,即为阴性(负例)
- 两种预测
- 对比
- 对于逻辑斯蒂而言,y_proba的第二列数据如果某一个大于等于0.5就认为是1,否则就认为是0
2.2 ROC与AUC
召回率:某个类别预测正确的数据量占这个类别真实数据量比例;对于二分类问题,召回率指定是真阳性除以真阳性与假阴性的和,即recall = TP/(FN+TP),其中FN+TP实际上就是真实数据阳性的数量
衰退(假阳性率):假阳性除以假阳性与真阴性的和,即F = FP/(TN+FP),其中TN+FP实际上就是真实数据中阴性数据的数量
ROC曲线:受试者操作特征曲线
ROC曲线描绘了分类器召回率和衰退之间的关系,x轴代表衰退(假阳性率)记为FPR,y轴代表召回率(真阳性率),记为TPR。ROC曲线可以对一个分类器的性能进行可视化。
二分类问题一般是先将特征预测为一个[0,1]之间概率,然后设置一个阀值,不同的阀值对应预测结果也不一样,即不同的阀值对应的TPR和FPR也不一样
ROC曲线上每一个点都对应着一对TPR和FPR的组合,也就是说ROC曲线上的每一个点都对应一个阀值预测的结果的性能
举个例子:
现有真实数据 y_true = [1, 0, 0, 1, 1, 1, 0, 0, 0, 1]
预测概率数据 y_proba =[0.6, 0.15, 0.45, 0.78, 0.80, 0.9, 0.3, 0.48, 0.1, 0.69]
设置3个阀值分别是threshes = [0.4,0.5,0.7]
判断三个阀值下的预测值、TPR和FPR
- 阀值为0.4的时候:预测值如下:[1,0,1,1,1,1,0,1,0,1],
真实数据:[1,0,0,1,1,1,0,0,0,1]
TP=5 FP=2 TN=3 FN=0
TPR=TP/(TP+FN)=1
FPR=FP/(FP+TN)=2/5 = 0.4 - 阀值为0.5的时候:预测数据如下:[1,0,0,1,1,1,0,0,0,1]
真实数据:[1,0,0,1,1,1,0,0,0,1]
TP=5 FP=0 TN=5 FN=0
TPR=1 FPR=0 - 阀值为0.7的时候:预测数据如下:[0,0,0,1,1,1,0,0,0,0]
真实数据:[1,0,0,1,1,1,0,0,0,1]
TP=3 FP=0 TN=5 FN=2
TPR=3/5=0.6 FPR=0
AUC就是ROC曲线以下面积,AUC值越大,说明模型性能越好
2.3 对癌细胞预测数据绘制ROC曲线
可以输出一下每一个阀值对应的类别结果和混淆矩阵
绘制ROC曲线
AUC就是ROC曲线以下面积
2.4 绘制红酒数据的ROC曲线
-
导入红酒数据集数据
由target可知,这是一个三分类数据集,我们讨论的问题为二分类 -
类别2的数据去掉
-
创建逻辑斯蒂模型
对比标签,可以明显发现准确还是比较多的 -
测每个样本取正例和取反例的概率,级联对比y_pred和y_proba
-
接收3个返回值
-
绘制ROC曲线
-
精确率、召回率与阀值之间的关系
有的业务关注于召回率,例如:我们给出100个某种类别的样本,关注模型能够预测准几个
有的业务关注于精确率,例如:我们预测100个某个类别的样本,关注有多少个是正确的
有的业务既关注召回率,又关注精确率,例如:我们给出100个阳性样本,关注模型能够预测正确多少;还关注如果预测出来100个阳性样本,其中正确的有几个
绘制图像
精确率是不断上升的,召回率是不断下降的,如果既追求精确率,又追求召回率,找到两条线相交的点,将阀值设置为这个平衡点,这样预测既追求精确率,又追求召回率