傻瓜攻略(十八)——MATLAB实现SVM二分类之fitclinear

傻⽠攻略(⼗⼋)——MATLAB实现SVM⼆分类之fitclinear
除了具有两个特征(即可以表⽰在⼆维坐标图)的数据分类,实际应⽤中的数据往往具有很多个特征,fitclinear函数可以训练⽤于⾼维数据的SVM⼆分类模型
以下内容基于MATLAB官⽹的介绍⽂档,进⾏了⼀点个⼈的理解和整理,不算原创,但也不是单纯的翻译,也就恬不知耻的算作原创了。具体内容缺⽄少两的,想看具体的英⽂内容请点击链接。
MATLAB实现SVM⼆分类之fitclinear
fitclinear
gto2012要在⾼维数据集(即包含许多预测变量的数据集)上训练⽤于⼆分类的线性⽀持向量机模型,可以改⽤。
fitclinear训练线性分类模型,⽤于⾼维、完整或稀疏的预测数据的⼆类(binary)学习。现有的线性分类模型包括正则化⽀持向量机(SVM)和logistic回归模型。fitclinear使⽤减少计算时间的技术(如随机梯度下降)最⼩化⽬标函数。
为了减少在包含多个预测变量的⾼维数据集上的计算时间,利⽤fitchinear训练⼀个线性分类模型。对于低维到中维预测数据集,请参阅。
⼏个例⼦
Train Linear Classification Model
训练线性分类模型,样本⼤⼩为31572*34023,⽐较⼤。
%导⼊NLP数据集
load nlpdata
% X是预测数据的稀疏矩阵,Y是类别标签的分类向量,数据中有两个以上的类。
%标识与“统计和机器学习⼯具箱”⽂档⽹页对应的标签。
Ystats = Y =='stats';
%训练⼀个⼆进制线性分类模型,该模型可以识别⽂档⽹页中的字数是否来⾃统计和机器学习⼯具箱⽂档。使⽤整个数据集训练模型。通过提取拟合摘要,确定优化算法将模型拟合到数据的程度。
rng(1);% For reproducibility
[Mdl,FitInfo]=fitclinear(X,Ystats);
Mdl是⼀个线性分类模型。可以通过模型和训练数据(或新数据)的损失来检查样本中的分类错误,也可以通过Mdl预测新的数据。
FitInfo是⼀个结构数组,其中包含终⽌状态(TerminationStatus)以及解算器将模型拟合到数据所需的时间(FitTime)。最好使⽤FitInfo来确定优化终⽌测量是否令⼈满意。因为训练时间很短,可以尝试重新训练模型,但要增加通过数据的次数。这可以改进诸如DeltaGradient之类的措施。
Find Good Lasso Penalty Using Cross-Validation
使⽤交叉验证到好的套索惩罚(Lasso Penalty),Lasso是Least Absolute Shrinkage and Selection Operator的简称,是⼀种采⽤了L1正则化(L1-regularization)的线性回归⽅法,采⽤了L1正则会使得部分学习到的特征权值为0,从⽽达到稀疏化和特征选择的⽬的。
具体是个啥我也不太懂,还是得学习啊。
要为使⽤Logistic回归学习器的线性分类模型确定良好的lasso-penalty strength,实施5倍交叉验证。使⽤的数据集和前⼀个例⼦的⼀样。具体过程见代码:
%导⼊数据集
load nlpdata
Ystats = Y =='stats';
%⽣成从10的-6次⽅到10的-0.5次⽅之间按对数等分的11个元素的⾏向量,即11个正则化强度创新之路 纪录片>窄带滤波器
Lambda =logspace(-6,-0.5,11);
%对模型进⾏交叉验证。要提⾼执⾏速度,请转置预测变量数据并指定观察值在列中。
拳皇13卡%使⽤SpaRSA估算系数。将⽬标函数的梯度公差降低到1e-8。
X = X';
大众投资指南rng(10);% For reproducibility
CVMdl =fitclinear(X,Ystats,'ObservationsIn','columns','KFold',5,...
'Learner','logistic','Solver','sparsa','Regularization','lasso',...
中国饮食文化的发展'Lambda',Lambda,'GradientTolerance',1e-8)
numCLModels =numel(CVMdl.Trained)
% CVMdl是ClassificationPartitionedLinear模型。由于fitclinear实现5折交叉验证,因此CVMdl包含5个ClassificationLinear模型,该软件在每次折叠时进⾏训练。
%显⽰第⼀个训练有素的线性分类模型。
Mdl1 = CVMdl.Trained{1}
% Mdl1是线性分类模型,fitclinear通过在前四个折叠中进⾏训练来构造Mdl1。
%因为Lambda是⼀系列正则化强度,所以可以将Mdl1视为11个模型,Lambda中每个正则化强度都对应⼀个模型。
%估计交叉验证的分类误差。
%因为有11个正则化强度,所以ce是分类错误率组成的1×11向量。
ce =kfoldLoss(CVMdl);
%较⾼的Lambda值导致预测变量稀疏性,这是⼀个良好的分类器质量。
%对于每个正则化强度,使⽤整个数据集和交叉验证模型时的相同选项来训练线性分类模型。确定每
个模型的⾮零系数的数量。
Mdl =fitclinear(X,Ystats,'ObservationsIn','columns',...
'Learner','logistic','Solver','sparsa','Regularization','lasso',...
'Lambda',Lambda,'GradientTolerance',1e-8);
numNZCoeff =sum(Mdl.Beta~=0);
%在同⼀图中,针对每个正则化强度绘制交叉验证的分类错误率和⾮零系数的频率。在对数刻度上绘制所有变量。
figure;
[h,hL1,hL2]=plotyy(log10(Lambda),log10(ce),...
log10(Lambda),log10(numNZCoeff));
hL1.Marker ='o';
hL2.Marker ='o';
ylabel(h(1),'log_{10} classification error')
ylabel(h(2),'log_{10} nonzero-coefficient frequency')
xlabel('log_{10} Lambda')
title('Test-Sample Statistics')
hold off
%选择平衡预测变量稀疏性和低分类误差的正则化强度指标。在这种情况下,10的-4次⽅⾄10的-1次⽅之间的值就⾜够了。
idxFinal =7;
%从Mdl中选择具有选定正则化强度的模型。
% MdlFinal是包含⼀个正则化强度的ClassificationLinear模型。可以使⽤MdlFinal和新数据预测新数据的标签。
MdlFinal =selectModels(Mdl,idxFinal);
Optimize Linear Classifier
本⽰例说明如何使⽤fitclinear在线性分类器中最⼩化交叉验证误差。 该⽰例仍然使⽤NLP数据集,但是我没看,哈哈哈。
输⼊参数Input Arguments
X是预测数据,指定为n×p全矩阵或稀疏矩阵。
注意,如果调整预测数据矩阵的⽅向,使观测值对应于列并指定“ ObservationsIn”,“ columns”,则优化执⾏时间可能会⼤⼤减少。
Y是分类模型的类标签,指定为分类,字符或字符串数组,逻辑或数字向量或字符向量的单元格数组。fitclinear仅⽀持⼆进制分类。 Y必须完全包含两个截然不同的类,或者必须使⽤’ClassNames’名称/值对参数指定两个⽤于训练的类。有关多类学习的信息,请参见fitcecoc。如果Y是⼀个字符数组,则每个元素必须对应于该数组的⼀⾏。Y的长度必须等于X中的观测数⽬。⼀个好的做法是使⽤ClassNames名称/值对参数指定类顺序。
输出参数Output Arguments
输出参数包括经过训练的分类模型Mdl,优化的详细信息FitInfo,以及超参数的交叉验证优化结果。
此外,More About和Tips中还给出了更多的注意事项,值得学习。
应⽤
介绍了线性分类器的应⽤。分类线性模型是经过训练的线性模型对象,⽤于⼆元分类。线性模型是⽀持向量机(SVM)或逻辑回归模型。fitclinear通过使⽤减少⾼维数据集(例如,随机梯度下降)的计算时间的技术来最⼩化⽬标函数,从⽽拟合了CategoryLinear模型。分类损失加正则项构成⽬标函数。
与其他分类模型不同,出于节省内存的⽬的,ClassificationLinear模型对象不存储训练数据。 但是,它们存储了估计的线性模型系数,先验概率和正则化强度。
可以使⽤训练过的ClassificationLinear模型来预测新数据的标签或分类分数。有关详细信息,请参见。

本文发布于:2024-09-23 13:26:47,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/53851.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模型   分类   数据   线性   预测   正则
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议