判断分类器在测试集上(testing data)的效果,以二分类器为例,形成2*2的矩阵。
不管是真实类别还是预测类别,都分为两类:是/不是 ,T/F;且从上到下、从左到右,是或不是的类别对应。
真实类别和预测类别吻合:TP(是汉堡)/TN(不是汉堡)——预测对了
真实类别和预测类别不吻合:FP(预测是汉堡)/ FN(预测不是汉堡)—— 预测错了
N分类:n*n的矩阵,薄荷绿的部分是预测正确的,剩下的都是预测错误——希望薄荷绿部分的数值尽可能的大,橙色的数值尽可能小,模型的效果更好。
混淆矩阵的各个评价指标:
正确率(Accuracy/Precision):模型正确分类样本数占总样本数比例 (110+65)/(110+65+3+2)=175/180=97.22%
敏感度(sensitivity)/ 召回率(recall)/ 真阳率(True Positive Rate):所有真实positive中,模型预测正确的positive比例。TP/ TP+FN 65/(65+3)=0.9558 ROC曲线的纵坐标
假阳率(False Positive Rate):所有真的negative中,模型预测错误成positive比例。ROC曲线的横坐标
特异性(Specificity):所有真实negative中,模型预测正确的negative比例。110/(110+2)=0.9821
阳性预测值(positive predict value) 模型预测的所有positive中,预测正确的比例。TP / (TP + FP) 65/(65+2)=0.9701
阴性预测值(negative predict value) 模型预测的所有negative中,预测正确的比例。TN / (TP + FP) 110/(110+3)=0.9734
F 值: (2*97.22%*0.9558)/(97.22%+0.9558)= 0.9629
Roc曲线:即接收者操作特征曲线(receiver operating characteristic curve),反映了真阳性率和假阳性率之间的变化关系。Roc曲线越趋近于左上角,预测结果越准确。
ROC 1.背景
大多数情况下不同类别的分类代价并不相等,即将样本分类为正例或反例的代价不能相提并论。如垃圾邮件过滤,我们希望重要的邮件永远不要被误判为垃圾邮件;在癌症检测中,宁愿误判也不漏判。这种情况下,仅用分类错误率来度量是不充分的,这样的度量错误掩盖了样本如何被错分的事实。所以,在分类中,当某个类别的重要性高于其他类别时,可以用Precison和Recall比分类错误率更好的新指标。
Precison(查准率):预测为正例的样本中真正正例的比例。Recall(召回率):真正为正例的样本有多少被预测出来。
根据我们最终的目标来选择度量指标。例如,在癌症检测中,我们希望选择Recall较高的模型(有病为正例)。而在垃圾邮件过滤中,我们希望选择Precison较高的模型。我们很容易构造一个高查准率或高召回率的分类器,但是很难保证两者同时成立。
2.ROC曲线用于度量分类中的非均衡性的工具,ROC曲线及AUC常被用来评价一个二值分类器的优劣。已经有了很多评价指标,为什么还要用ROC与AUC呢?因为在实际数据集中常出现类别不平衡现象,即负样本或正样本多很多(或相反),且测试数据中的正负样本分布可随时间而变化。在这种情况下,ROC曲线能保持不变。
a和c为ROC曲线,b和d为Precison和Recall曲线。a和b展示的是在原始测试集(正负样本平衡)的结果,c和d是将测试集中负样本的数量变为原来的10倍后分类器的结果。——ROC曲线基本保持不变,而Precison和Recall变化较大。
横坐标为FPR(False positive rate 假阳率),纵坐标为TPR(True postive rate真阳率)ROC 描绘了两者的相对权衡
四点一线:(0,0):fp=tp=0 ,即所有样本都被预测为负样本;(1,1):fp=tp=1,所有样本都被预测为正样本;
(1,0):fp=1,tp=0,所有正例都被预测为负例,而所有正例都没被预测出,最糟糕的分类器,它成功的避开了所有正确答案。
(0,1):fp=0,tp=1,这是一个完美的分类器,它将所有样本都正确分类。
ROC曲线越接近左上角,该分类器的性能越好,意味着分类器在假阳率很低的同时获得了很高的真阳率。
虚线y=x:这条对角线熵的点代表的是一个采用随机猜测策略的分类器的结果。例(0.5,0.5),表示对于一半的样本猜测其为正样本,另外一半样本为负样本。出现在右下角三角形中的任何分类器比随机猜测更糟糕。故,在ROC图中,此三角形通常为空。
3.AUC(Area under curve)ROC曲线下的面积ROC曲线一般都处于y=x直线上方,所以取值范围在0.5和1之间,使用AUC作为评价指标是因为ROC曲线在很多时候并不能清晰地说明哪个分类器的效果更好,而AUC值越大代表分类器效果更好。
AUC是一个概率值,随机挑选一个正样本及一个负样本,当前的分类算法根据计算得到的分数将这个正样本排在负样本前面的概率就是AUC值。所以,AUC的值越大,当前的分类算法越有可能将正样本排在负样本值前面,既能够更好的分类。
4.ROC曲线绘制对于一个特定的分类器和测试数据集,只能得到一个分类结果,即一组FPR和TPR的结果,ROC曲线的数据源。
Class表示每个测试样本真正的标签,p为正样本,n为负样本;Score表示每个测试样本属于正样本的概率值。绘制过程:
1..将Score从大到小排序;
2.从高到低,依次将score作为阈值threshold,当测试样本属于正样本的概率>=threshold时,认为它为正样本,否则为负样本。如,对于第四个样本,score=0.6,那么score值>=0.6的样本1,2,3,4都被认为是正样本,其他样本则被认为是负样本。
3.每次选取不同的score作为threshold,我们就可以得到一组FPR和TPR,即曲线上的一点,将这些点连接起来就可以得到完整的ROC曲线图,当threshold取值越多,ROC曲线就越平滑。
当我们将threshold设置为1和0时,即分别对应将所有样本划分为负样本和将所有样本划分为正样本,就可以的得到曲线上的(0,0)和(1,1)两点。
关于score值:分类器都会提供每个样例被判为阳性或者阴性的可信程度值,但通常情况下,这些值在最后输出离散分类标签之前会被清除。例如,朴素贝叶斯能提供一个可能值,在Logistic回归中输入到sigmoid函数中的是一个数值。在Adaboost和SVM中,会计算一个数值然后输入到sign()函数中,所有的这些值都可以看做score,用于衡量给定分类器的预测强度。
ROC点(0.1,0.5)产生了最高的准确率。!分类器的最好准确率在threshold=0.54时,而不是在类别平衡分布的threshold=0.5处。
5.Convex Hull阴影区域被称作两个曲线的convex hull,在选择分类器时总是应该根据convex hull的上边界进行操作。如,目标只是覆盖40%的真阳性,选择方法A,这样可以提供5%的更低的假阳性率相对于B来说。如果你的目标是覆盖80%的真阳性,应该选择方法B,因为B的假阳性率为60%,与A相比更低。如果目标是覆盖60%的真阳性,那么应该结合A和B。
6.ROC曲线的python代码实现def plotROC(predStrengths, classLabels):
cur=(0.0, 0.0)
numPosClass = np.sum(np.array(classLabels) == 1.0)
yStep = 1.0/numPosClass
xStep = 1.0/(len(classLabels)-numPosClass)
print(np.array(predStrengths.flatten()))
sortedIndicies = np.argsort(-np.array(predStrengths.flatten()))
print(sortedIndicies)
fig = plt.figure()
fig.clf()
ySum = 0.0
ax = plt.subplot(111)
for index in sortedIndicies:
if classLabels[index] == 1.0:
delY = yStep; delX=0
else:
delY = 0; delX = xStep
ySum += cur[1]
ax.plot([cur[0], cur[0]+delX], [cur[1], cur[1]+delY], c='b')
cur = (cur[0]+delX, cur[1]+delY)
print(cur)
ax.plot([0, 1], [0, 1], 'b--')
ax.axis([0, 1, 0, 1])
plt.xlabel('False Positve Rate')
plt.ylabel('True Postive Rate')
plt.title('ROC curve for AdaBoost Horse Colic Detection System')
ax.axis([0, 1, 0, 1])
plt.show()
print('the Area under the curve is:', ySum*xStep)
函数两个输入参数,第一个参数就代表score,即分类器的预测强度。第二个参数是classLabels,即样本真实的类标签。
————————————————
版权声明:本文为CSDN博主「糖葫芦君」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yinyu19950811/article/details/81288287
投票法 1.背景
在航空航天领域,每个零件发出的电信号都对航空器的成功发射起到重要作用。如果我们有一个二进制形式的信号:11101100100111001011011011011,在传输过程中第二位发生了翻转10101100100111001011011011011,这导致的结果可能是致命的。一个常用的纠错方法是重复多次发送数据,并以少数服从多数的方法确定正确的传输数据。一般情况下,错误总是发生在局部,因此融合多个数据是降低误差的一个好方法,这就是投票法的基本思路。
2.定义投票法是集成学习中常用的技巧,是一种遵循少数服从多数原则的集成学习模型,通过多个模型的集成降低方差,从而提高模型的鲁棒性。帮助我们提高模型的泛化能力,减少模型的错误率。在理想情况下,投票法的预测效果应当优于任何一个基模型的预测效果。投票法在回归模型和分类模型上都可使用。
- 回归投票法:预测结果是所有模型预测结果的平均值。
- 分类投票法:预测结果是所有模型种出现最多的预测结果。
学习器hi在样本X上的预测输出表示为一个N维向量,
- 绝对多数投票法(majority voting):若某标记得票过半数, 则预测为该标记; 否则拒绝预测.
- 相对多数投票法(plurality voting):预测为得票最多的标记, 若同时有多个标记获最高票, 则从中随机选取一个.
在不允许拒绝预测的任务中, 绝对多数、相对多数投票法统称为“多数投票法”.
- 加权投票法(weighted voting):
分类投票法又可划分为硬投票与软投票:
- 硬投票:预测结果是所有投票结果最多出现的类
对于某个样本:模型 1 的预测结果是 类别 A;模型 2 的预测结果是 类别 B;模型 3 的预测结果是 类别 B—— 有2/3的模型预测结果是B,因此硬投票法的预测结果是B
- 软投票:所有投票结果中概率加和最大的类。
对于某个样本:模型 1 的预测结果是 类别 A 的概率为 99%;模型 2 的预测结果是 类别 A 的概率为 49%;模型 3 的预测结果是 类别 A 的概率为 49%,最终对于类别A的预测概率的平均是 (99 + 49 + 49) / 3 = 65.67%,因此软投票法的预测结果是A。
软投票法与硬投票法可以得出完全不同的结论。相对于硬投票,软投票法考虑到了预测概率这一额外的信息,因此可得出比硬投票法更准确的预测结果。
————————————————
版权声明:本文为CSDN博主「面包猎人」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_40807714/article/details/115709812
卷积神经网络(CNNs)
是一种图像的深度学习算法,通过系列的卷积核和池核——从浅层到深层提取特征;然后通过全连接层——将特征映射到分类任务。通过设置卷积层、池化层、全连通层、激活函数和损失函数的适当组合,可以建立可靠的复杂非线性图像任务模型。
1.卷积核(convolution kernel-CONV)https://setosa.io/ev/image-lernels卷积与卷积核的可视化操作与理解
第一幅图和第二幅图对应,第三幅图为原图
中间为卷积核kenel,可以在input image上滑动,output image输出的为对应区域的乘积之和。
2.池核(pooling kernel-POOL)包括average pooling和 max pooling
3.全连接层(fully connected layers-FC)
与人工神经网络一样,全连通层通过几个隐藏层将一维的扁平特征映射到分类维。
4.激活函数(activation functions)进行非线性任务,如ReLU和Tanh
5.损失函数(loss functions)损失函数是梯度下降学习(gradient descent learning)在反向传播(back propagation)中的目标函数,如交叉熵损失(cross entropy loss)和均方误差(mean square error)。
监督任务中的两个重要值:预测值(输入CNN后预测得到的)和真实值(输入数据本身的),通过对每个卷积核使用反向传播算法,使得预测值和真实值差值最小。
6.Softmax函数(softmax function)一般在CNN的最后一层设置softmax函数,用于计算矿床的含矿概率。
7.三种常用的CNN结构(LeNet、AlexNet、VggNet)LeNet:relatively simple,常用的激活函数是 Sigmoid/Tanh
AlexNet:deeper than LeNet structure,常用的激活函数是ReLU
VggNet:deeper than the other two networks,通过堆叠多个3×3卷积核而不是大规模卷积核来减少权值的数量。
————————————————
参考文献:Applications of data augmentation in mineral prospectivity prediction based on convolutional neural networks



