原文链接:http://tecdat.cn/?p=15508
最近咱们被客户要求撰写对于SVM,KNN和奢侈贝叶斯模型的钻研报告,包含一些图形和统计输入。
绘制ROC曲线通过Logistic回归进行分类
加载样本数据。
load fisheriris
通过应用与versicolor和virginica物种绝对应的度量来定义二元分类问题。
pred = meas(51:end,1:2);
定义二进制响应变量。
resp = (1:100)'>50; % Versicolor = 0, virginica = 1
拟合逻辑回归模型。
mdl = fitglm(pred,resp,'Distribution','binomial','Link','logit');
计算ROC曲线。应用逻辑回归模型中的概率估计值作为得分。
perfcurve
将阈值存储在数组中。
显示曲线下的面积。
AUCAUC = 0.7918
曲线下的面积为0.7918。最大AUC为1,对应于现实分类器。较大的AUC值示意更好的分类器性能。
绘制ROC曲线
plot(X,Y)xlabel('False positive rate') ylabel('True positive rate')title('ROC for Classification by Logistic Regression')
应用ROC曲线比拟分类办法
加载样本数据
load ionosphere
X
是351x34预测变量的矩阵。 Y
是类别标签的字符数组: 'b'
不良雷达回波和 'g'
良好雷达回波。
从新格式化因变量以适宜逻辑回归。
拟合一个逻辑回归模型来预计雷达返回的后验概率是一个不好的概率。
mdl = fitglm(pred,resp,'Distribution','binomial','Link','logit');score_log = mdl.Fitted.Probability; % Probability estimates
应用得分的概率计算规范ROC曲线。
在雷同的样本数据上训练SVM分类器标准化数据。
mdlSVM = fitcsvm(pred,resp,'Standardize',true);
计算后验概率。
第二列 score_svm
蕴含不良雷达收益的后验概率。
应用SVM模型的分数计算规范ROC曲线。
在同一样本数据上拟合奢侈贝叶斯分类器。
计算后验概率(分数)
[~,score_nb] = resubPredict(mdlNB);
应用奢侈贝叶斯分类的分数计算规范ROC曲线。
将ROC曲线绘制在同一张图上。
点击题目查阅往期内容
数据分享|R语言逻辑回归、线性判别分析LDA、GAM、MARS、KNN、QDA、决策树、随机森林、SVM分类葡萄酒穿插验证ROC
左右滑动查看更多
01
02
03
04
只管对于较高的阈值,SVM能够产生更好的ROC值,但逻辑回归通常更善于辨别不良雷达收益与良好雷达。奢侈贝叶斯的ROC曲线通常低于其余两个ROC曲线,这表明样本内性能比其余两个分类器办法差。
比拟所有三个分类器的曲线下面积。
AUClogAUClog = 0.9659AUCsvmAUCsvm = 0.9489AUCnbAUCnb = 0.9393
Logistic回归的AUC度量最高,而奢侈的贝叶斯则最低。该结果表明,逻辑回归对此样本数据具备更好的样本内均匀性能。
确定自定义内核性能的参数值
本示例阐明如何应用ROC曲线为分类器中的自定义内核函数确定更好的参数值。
在单位圆内生成随机的一组点。
定义预测变量。将第一象限和第三象限中的点标记为属于正类别,而将第二象限和第二象限中的点标记为负类。
pred = [X1; X2];resp = ones(4*n,1);resp(2*n + 1:end) = -1; % Labels
创立函数mysigmoid.m
,该函数 承受因素空间中的两个矩阵作为输出,并应用S形内核将其转换为Gram矩阵。
应用Sigmoid内核函数训练SVM分类器。应用标准化数据。
设置 gamma = 0.5
,应用调整后的S形核训练SVM分类器。
SVMModel2 = fitPosterior(SVMModel2);[~,scores2] = resubPredict(SVMModel2);
计算两个模型的ROC曲线和曲线下面积(AUC)。
绘制ROC曲线。
plot(x1,y1)hold onplot(x2,y2)hold offtitle('ROC for classification by SVM');
将gamma参数设置为0.5的内核函数可提供更好的样本内后果。
比拟AUC度量。
auc1auc2auc1 = 0.9518auc2 = 0.9985
伽玛设置为0.5时曲线下的面积大于伽玛设置为1时曲线下的面积。这也证实了伽玛参数值为0.5会产生更好的后果。为了直观比拟这两个伽玛参数值的分类性能。
绘制分类树的ROC曲线
加载样本数据。
load fisheriris
列向量 species
由三种不同物种的鸢尾花组成。双矩阵 meas
蕴含对花朵的四种测量类型:萼片长度,萼片宽度,花瓣长度和花瓣宽度。所有度量单位均为厘米。
应用萼片的长度和宽度作为预测变量训练分类树。
依据树预测物种的分类标签和分数 。
[~,score] = resubPredict(Model);
分数是察看值(数据矩阵中的一行)所属类别的后验概率。列 score
对应于所指定的类 'ClassNames'
。
因为这是一个多类问题,因而不能仅将其 score(:,2)
作为输出。这样做将无奈提供 perfcurve
无关两个阴性类别(setosa和virginica)分数的足够信息。此问题与二元分类问题不同,在二元分类问题中,晓得一个类别的分数就足以确定另一个类别的分数。因而,必须提供 perfcurve
将两个否定类的得分纳入思考范畴的函数。一种函数是score(:,2)-max(score(:,1),score(:,3))。
X
,默认为假阳性率, Y
,默认为真阳性率(召回率或敏感性)。正类标签为 versicolor
。因为未定义否定类别,因而 perfcurve
假如不属于必定类别的观测值属于一个类别。该函数将其承受为否定类。
suby = 12×2 0 0 0.1800 0.1800 0.4800 0.4800 0.5800 0.5800 0.6200 0.6200 0.8000 0.8000 0.8800 0.8800 0.9200 0.9200 0.9600 0.9600 0.9800 0.9800 ⋮subnames = 1x2 cell {'setosa'} {'virginica'}
在ROC曲线上绘制ROC曲线和最佳工作点。
找到与最佳工作点绝对应的阈值。
T((X==OPTROCPT(1))&(Y==OPTROCPT(2)))ans = 0.2857
指定 virginica
为否定类,并计算和绘制ROC曲线 versicolor
。
同样,必须提供 perfcurve
将否定类分数纳入考量的函数。要应用的函数的一个示例是score(:,2)-score(:,3)。
计算ROC曲线的逐点置信区间
加载样本数据。
load fisheriris
仅将前两个变量用作预测变量,来定义二元问题。
pred = meas(51:end,1:2);
定义二进制因变量。
resp = (1:100)'>50; % Versicolor = 0, virginica = 1
拟合逻辑回归模型。
通过垂直均匀(VA)和应用bootstrap进行采样,计算实在正率(TPR)上的逐点置信区间。
'NBoot',1000
将疏导样本的数量设置为1000。 'XVals','All'
提醒 perfcurve
返回 X
, Y
和 T
所有分数的Y
值,并X
应用垂直均匀将所有值的值(真阳性率) 均匀 (假阳性率)。 默认状况下将应用阈值均匀来计算相信范畴。
绘制逐点置信区间。
errorbar(X,Y(:,1),Y(:,1)-Y(:,2),Y(:,3)-Y(:,1));
不肯定总是能够管制误报率(FPR,X
此示例中的 值)。因而,可能心愿通过阈值均匀来计算实在正利率(TPR)的逐点置信区间。
绘制置信区间。
figure()errorbar(X1(:,1),Y1(:,1),Y1(:,1)-Y1(:,2),Y1(:,3)-Y1(:,1));
指定阈值计算ROC曲线。而后绘制曲线。
figure()errorbar(X1(:,1),Y1(:,1),Y1(:,1)-Y1(:,2),Y1(:,3)-Y1(:,1));
点击文末 “浏览原文”
获取全文残缺代码数据资料。
本文选自《Matlab建设SVM,KNN和奢侈贝叶斯模型分类绘制ROC曲线》。
点击题目查阅往期内容
R语言贝叶斯狭义线性混合(多层次/程度/嵌套)模型GLMM、逻辑回归剖析教育留级影响因素数据
逻辑回归Logistic模型原理R语言分类预测冠心病危险实例
数据分享|用加性多元线性回归、随机森林、弹性网络模型预测鲍鱼年龄和可视化
R语言高维数据惩办回归办法:主成分回归PCR、岭回归、lasso、弹性网络elastic net剖析基因数据(含练习题)
Python中LARS和Lasso回归之最小角算法Lars剖析波士顿住房数据实例
R语言Bootstrap的岭回归和自适应LASSO回归可视化
R语言Lasso回归模型变量抉择和糖尿病倒退预测模型R语言实现贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归剖析
基于R语言实现LASSO回归剖析
R语言用LASSO,adaptive LASSO预测通货膨胀工夫序列
R语言自适应LASSO 多项式回归、二元逻辑回归和岭回归利用剖析
R语言惩办logistic逻辑回归(LASSO,岭回归)高维变量抉择的分类模型案例
Python中的Lasso回归之最小角算法LARS
r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现
r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现
R语言实现LASSO回归——本人编写LASSO回归算法
R应用LASSO回归预测股票收益
python应用LASSO回归预测股票收益