机器学习:SVM做多分类问题

引言

SVM做二分类问题很简单明了,但是如何用二分类构建多分类问题,自己查找了部分资料,发现普遍分为两种,一种是直接法,直接求解多目标函数优化问题,但这种方法计算量很大,不实用,另外一种是间接法,通过多个二分类来实现多分类,常见的有一对多和一对一两种

最后针对一对一要构建n平方个二分类器,如果n过大,那么分类器个数过多的情况,提出一种有向无环图的方法,这种方法只需要构建n个分类器,但存在误差累计的问题

直接法求多目标优化问题(不实用)

一次性考虑所有样本,并求解一个多目标函数的优化问题,一串心得到多个分类的面

每个区域对应一个类别

但这种一次性求解的方法计算量太大,大到无法实用的地步

一对多

将类别1看作正类,其余2,3,4,5看作负类(一对多),这样拿一个样本来,可以告诉你是不是属于类别1的,如果不属于,再在2,3,4,5中继续寻找

存在两个问题:

一个是一个样本可能同时属于几个类

那么看一下这个样本到各个超平面的距离,哪个远判给哪个

另一个是一个样本可能不属于任何一个

这样这个样本属于第6类,这个类的数目远大于5类之和,所以会造成数据偏斜问题

一对一

将类别1看作正类,不降2,3,4,5都看作负类,而是从1-5中任意选取2种类别来分类,得到5*4/2=10中分类器,每一个分类器只告诉你是第一类还是第二类,或者是第一类还是第三类,统计所有分类器的票数,根据票数得到分类结果

这种问题不会有样本不属于任何一类的情形出现

但如果类别数比较大,比如1000,那么分类器的数目要上升到类别数的平方级别

复杂度较大

有向无环图

不会走回头路 >>> 减少分类器的数目

先问是第一类还是第五类

如果是第五类,再问是第二类还是第五类

如果是第五类,然后再问是第三类还是第五类

这样的话得到最后的结果不管怎样都只调用N个分类器,N是类别的数目,比起上面要调用N平方个分类器要减少很多

但问题在于存在误差累计,一旦犯错,后面都错的情况

时间: 2024-11-07 00:36:51

机器学习:SVM做多分类问题的相关文章

吴裕雄 python 机器学习——支持向量机SVM非线性分类SVC模型

import numpy as np import matplotlib.pyplot as plt from sklearn import datasets, linear_model,svm from sklearn.model_selection import train_test_split def load_data_classfication(): ''' 加载用于分类问题的数据集 ''' # 使用 scikit-learn 自带的 iris 数据集 iris=datasets.lo

机器学习之SVM多分类

实验要求数据说明 :数据集data4train.mat是一个2*150的矩阵,代表了150个样本,每个样本具有两维特征,其类标在truelabel.mat文件中,trainning sample 图展示了理想的分类类结果:方案选择:选择并实现一种两分类方法(如感知机方法,SVM等):在此基础上设计使用该二分类器实现三分类问题的策略,并程序实现,画出分类结果直接采用现成的可实现多分类的方法(如多类SVM,BP网络等)进行问题求解.画出分类结果.我选择第二种,时间不够,只能使用sklearn中的sv

机器学习常见算法分类汇总

机器学习常见算法分类汇总 机器学习无疑是当前数据分析领域的一个热点内容.很多人在平时的工作中都或多或少会用到机器学习的算法.这里 IT 经理网为您总结一下常见的机器学习算法,以供您在工作和学习中参考. 机器学习的算法很多.很多时候困惑人们都是,很多算法是一类算法,而有些算法又是从其他算法中延伸出来的.这里,我们从两个方面来给大家介绍,第一个方面是学习的方式,第二个方面是算法的类似性. 学习方式 根据数据类型的不同,对一个问题的建模有不同的方式.在机器学习或者人工智能领域,人们首先会考虑算法的学习

SVM多分类

http://www.matlabsky.com/thread-9471-1-1.htmlSVM算法最初是为二值分类问题设计的,当处理多类问题时,就需要构造合适的多类分类器.目前,构造SVM多类分类器的方法主要有两类:一类是直接法,直接在目标函数上进行修改,将多个分类面的参数求解合并到一个最优化问题中,通过求解该最优化问题“一次性”实现多类分类.这种方法看似简单,但其计算复杂度比较高,实现起来比较困难,只适合用于小型问题中:另一类是间接法,主要是通过组合多个二分类器来实现多分类器的构造,常见的方

机器学习——svm支持向量机的原理

前言 动笔写这个支持向量机(support vector machine)是费了不少劲和困难的,原因很简单,一者这个东西本身就并不好懂,要深入学习和研究下去需花费不少时间和精力,二者这个东西也不好讲清楚,尽管网上已经有朋友写得不错了(见文末参考链接),但在描述数学公式的时候还是显得不够.得益于同学白石的数学证明,我还是想尝试写一下,希望本文在兼顾通俗易懂的基础上,真真正正能足以成为一篇完整概括和介绍支持向量机的导论性的文章. 本文在写的过程中,参考了不少资料,包括<支持向量机导论>.<统

【机器学习基础】机器学习算法的分类——关于如何选择机器学习算法和适用解决的问题

引子 系统的学习机器学习课程让我觉得受益匪浅,有些基础问题的认识我觉得是非常有必要的,比如机器学习算法的类别. 为什么这么说呢?我承认,作为初学者,可能无法在初期对一个学习的对象有全面而清晰的理解和审视,但是,对一些关键概念有一个初步并且较为清晰的认识,有助于让我们把握对问题的认识层次,说白了,就是帮助我们有目的的去学习心得知识,带着问题去学习,充满对解决问题的动力去实验,我觉得这种方式是有益并且良性的. 之前,我遇到过很多这方面的问题,可能出于对问题分析不够,在寻找解决的问题的方法或者模型的时

CS231N-线性回归+svm多分类+softmax多分类

CS231N-线性回归+svm多分类+softmax多分类 计算机视觉 这一部分比较基础,没有太多视觉相关的.. 1.线性回归 假定在著名的 CIFAR10数据集上,包含10类数据.每类数据有10000条? 目标是输入一个图片,通过模型给出一个label.线性回归的思想就是 得到到F(x)作为某个类别的分数.那么针对每个可能的label都经过一个线性函数输出一个分值,那么我们选最大的其实就是最有可能的分数. 为什么这么做是合理的? 角度1: 每个种类一个 template,每个线性函数的W的训练

机器学习 - 3 - 线性分类

机器学习 - 3 - 线性分类 符号约定 贝叶斯分类器 基于最小错误率的决策 符号约定: 样本 $ \bold{x} \in R^d$ 状态(类) \(w = {w_1,w_2,\dots}\) 先验概率 \(P(w_1),P(w_2)\) 样本分布密度 \(p(x)\) 类条件概率密度 \(p(\bold{x}|w_1),p(\bold{x}|w_2)\) 后验概率 \(P(w_1|\bold{x}),P(w_2|\bold{x})\) 错误概率 \[P(e|\bold{x})\lbrace_

如何用机器学习对文本分类

需求 使用监督学习对历史数据训练生成模型,用于预测文本的类别. 样本清洗 主要将重复的数据删除掉,将错误无效的数据纠正或删除,并检查数据的一致性等.比如我认为长度小于少于13的数据是无效的遂将之删掉. def writeFile(text): file_object = open('result.txt','w') file_object.write(text) file_object.close() def clear(): text = "" file_obj = open(&qu