对于组合二元支持向量机模型的多类学习,使用纠错输出码(ECOC,error-correcting output codes )。有关详细信息,请参阅fitcecoc。 ECOC 可以用来将 Multiclass Learning 问题转化为 Binary Classification 问题。

以下内容基于MATLAB官网的介绍文档,进行了一点个人的理解和整理,不算原创,但也不是单纯的翻译。一年的博客写作生涯,随着博士生涯进入正轨,我写博客的动力也变了,原来是纯粹为了分享和成长,想写的方法就学一学写一写。现在不行了,搞科研的方法太多了,能让人皓首穷经,慢慢地,我就变成了没有需求就没有学习的的动力。用不到的方法就不想去学了,python的学习就是这样放下的。SVM也是,这里就开个头吧,不知道以后还有没有机会深入学习,拿出来哪怕一个月的时间,从头到尾地学习。现在这篇博客里的内容缺斤少两的,想看具体的英文内容请点击链接fitcecoc。

MATLAB实现SVM多分类

  • 纠错输出码(ECOC)相关网页
  • 官网的例子
    • Train Multiclass Model Using SVM Learners
    • Train Multiclass Linear Classification Model
    • Cross-Validate ECOC Classifier
    • Estimate Posterior Probabilities Using ECOC Classifier
    • Speed Up Training ECOC Classifiers Using Binning and Parallel Computing
    • Optimize ECOC Classifier
    • Train Multiclass ECOC Model with SVMs and Tall Arrays
  • 其他

纠错输出码(ECOC)相关网页

https://www.deeplearn.me/587.html
https://blog.csdn.net/u010945683/article/details/52743515

官网的例子

Train Multiclass Model Using SVM Learners

使用支持向量机(SVM)二进制学习器训练多类纠错输出代码(ECOC)模型。

% 导入数据,Y中含有三类标签
load fisheriris
X = meas;
Y = species;% 使用默认选项训练多类ECOC模型。
% Mdl是ECOC多分类模型,默认情况下,fitcecoc使用SVM二进制学习器和一对一编码设计,可以使用点表示法访问Mdl属性。
Mdl = fitcecoc(X,Y)% 显示类名称和编码设计矩阵。
% 三个类的一对一编码设计产生三个二进制学习器。CodingMat的列对应于学习器,行对应于类。
% 类顺序与Mdl.ClassNames类中的顺序相同
% 例如,CodingMat(:,1)为[1;–1;0],表示matlab使用分类为"setosa"和"versicolor"的所有观测值训练第一个支持向量机二进制学习者。
% 因为'setosa'对应于1,所以它是正类;'versicolor'对应于-1,所以它是负类。
Mdl.ClassNames
CodingMat = Mdl.CodingMatrix% 使用单元格索引和点表示法访问每个二进制学习器。
Mdl.BinaryLearners{1}   % The first binary learner% 计算替换类别错误。 训练数据的分类误差很小,但是分类器可能是过拟合模型。 可以使用crossval对分类器进行交叉验证,并计算交叉验证分类错误。
error = resubLoss(Mdl)

Train Multiclass Linear Classification Model

训练由多个二进制,线性分类模型组成的ECOC模型。

% 导入数据
load nlpdata
% X是预测数据的稀疏矩阵,Y是类标签的分类向量。数据中有两个以上的类。
% 创建默认的线性分类模型模板。
t = templateLinear();
% 训练由多个二进制,线性分类模型组成的ECOC模型,这些模型可以根据文档网页上单词的频率分布来识别产品。
% 为了缩短训练时间,请转置预测数据,并指定观察值对应于列。
X = X';
rng(1); % For reproducibility
Mdl = fitcecoc(X,Y,'Learners',t,'ObservationsIn','columns')

Cross-Validate ECOC Classifier

使用SVM二进制学习器对ECOC分类器进行交叉验证,并估计分类错误。

% 交叉验证ECOC分类器
% 加载Fisher的虹膜数据集,指定预测变量数据X和标签Y。
load fisheriris
X = meas;
Y = species;
rng(1); % For reproducibility
% 创建一个SVM模板,并标准化预测变量。
% t是一个SVM模板。 大多数模板对象属性为空,训练时,属性为其默认值。
t = templateSVM('Standardize',true)
% 训练ECOC分类器Mdl,并指定类别顺序。
Mdl = fitcecoc(X,Y,'Learners',t,...'ClassNames',{'setosa','versicolor','virginica'});
% 使用10倍交叉验证对Mdl进行交叉验证
CVMdl = crossval(Mdl);
% 估计广义分类误差,误差越小说明分类器的泛化效果越好
genError = kfoldLoss(CVMdl)

Estimate Posterior Probabilities Using ECOC Classifier

使用SVM二进制学习器训练ECOC分类器。首先预测训练样本标签和类后验概率,然后预测网格中每个点的最大类后验概率,并可视化结果。(啊不想看了)

Speed Up Training ECOC Classifiers Using Binning and Parallel Computing

使用合并和并行计算加快训练ECOC分类器的速度。
使用具有替代分割的决策树GentleBoost集成训练一个一对多ECOC分类器。 为了加快训练速度,合并(bin应该是这个意思)数值预测器并使用并行计算。Binning只有在fitcecoc使用树型学习器时才有效。训练结束后,利用10倍交叉验证估计分类误差。

Optimize ECOC Classifier

每个SVM相关函数的实例中都有一个优化的例子

Train Multiclass ECOC Model with SVMs and Tall Arrays

创建两个基于高数据训练的多类ECOC模型。其中一个模型使用线性二进制学习器,另一个模型使用核心二进制学习器。 比较两个模型的分类误差。

其他

输入输出设置的内容也有很多,需要注意的是,在这里,可以使用多种分类器进行多分类,SCM只是其中的一种。

此外,fitcecoc只支持稀疏矩阵(稀疏矩阵是个啥?)用于训练线性分类模型。对于所有其他模型,请提供完整的预测数据矩阵。

更多的内容需要进一步学习啊,学吧,学无止境,太深了。

傻瓜攻略(十九)——MATLAB实现SVM多分类相关推荐

  1. 傻瓜攻略(九)——MATLAB实现简单的多元线性回归(以炼钢转炉炉龄问题为例)

    1.多元线性回归 回归分析(Regression Analysis)是一种统计学上分析数据的方法,目的在于了解两个或多个变量间是否相关.相关方向与强度,并建立数学模型以便观察特定变量来预测研究者感兴趣 ...

  2. 傻瓜攻略(十六)——MATLAB实现txt文件复杂内容的读取

    理想情况下,txt文件中的内容是很规则的,如下图,这样的文件导入是很简单的,参见傻瓜攻略(十一)--MATLAB实现指定文件夹中txt文件的批量读取 然而现实却是,我们想要导入的txt文件中往往含有比 ...

  3. 傻瓜攻略(十五)——MATLAB中简单的聚类分析方法

    本文是对聚类分析较为简单的介绍,笔者自从大二开始接触数学建模,就使用过Q型聚类和R型聚类,但是一直到研一结束,都没有一个具体的认识,浅尝辄止,不敢言通.最近参加研究生数学建模比赛,又用到了R型聚类方法 ...

  4. 傻瓜攻略(十二)——MATLAB实现偏最小二乘回归PLS

    这一定是一篇真正的傻瓜攻略,原理为根,算法为骨,应用为肉,傻瓜为皮. 本文主要介绍偏最小二乘回归的基本实现,主要内容基于司守奎<数学建模算法与应用>第11章,在其基础上进行优化. 偏最小二 ...

  5. 傻瓜攻略(十七)——MATLAB实现SVM二分类之fitcsvm

    以下内容基于MATLAB官网的介绍文档,进行了一点个人的理解和整理,不算原创,但也不是单纯的翻译.具体内容缺斤少两的,想看具体的英文内容请点击链接fitcsvm. MATLAB实现SVM二分类之fit ...

  6. 傻瓜攻略(六)——MATLAB实现RBF神经网络

    径向基函数(Radial Basis Function,RBF)神经网络是一种传统的神经网络,于1988年首次被提出.1989年,Jackson论证了RBF神经网络对非线性连续函数的一致逼近性能. R ...

  7. 傻瓜攻略(八)——MATLAB实现模糊综合评判(两种运算方法)

    模糊综合评判法 模糊综合评价法是一种基于模糊数学(fuzzy mathematics)的综合评价方法.该综合评价法根据模糊数学的隶属度理论把定性评价转化为定量评价,即用模糊数学对受到多种因素制约的事物 ...

  8. SPM12 核磁数据预处理 傻瓜攻略

    写在最前:鉴于我自己脑子傻,请不要迷信这篇文章的方法的正确性,数据分析的方法真的很多,基于数据的差异可能在一些地方的设置或数据处理步骤都会有差异!也希望发现这篇文章哪里有错误或可以改进的大神可以评论指 ...

  9. 半自动化批量下载专利全文pdf傻瓜攻略

    半自动化批量下载专利全文pdf傻瓜攻略 写在前面 适合人群 使用前提 基本思路 键鼠记录器脚本 前期准备 脚本原理 注意事项 检查下载效果 写在前面 整理专利的时候,在专利引擎上只能一条条的下载,很是 ...

  10. 海淘iherb购物最新傻瓜攻略

    海淘iherb购物最新傻瓜攻略 这篇文档将介绍一个新人如何从美国iherb网站海淘母婴类奶粉,米粉等,保健品类蜂蜜,蜂胶等,及化妆品类,食品杂货类等等, 通过这篇文章的介绍, 我们可以不用出门就像从淘 ...

最新文章

  1. the user operation is waiting for building workspace to complete解决办法
  2. 使用C#开发数据库应用系统
  3. C#线程同步(1)- 临界区&Lock
  4. php mysql记录用户行为_PHP实现用session来实现记录用户登陆信息
  5. 矩阵置零—leetcode73
  6. python语法知识_Python 语法小知识
  7. oracle application r11i,有人在linux 2.1AS下安装过R11i吗?请帮忙解决如下问题
  8. java收_收java的小程序……谢谢
  9. 机器学习 识别图片人物动作_一键学习人物识别说明
  10. 【Excel】如何冻结任意行列
  11. 怎么1年内赚100万
  12. element datetimepicker
  13. 分布式光纤测温系统DTS-BLY-5S
  14. 软件测试这些年的变化及未来发展趋势
  15. python抓取网页数据并截图_网络爬虫-使用Python抓取网页数据
  16. 简明Hadoop配置(3)——windows下eclipse连接虚拟机
  17. go语言web开发入门之使用http2
  18. 用计算机0和1表达难舍之情,表达不舍之情的句子是
  19. 6-1 *显示汉字点阵图形(标准版) (15 分)
  20. EXCEL统计出现的次数

热门文章

  1. python少儿图形编程软件_现在最好的少儿编程软件是什么?
  2. Hadoop权威指南
  3. 装配标准工时如何计算?详解:装配的标准工时计算方法
  4. JSON 在线工具 BeJson
  5. 基于JavaWeb的学生信息管理系统
  6. 用html做mfc的界面,课程设计(MFC)“界面”“使用”“心得”
  7. Visio2013 Professional专业版密钥
  8. 前端实现序列帧_canvas实现序列帧动画的案例
  9. 从零搭建完整python自动化测试框架(UI自动化和接口自动化 )——持续更新
  10. mysql驱动和url在5.7以上版本变化