分类器_分类器matlab - CSDN
精华内容
参与话题
  • 模式识别之分类器

    万次阅读 2017-12-14 20:30:45
    1、SVM分类器 答:SVM算法就是找一个超平面,并且它到离他最近的训练样本的距离要最大。即最优分割超平面最大化训练样本边界。如下图所示,就是将两种不同类别的样本特征分隔开,且分割面要在最优分隔位置: 注意...

    常见分类器介绍

    1、SVM分类器(监督学习分类器)

    答:训练样本必须先标识不同类别,然后进行训练。SVM算法就是找一个超平面,对于已经被标记的训练样本,SVM训练得到一个超平面,使得两个类别训练集中距离超平面最近的样本之间的垂直距离要最大(也就是如下图所示的两个虚线距离最大)。如下图所示,就是将两种不同类别的样本特征分隔开,且分割面要在最优分隔位置。


    例如,有两个样本点,第一个点为正样本,它的特征向量是(0,-1);第二个点为负样本,它的特征向量是(2,3),从这两个样本点组成的训练集构建一个线性SVM分类器:两个样本之间的中点向量是(1,1),样本点之间的连线斜率为2,由于分割线与样本连线垂直且经过中点,那么样本SVM分割面方程为:x+2y=3,如图:


    2、KNN分类器(监督学习分类器)

    答:(1)定义:KNN即K最近邻,是最简单的机器学习算法之一。已知训练样本必须先标识,然后进行训练得到未知样本分类。对于未知样本,按照某种计算距离找出它在训练集中的k个最近邻(监督学习:k个最邻近样本的分类已知),如果k个近邻中多数样本属于哪个类别,就将它判决为那一个类别。

    由于采用k投票机制,所以能够减小噪声的影响。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。

    (2)算法流程:

    ①准备数据,对数据进行预处理;

    ②选用合适的数据结构存储训练数据和测试元组;

    ③设定参数,如k;

    ④维护一个大小为k的的按距离由大到小的优先级队列,用于存储最近邻训练元组。随机从训练元组中选取k个元组作为初始的最近邻元组,分别计算测试元组到这k个元组的距离,将训练元组标号和距离存入优先级队列;

    ⑤遍历训练元组集,计算当前训练元组与测试元组的距离,将所得距离L 与优先级队列中的最大距离Lmax;

    ⑥ 进行比较。若L>=Lmax,则舍弃该元组,遍历下一个元组。若L < Lmax,删除优先级队列中最大距离的元组,将当前训练元组存入优先级队列;

    ⑦遍历完毕,计算优先级队列中k 个元组的多数类,并将其作为测试元组的类别;

    ⑧测试元组集测试完毕后计算误差率,继续设定不同的k值重新进行训练,最后取误差率最小的k 值。

    具体如下:

    如果K=3,那么离绿色点最近的有2个红色三角形和1个蓝色的正方形,这3个点投票,于是绿色的这个待分类点属于红色的三角形 ;
    如果K=5,那么离绿色点最近的有2个红色三角形和3个蓝色的正方形,这5个点投票,于是绿色的这个待分类点属于蓝色的正方形 ;

    (3)特别适合于多分类问题(multi-modal,对象具有多个类别标签), kNN比SVM的表现要好。不足之处是计算量较大、样本不平衡时分类效果差(如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。)。

    针对这些缺陷,出现了改进方法:1)训练前对数据进行预处理,剔除关联性小的数据(针对计算量大的改进);2)采用权值的方法(和该样本距离小的邻居权值大)来改进(不平衡时分类效果差);

    3、K-means分类器(非监督学习分类器)

    答:(1)定义:设定参数k,然后将事先输入的n个数据对象划分为k个聚类,使得所获得的每个聚类满足内部对象相似度较高,而不同聚类中的对象相似度较小。注:这个是不需要事先标记的,所以是非监督学习。

    (2)算法描述:

    ①适当选择k个类的初始中心; 

    ②在第m次迭代中,对任意一个样本,求其到k个类中心的距离,将该样本归到距离最短的那个类; 

    ③利用均值方法更新该类的中心; 

    ④对于所有的C个聚类中心,如果利用(2)(3)的迭代法更新后,值保持不变,则迭代结束;否则继续迭代。

    (3)缺点:

    ①聚类中心的个数K 需要事先给定,但在实际中这个 K 值的选定是非常难以估计的,很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适;
    ②K-means需要人为地确定初始聚类中心,不同的初始聚类中心可能导致完全不同的聚类结果(可以使用K-means++算法来解决)。

    (4)改进型算法——K-Means++

    k-means++算法就是用来改进K-Means算法的K个类中心不好选择的缺陷。它选择初始中心的基本思想就是:初始的聚类中心之间的相互距离要尽可能的远。

    4、KNN和K-Means的区别

    答:如下表:


    5、有关分类算法的准确率,召回率,F1 值的描述

    答:对于二类分类问题常用的评价指标是:精准度(precision)与召回率(recall)。

    通常以关注的类为正类,其他类为负类,分类器在测试数据集上的预测或正确或不正确,4种情况出现的总数分别记作:
    TP——将正类预测为正类数
    FN——将正类预测为负类数
    FP——将负类预测为正类数
    TN——将负类预测为负类数

    由此:
    精准率定义为:P = TP / (TP + FP)
    召回率定义为:R = TP / (TP + FN)
    F1值定义为: F1 = 2 P*R / (P + R)

    精准率和召回率和F1取值都在0和1之间,精准率和召回率高,F1值也会高。

    关于精准率和召回率的理解举例:

    假设一共有10篇文章,里面4篇是你要找的。根据你某个算法,找到其中5篇,但是实际上在这5篇里面,只有3篇是真正你要找的。那么你的这个算法的precision是3/5=60%;这个算法的recall是3/4=75%,也就是一共有用的这4篇里面,该算法只找到了其中3篇。

    注:在信息检索领域,精确率和召回率又被称为查准率和查全率:

    查准率=检索出的相关信息量 / 检索出的信息总量;
    查全率=检索出的相关信息量 / 系统中的相关信息总量;

    6、核函数

    答:核函数是一个特征分类工具,为了使特征更容易分离或更好的结构化,把低维特征数据映射到高维数据的工具。比如,一组特征是以一维线段形式混合存在的,无法使用分割面分割,就可使用核函数将组特征转化为2维或更高维形式的组合,从而使得分割得以实现。举例,如图:

    本来是二维的数据,现在我们把它映射的高维。这里也需要说明下,低维到高维,维数没有一个数量上的标准,可能就是无限维到无限维。

    Mercer 定理:任何半正定的函数都可以作为核函数;

    几种常用的核:

    1) 线性核
    线性内核是最简单的内核函数。 它由内积<x,y>加上可选的常数c给出。 使用线性内核的内核算法通常等于它们的非内核对应物,即具有线性内核的KPCA与标准PCA相同:

    2)多项式核函数

    多项式核是非固定内核。 多项式内核非常适合于所有训练数据都归一化的问题。表达式:k(x,y)=(αx ^ T y + c)^ d;

    可调参数是斜率α,常数项c和多项式度d。

    3)高斯核

    4)指数的内核

    5)拉普拉斯算子核


    7、判别式模型与生成式模型的区别

    答:生成式模型(Generative Model)与判别式模型(Discrimitive Model)是分类器常遇到的概念,它们的区别在于:对于输入x和类别标签y,生成式模型估计它们的联合概率分布P(x,y),判别式模型估计条件概率分布P(y|x)。生成式模型可以根据贝叶斯公式得到判别式模型,但反过来不行。

    生成式模型:

    判别式分析

    朴素贝叶斯

    K近邻(KNN)

    混合高斯模型

    隐马尔科夫模型(HMM)

    贝叶斯网络

    Sigmoid Belief Networks

    马尔科夫随机场(Markov Random Fields)

    深度信念网络(DBN)

    判别式模型:

    线性回归(Linear Regression)

    逻辑回归(Logistic Regression)

    神经网络(NN)

    支持向量机(SVM)

    高斯过程(Gaussian Process)

    条件随机场(CRF)

    CART(Classification and Regression Tree)


    8、模式识别分类中,先验概率未知时的处理方法

    答:有两种处理方式,如下(1)(2)所示:

    (1)使用N-P决策:

    在贝叶斯决策中,对于先验概率p(y),分为已知和未知两种情况:

    1)p(y)已知,直接使用贝叶斯公式求后验概率即可; 

    2)p(y)未知,可以使用聂曼-皮尔逊决策(N-P决策)来计算决策面。 

    (2)使用最大最小损失规则:

    最大最小损失规则主要作用就是解决使用最小损失规则时先验概率未知或难以计算的问题。



    9、在分类问题遇到正负样本数据量不等的情况的处理方法

    答:机器学习分类问题中的不均衡问题是指正负样本相差10倍以上,解决方法一般有:重采样、欠采样、调整权值。

    比如正样本为10w条数据,负样本只有1w条数据,可以采取以方法处理:

    1)将负样本重复10次,生成10w样本量,打乱顺序参与分类(可视为重采样变形形式);

    2)从10w正样本中随机抽取1w参与分类(欠采样);

    3)将负样本每个权重设置为10,正样本权重为1,参与训练过程(调整权值)。



    10、机器学习的降维方法

    答:机器学习中常见的特征降维方法包括:Lasso,PCA,小波分析,LDA,奇异值分解SVD,拉普拉斯特征映射,SparseAutoEncoder,局部线性嵌入LLE,等距映射Isomap。

    LASSO:通过参数缩减达到降维的目的;

    主成分分析PCA(Principal Component Analysis):又称为霍特林变换(K-L变换),是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维;

    小波分析:小波分析有一些变换的操作降低其他干扰可以看做是降维;

    线性判别式分析(Linear Discriminant Analysis):简称为LDA,也称为Fisher线性判别(Fisher Linear Discriminant,FLD),是模式识别的经典算法,在1996年由Belhumeur引入模式识别和人工智能领域;

    拉普拉斯映射:拉普拉斯特征映射将处于流形上的数据,在尽量保留原数据间相似度的情况下,映射到低维下表示;

    深度学习SparseAutoEncoder稀疏自编码就是用少于输入层神经元数量的隐含层神经元去学习表征输入层的特征,相当于把输入层的特征压缩了,所以是特征降维;

    矩阵奇异值分解SVD:在PCA算法中,用到了SVD,类似PCA,可以看成一类;

    LLE局部线性嵌入(Locally linear embedding,LLE):是一种非线性降维算法,它能够使降维后的数据较好地保持原有流形结构。LLE可以说是流形学习方法最经典的工作之一。很多后续的流形学习、降维方法都与LLE有密切联系;

    Isomap等距映射:Isomap是一种非迭代的全局优化算法,通过一种原本试用于欧式空间的算法MDS,达到降维的目的。




    11、常见的机器学习算法

    答:机器学习算法通常可以被分为三大类 ——监督式学习,非监督式学习和强化学习(又叫“半监督学习”)

    监督式学习主要用于一部分数据集(训练数据)有某些可以获取的熟悉标签,但剩余的样本缺失并且需要预测的场景。

    非监督式学习主要用于从未标注数据集中挖掘相互之间的隐含关系。

    强化学习介于两者之间 —— 每一步预测或者行为都或多或少有一些反馈信息,但是却没有准确的标签或者错误提示。

    监督学习分为两大类:回归分析和分类

    回归分析(Regression Analysis):如果拿二维平面来说,就是对已经存在的点(训练数据)进行分析,拟合出适当的函数模型y=f(x),这里y就是数据的标签,而对于一个新的自变量x,通过这个函数模型得到标签y;

    分类(Classification):训练数据是特征向量与其对应的标签,同样要通过分析特征向量,对于一个新的向量得到其标签。
    回归分析与分类区别其实就是数据的区别就是回归是针对连续数据,分类是针对离散数据。

    非监督式学习也可分为两大类:聚类问题和关联问题
    聚类问题:
    聚类学习问题指的是我们想在数据中发现内在的分组,比如以购买行为对顾客进行分组。常见的聚类算法有:基于类心的聚类算法、基于连接的聚类算法、基于密度的聚类算法、概率型算法、降维算法、神经网络/深度学习;
    关联问题:关联问题学习问题指的是我们想发现数据的各部分之间的联系和规则,例如购买X物品的顾客也喜欢购买Y物品。

    常用的机器学习算法:决策树,随机森林算法,逻辑回归,SVM分类器,朴素贝叶斯分类器,K最近邻算法(KNN),K-Means算法,Adaboost 算法,神经网络,隐马尔可夫、聚类算法;

    其中,

    监督学习算法:决策树,随机森林算法,逻辑回归,最小二乘法,SVM分类器,朴素贝叶斯分类器,KNN,Adaboost 算法,神经网络,马尔可夫

    无监督学习算法:K-Means算法、主成分分析(PCA)、奇异值分解(SVD)、聚类算法、独立成分分析(ICA)。




    12、常见的类概率求解问题

    答:举例:
    解析:概率问题基本上都是贝叶斯和全概率互相结合求解,他们之间往往可以通过条件概率建立联系。
    本题中,要判断 xi 属于w1,还是w2,就是判断 p(w1 | xi) 和 p(w2 | xi)的大小关系,哪个概率大就属于对应的类别。即在xi已经发生的情况下,xi 属于哪个类别(w1 ,w2)的可能性更大:
    p(w1 | xi) = p(xiw1) / p(xi) = p(xi | w1) * p(w1) / p(xi) = 0.6*(2 - xi) / p(xi) // 因为xi都在 (1,2)范围
    p(w2 | xi) = p(xiw2) / p(xi) = p(xi | w2) * p(w2) / p(xi) = 0.4*(xi - 1) / p(xi) // 因为xi都在 (1,2)范围
    上面两等式相减,得:
    delta = p(w1 | xi) - p(w2 | xi) = (1.6 - xi) / p(xi);
    所以,在上诉样本中,大于1.6的,属于w2,小于1.6的,属于w1。

    补充一下贝叶斯公式:


    13、机器学习中的过拟合

    答:机器学习训练中过拟合发生的原因有两点:
    (1)训练集偏少,造成训练特征不具有代表性;
    (2)网络过于复杂,造成训练获取的特征过于苛刻;

    解决方法对应也是两个方向:
    (1)增加训练集;
    (2)简单化训练网络,包括:
    ①正则化,一般有L1正则与L2正则等;
    ②early stopping,即在发生过拟合的临界点前提前停止;
    ③减少神经网络的隐含层节点数,减小模型复杂度。


    14、PCA——主成分分析法

    答:PCA的目的是降维,就是“降噪”和“去冗余”
    “降噪”的目的就是使保留下来的维度间的相关性尽可能小,而“去冗余”的目的就是使保留下来的维度含有的“能量”即方差尽可能大。
    有什么数据结构能同时表现不同维度间的相关性以及各个维度上的方差呢?
    自然是协方差矩阵。协方差矩阵的主对角线上的元素是各个维度上的方差(即能量),其他元素是两两维度间的协方差(即相关性)。
    (1)先来看“降噪”,让保留下的不同维度间的相关性尽可能小,也就是说让协方差矩阵中非对角线元素都基本为零。达到这个目的的方式就是矩阵对角化。
    (2)对于“去冗余”,对角化后得到的矩阵,其对角线上是协方差矩阵的特征值,它表示各个维度本身应该拥有的能量。通过对角化后,剩余维度间的相关性已经减到最弱,已经不会再受“噪声”的影响了,故此时拥有的能量应该比先前大了。对角化后的协方差矩阵,对角线上较小的新方差对应的就是那些该去掉的维度。所以我们只取那些含有较大能量(特征值)的维度,其余的就舍掉即可。(3)PCA的本质:其实就是对角化协方差矩阵,目的是让维度之间的相关性最小(降噪),保留下来的维度的能量最大(去冗余)。
    (3)主要思想:寻找表示数据分布的最优子空间(降维,可以去相关)。

    其实就是取协方差矩阵前s个最大特征值对应的特征向量构成映射矩阵,对数据进行降维。


    具体可以参考:http://lanbing510.info/public/file/posts/pca.doc


    15、时间序列模型

    答:(1)AR模型是一种线性预测,即已知N个数据,可由模型推出第N点前面或后面的数据(设推出P点),所以其本质类似于插值;
    (2)MA模型(moving average model)滑动平均模型,模型参量法谱分析方法之一;
    (3)ARMA模型(auto regressive moving average model)自回归滑动平均模型,模型参量法高分辨率谱分析方法之一。这种方法是研究平稳随机过程有理谱的典型方法。它比AR模型法与MA模型法有较精确的谱估计及较优良的谱分辨率性能,但其参数估算比较繁琐;
    (4)GARCH模型称为广义ARCH模型,是ARCH模型的拓展, GARCH对误差的方差进行了进一步的建模,特别适用于波动性的分析和 预测。

    16、三种常见的概率函数

    答:概率质量函数 (probability mass function,PMF)是离散随机变量在各特定取值上的概率;
    概率密度函数(probability density function,PDF )是对连续随机变量定义的,本身不是概率,只有对连续随机变量的取值进行积分后才是概率;
    累积分布函数(cumulative distribution function,CDF) 能完整描述一个实数随机变量X的概率分布,是概率密度函数的积分。对於所有实数x ,与pdf相对。
    展开全文
  • 几种分类器小结

    千次阅读 2019-03-07 17:29:58
    朴素贝叶斯分类器是假设数据样本特征完全独立,以贝叶斯定理为基础的简单概率分类器。 AdaBoost算法的自适应在于前一个分类器产生的错误分类样本会被用来训练下一个分类器,从而提升分类准确率,但是AdaBoost算法...
    1. 朴素贝叶斯分类器是假设数据样本特征完全独立,以贝叶斯定理为基础的简单概率分类器。
    2. AdaBoost算法的自适应在于前一个分类器产生的错误分类样本会被用来训练下一个分类器,从而提升分类准确率,但是AdaBoost算法对于噪声样本和异常样本比较敏感。
    3. 支持向量机是用过构建一个或者多个高维的超平面来将样本数据进行划分,超平面即为样本之间的分类边界。
    4. 基于k近邻的K个样本作为分析从而简化计算提升效率,K近邻算法的分类器是一种基于距离计算的分类器。
    展开全文
  • 分类器概念篇

    2019-01-24 12:29:25
    分类器是数据挖掘中对样本进行分类的方法的统称,包含决策树,逻辑回归,朴素贝叶斯,神经网络等 分类器的构造和实施大体会经过以下几个步骤: 选定样本(包含正样本和负样本),将所有样本分成训练样本和测试...

    分类器是数据挖掘中对样本进行分类的方法的统称,包含决策树,逻辑回归,朴素贝叶斯,神经网络等

    分类器的构造和实施大体会经过以下几个步骤:

    • 选定样本(包含正样本和负样本),将所有样本分成训练样本和测试样本两部分。

    • 在训练样本上执行分类器算法,生成分类模型。

    • 在测试样本上执行分类模型,生成预测结果。

    • 根据预测结果,计算必要的评估指标,评估分类模型的性能。

    几种基本的分类器:

    决策树分类器;选择树分类器;证据分类器---选择树分类器与决策树分类器比较相近,但是前者在选择节点处可以考虑多种情况,将多种因素放入一个选择节点中,而决策树分类器一个节点一次最多只能选取一个属性作为考虑对象。

    证据分类器就是通过检查在一个给定属性上某个特定的结果发生的可能性来对数据进行分类。比如一个正在打着一把伞的人,有70%是女性,30%是男性。

    展开全文
  • 分类器

    万次阅读 2018-09-22 13:06:25
    分类器的作用:常规任务是利用给定的类别、已知的训练数据来学习分类规则和分类器,然后对未知数据进行分类(或预测)。逻辑回归(logistics)、SVM等常用于解决二分类问题,对于多分类问题(multi-class ...

    分类器的作用:常规任务是利用给定的类别、已知的训练数据来学习分类规则和分类器,然后对未知数据进行分类(或预测)。逻辑回归(logistics)、SVM等常用于解决二分类问题,对于多分类问题(multi-class classification),比如识别手写数字,它需要10个分类,同样也可以用逻辑回归或SVM,只是需要多个二分类来组成多分类,但这样容易出错且效率不高,常用的多分类方法有softmax。 

    分类算法:划分为了两类

    1.基于概率密度的方法和基于判别函数的方法。

    • 基于概率密度的分类算法通常借助于贝叶斯理论体系,采用潜在的类条件概率密度函数的知识进行分类; 在基于概率密度的分类算法中,有著名的贝叶斯估计法、最大似然估计,这些算法属于有参估计,需要预先假设类别的分布模型,然后使用训练数据来调整概率密度中的各个参数。另外,如 Parzen窗、Kn邻近等方法属于无参估计,此类方法可从训练样本中直接估计出概率密度。 基于判别函数的分类方法使用训练数据估计分类边界完成分类,无需计算概率密度函数。
    • 基于判别函数的方法则假设分类规则是由某种形式的判别函数表示,而训练样本可用来表示计算函数中的参数,并利用该判别函数直接对测试数据进行分类。此类分类器中,有著名的感知器方法、最小平方误差法、SVM法、神经网络方法以及径向基(RBF)方法等。

    2.根据监督方式划分分类算法,分类学习问题可分为三大类:有监督分类、半监督分类和无监督分类。

    • 有监督分类是指用来训练分类器的所有样本都经过了人工或其他方式的标注,有很多著名的分类器算法都属于有监督的学习方式,如AdaBoost[51],SVM,神经网络算法以及感知器算法。
    • 无监督分类是指所有的样本均没有经过标注,分类算法需利用样本自身信息完成分类学习任务,这种方法通常被称为聚类,常用的聚类算法包括期望最大化(EM)算法和模糊C均值聚类算法等。
    • 半监督分类指仅有一部分训练样本具有类标号,分类算法需要同时利用有标号样本和无标号样本学习分类,使用两种样本训练的结果比仅使用有标注的样本训练的效果更好。这类算法通常由有监督学习算法改进而成,如SemiBoost、流形正则化、半监督SVM等。

    Softmax分类

    Softmax 函数的定义如下所示:

    其中,Vi 是分类器前级输出单元的输出。i 表示类别索引,总的类别个数为 C。Si 表示的是当前元素的指数与所有元素指数和的比值。Softmax 将多分类的输出数值转化为相对概率,更容易理解和比较。

    使用softmax激励函数作为输出层的多层感知机,卷积层和池化层每个的输出代表高级特征,目的是用这些特征进行分类。加入全连接层也是学习特征之间非线性组合的有效办法。卷积层和池化层提取出来的特征很好,但是如果考虑这些特征之间的组合,就更好了。

    Softmax函数把任意实值的向量转变成元素取之0到1且和为1的向量。将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类。


     

    logistic分类器

    以Bernoulli(伯努利) 分布为模型建模的,顾名思义,逻辑分类,是一种二分类法,能将数据分成0和1两类。logistic分类的流程比较简单,主要有线性求和,sigmoid函数激活,计算误差,修正参数这4个步骤。前两部用于判断,后两步用于修正。

    线性求和以及sigmoid函数

    假设有一个n维的输入列向量 x,也有一个n维的参数列向量h, 还有一个偏置量b, 那么就可以线性求和得到z

    此时因为z的值域是[−∞,+∞] ,是无法根据z来判断x 到底是属于0还是1的。因此我们需要一个函数,来将z的值映射到[0,1]之间, 这就是激活函数。激活函数有很多种,这里的激活函数是sigmoid函数。

    sigmoid函数形状为

    可以看到它是介于0~1之间。那么在判断的时候,首先对之前得到的z代入sigmoid函数

    当 a 大于0.5的时候,我们判定x应属于1类,如果小于0.5,则属于0类。这样,就完成了判断的工作 。

    详细过程:https://www.cnblogs.com/yinheyi/p/6131262.html

    误差计算以及参数修正

    上面完成的判断过程中用到了参数向量h和偏置量b。 可以说,h和b的值直接关系到logistic判断的准确性。那么这两组参数是如何获得的呢?这就涉及到了参数的修正。在最开始的时候,h中的值是随机的,而b的值是0. 我们通过不断的训练来使得h和b能够尽可能的达到一个较优的值。

    那么如何训练呢?假设我们期望输入x的判定是y,而实际得到的判定值是a,那么我们定义一个损失函数C(a,y),通过修正h和b的值来使得C最小化,这是一个优化问题。在凸优化问题中,可以通过

    来直接算得h和b的最优解。然而在某些情况下,例如数据规模很大,或者非凸优化问题中,则不能这么做,而是用迭代的方法来得到局部最优解。

    其中 η 表示学习率。在这里,损失函数定为平方损失函数,即

    那么可以得到

    这样,就能够得到每次迭代的参数更新公式为

    将logistic扩展到多分类

    从之前可以看出,普通的logistic只能进行二分类,即只能够分为0或者1。那么如果这些样本属于多个类该怎么办呢?人们想了很多办法,例如一对多法,依次把某个类别的样本归为一类,其他剩余的样本归为另一类,这样k个类需要构建k个分类器。还有一对一法,在任意两类样本之间设计一个分类器,k个类需要k(k-1)/2个分类器。

    在这里,我们将输出由一个值更改为一个向量。例如有3个类,那么输出就是一个长度为3 的列向量,对应项的值为1,其他为0。即

    分别表示第0,1,2个类。 也可以看成是原来若干个logistic分类器组合在一起。对应的某个分类器只对该类输出1,其他情况都输出0.从这一点上来讲,这个做法有点类似于一对多法。此时,由于输出从一个数成为一个向量,之前的公式都要加以修改。首先,原来的y,a,z,b变成了列向量, 向量hh变成了矩阵W。这样,判断部分的公式变为

    此时的 σ 函数表示对向量中的每一个元素单独做运算。即

    得到的a向量中,其最大值所在的位置索引即为判断出的分类。 参数修正部分的公式也是类似的,

    注意有些向量之间是进行点乘的。 

    Boosting

    顾名思义,是提升的意思。弱分类器转化为强分类器---原理即三个臭皮匠,赛过诸葛亮一样。把很多分类准确率很低的分类器通过更新对数据的权重,集成起来形成一个分类效果好的分类器。

    它是一种框架算法,先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多的关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。

    一般来说,找到弱学习算法要相对容易一些,然后通过反复学习得到一系列弱分类器,组合这些弱分类器得到一个强分类器。Boosting算法要涉及到两个部分,加法模型和前向分步算法。加法模型就是说强分类器由一系列弱分类器线性相加而成。一般组合形式如下:

    其中,h(x;am)是一个个的弱分类器,am是弱分类器学习到的最优参数,βm是弱学习在强分类器中所占比重,P是所有am和βm的组合,这些弱分类器线性相加组成强分类器。

    前向分步就是说在训练过程中,下一轮迭代产生的分类器是在上一轮的基础上训练得来的。也就是可以写成这样的形式:

    由于采用的损失函数不同,Boosting算法有很多不同的类型,其中比较经典的有AdaBoost,其损失函数为指数损失的。

    Adaboost

    Boosting有一个重大缺陷,即该算法要求事先知道弱分类算法分类正确率的下限,这在实际问题中很难做到。

    Adaptive Boosting,自适应增强。它的自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器。同时,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率或达到预先指定的最大迭代次数。

    Adaboost 迭代算法分为3步:

    1. 初始化训练数据的权值分布。如果有N个样本,则每个训练样本最开始时都被赋予相同的权值:1/N;
    2. 训练弱分类器。具体训练过程中,如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它的权值就被降低;相反,如果某个样本点没有被准确地分类,那么它的权值就得到提高。然后权值更新过的样本集被用于训练下一个分类器,整个训练过程如此迭代地进行下去;
    3. 将各个训练得到的弱分类器组合成强分类器。各个弱分类器的训练过程结束后,加大分类误差率小的弱分类器的权重,使其在最终的分类函数中起着较大的决定作用,而降低分类误差率大的弱分类器的权重,使其在最终的分类函数中起着较小的决定作用。换言之,误差率低的弱分类器在最终分类器中占的权重较大,否则较小。

    算法流程

    给定一个训练数据集T={(x1,y1), (x2,y2)…(xN,yN)},其中实例x \in \mathcal{X},而实例空间\mathcal{X} \subset \mathbb{R}^n,yi属于标记集合{-1,+1},Adaboost的目的就是从训练数据中学习一系列弱分类器或基本分类器,然后将这些弱分类器组合成一个强分类器。

    算法流程如下:

    1.初始化训练数据的权值分布。每一个训练样本最开始时都被赋予相同的权值:1/N。

    2.进行多轮迭代,用m = 1,2, ..., M表示迭代的第多少轮

    a.使用具有权值分布Dm的训练数据集学习,得到基本分类器(选取让误差率最低的阈值来设计基本分类器):

      b.计算Gm(x)在训练数据集上的分类误差率

       由上述式子可知,Gm(x)在训练数据集上的误差率em就是被Gm(x)误分类样本的权值之和。

      c.计算Gm(x)的系数,am表示Gm(x)在最终分类器中的重要程度(目的:得到基本分类器在最终分类器中所占的权重):        

       由上述式子可知,em≤1/2时,am≥0,am随em减小而增大,分类误差率越小的基本分类器在最终分类器中的作用越大。

      d.更新训练数据集的权值分布(目的:得到样本的新的权值分布),用于下一轮迭代。

                      

      使得被基本分类器Gm(x)误分类样本的权值增大,而被正确分类样本的权值减小,重点关注或聚焦于那些较难分的样本上。

        其中,Zm是规范化因子,使得Dm+1成为一个概率分布:

                                                              

    3.组合各个弱分类器

    从而得到最终分类器,如下: 

    实例

    有如下的训练样本,我们需要构建强分类器对其进行分类。x是特征,y是标签。

    令权值分布D1=(w1,1,w1,2,…,w1,10)

    并假设一开始的权值分布是均匀分布:w1,i=0.1,i=1,2,…,10w1,i=0.1,i=1,2,…,10

    现在开始训练第一个弱分类器。发现阈值取2.5时分类误差率最低,得到弱分类器为:

    当然,也可用别的弱分类器,只要误差率最低即可。这里为了方便,用了分段函数。得到了分类误差率e1=0.3。

    第二步计算G1(x)在强分类器中的系数

    第三步更新样本的权值分布,用于下一轮迭代训练。由公式:

    得到新的权值分布,从各0.1变成了:

    可以看出,被分类正确的样本权值减小了,被错误分类的样本权值提高了。

    第四步得到第一轮迭代的强分类器:

    以此类推,经过第二轮……第N轮,迭代多次直至得到最终的强分类器。迭代范围可以自己定义,比如限定收敛阈值,分类误差率小于某一个值就停止迭代,比如限定迭代次数,迭代1000次停止。这里数据简单,在第3轮迭代时,得到强分类器:

    的分类误差率为0,结束迭代。

    F(x)=sign(F3(x))就是最终的强分类器。

    SVM

    借鉴博客:https://blog.csdn.net/mm_bit/article/details/46988925

    • 线性核SVM:一般应用于多分类,分类的结果(如3分类)最后会给出(约等于)1、2、3的值代表第1、2、3类
    • 非线性核SVM:一般应用于二分类问题上

    support vector machines,支持向量机,是一个二分类的分类模型(经改造后也可用于多分类,但比较复杂)。分类的思想是,给定给一个包含正例和反例的样本集合,其目的是寻找一个超平面来对样本根据正例和反例进行分割,寻找一个超平面,使得离超平面比较近的点能有更大的间距。也就是我们不考虑所有的点都必须远离超平面,我们关心求得的超平面能够让所有点中离它最近的点具有最大间距。

    优点:

    在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合等其他机器学习问题中。

    如下面3个图,分类图1中的两类球,很简单,用一根棍子即可;但图2中一条直线貌似不能完成分类的任务,可以想象就像武侠片的大侠一样,拍下桌子,球飞到空中。然后,大侠抓起一张纸,插到了两种球的中间,如图2右边的部分;从直观的角度看这些球像是被一条曲线分开了,如图3。其中这些球叫做【data】,棍子叫做【classifier】, 最大间隙trick叫做【optimization】, 拍桌子叫做【kernelling】,那张纸叫做【hyperplane】。

     

    如果一个线性函数能够将样本完全正确的分开,就称这些数据是线性可分的,否则称为非线性可分的。线性函数在一维空间里就是一个点,在二维空间里就是一条直线,三维空间里就是一个平面,如果不关注空间的维数,这种线性函数叫做超平面(Hyper Plane)。在样本空间中,划分超平面可通过如下线性方程来描述:

                                                                  

    假设它已经完成了对样本的分隔,且两种样本的标签分别是{+1,-1},那么对于一个分类器来说,g(x)>0和个g(x)<0就可以分别代表两个不同的类别,+1和-1。

    但光是分开是不够的,SVM的核心思想是尽最大努力使分开的两个类别有最大间隔,这样才使得分隔具有更高的可信度。而且对于未知的新样本才有很好的分类预测能力(在机器学习中叫泛化能力),SVM让间隔最大的办法是:让离分隔面最近的数据点具有最大的距离。为了描述离分隔超平面最近的数据点,需要找到两个和这个超平面平行和距离相等的超平面:

                                                        H1: y = wTx + b=+1 和 H2: y = wTx + b=-1

    在这两个超平面上的样本点也就是理论上离分隔超平面最近的点,是它们的存在决定了H1和H2的位置,支撑起了分界线,它们就是所谓的支持向量,这就是支持向量机的由来。

    由两个超平面就可以定义上面提到的间隔(margin)了,二维情况下 ax+by=c1和ax+by=c两条平行线的距离公式为:

    可以推出H1和H2两个超平面的间隔为2/||w||,即现在的目的是要最大化这个间隔。所以support vector machine又叫Maximum margin hyper plane classifier(最大间隔超平面分类器),等价于最小化||w||,为了之后的求导和计算方便,进一步等价于最小化  

    假设超平面能将样本正确分类,则可令:

     

    两个式子综合一下有:

     

    这就是目标函数的约束条件。现在这个问题就变成了一个最优化问题:

    而且这是一个凸二次规划问题,一般的解决方法有两种1是用现成的优化工具包直接求解,2是使用Lagrange Duality找到一种更有效的方法求解。

     实例

    svm的输入是一组向量以及每个向量对应的分类:
    label,一般是-1或1,表示种类;
    index:value, 向量值,如 1:0.78, 2:1, 3:-0.52, 4:-0.35, 5:0.56, 一般用一个一维数组表示
    数据准备成上述格式,随机分成2份,一份用来训练模型,一份用来测试模型的准确性,以便根据测试结果调整训练参数。在线性不可分的情况下,使用RBF核效果比较好,现在很多软件可以自动完成这个对比、选择过程。

    比如用svm进行垃圾邮件识别,大概步骤如下:
    对邮件进行打标,垃圾邮件标为1,非垃圾邮件标为-1。对邮件内容进行分词,对每个词计算特征权重,然后通过归一化转化成-1到1之间的值,选择一个svm实现lib或软件,将准备好的这些向量和label带入训练,调整参数得到效果满足要求的模型。

     

    展开全文
  • 机器学习常用的分类器比较

    万次阅读 多人点赞 2016-11-08 22:08:51
    传统的机器学习的监督学习分类分类和回归,分类是争对离散的数据,而回归是争对连续的数据,在数据预处理好的基础上要对数据进行预测,通常采用CV交叉验证来进行模型评价和选择。这篇文章通过连续的数据结合sklearn...
  • 如何选择分类器

    千次阅读 2016-03-13 15:11:57
    如何选择分类器 为了解决你的分类问题,你要选择哪种机器学习算法呢?当然,如果你非常重视准确率,你最好的办法就是测试一组不同的算法(同时确保在相同的模型中也使用不同的参数),然后用交叉验证选择出最好的一...
  • 本文主要介绍给予规则的分类器的相关内容
  • 分类器模型评价指标

    万次阅读 2016-08-25 11:31:50
    需要提前说明的是,我们这里只讨论二值分类器。对于分类器,或者说分类算法,评价指标主要有accuracy,precision,recall,F-score,以及我们今天要讨论的ROC和AUC。下图是一个ROC曲线的示例。 AUC(Area Under ...
  • 数据挖掘十大经典算法(7) AdaBoost

    万次阅读 热门讨论 2009-05-01 14:35:00
    Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之...
  • Adaboost分类器 haar特征 整理

    万次阅读 2013-03-06 09:27:21
    Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。 其算法本身是通过改变数据分布来实现的,它根据每次训练集...
  • 在测试阶段,新样本被提交给所有二分类器,然后我们将得到个分类结果,最终结果可通过投票产生:即把被预测得最多的类别作为最终分类结果。 2、 将一个类的样例作为正例,其他所有类的样例最为反...
  • Haar分类器使用AdaBoost算法,但是把它组织为筛选式的级联分类器,每个节点是多个树构成的分类器,且每个节点的正确识别率很高。在任一级计算中,一旦获得“不在类别中”的结论,则计算终止。只有通过分类器中所有...
  • 关于AdaBoost算法的一个结论是:当弱分类器算法使用简单的分类方法时,boosting的效果明显地统一地比bagging要好.当弱分类器算法使用C4.5时,boosting比bagging较好,但是没有前者明显。后来又有学者提出了解决多标签...
  • 机器学习中的多分类任务入门

    万次阅读 2017-09-01 18:20:19
    摘要: 这篇文章主要是关于机器学习中多分类任务的一些基本知识。 1.我先抛出一个问题,在LR(逻辑回归)中,如何进行多分类? 一般下,我们所认识的lr模型是...2.训练多个二分类器的思想 既然天然的lr是用来做二分类
  • 【模式识别】Boosting

    万次阅读 多人点赞 2019-10-03 15:38:32
    比较简单的如在Boosting之前出现Bagging的方法,首先从从整体样本集合中抽样采取不同的训练集训练弱分类器,然后使用多个弱分类器进行voting,最终的结果是分类器投票的优胜结果。这种简单的voting策略通常难以有很...
  • 原文链接:...这些单个的分类器模型主要有决策树、人工神经网络、朴素贝叶斯分类器等等。 可以通过聚集多个分类器的预测
  • 最近邻分类器(KNN)

    万次阅读 2014-12-03 13:20:43
    介绍最近邻分类器
  • 从 SVM的那几张图可以看出来,SVM是一种典型的两类分类器,即它只回答属于正类还是负类的问题。而现实中要解决的问题,往往是多类的问题(少部分例外,例如垃圾邮件过滤,就只需要确定“是”还是“不是”垃圾邮件)...
  • 浅谈 Adaboost 算法

    万次阅读 多人点赞 2016-11-08 17:47:37
    菜鸟最近开始学习machine learning。发现adaboost 挺有趣,就把自己的一些思考写下来。 主要参考了... 一 Boosting 算法的起源 boost 算法系列的起源来自于PAC Learnability(PAC 可学习性)。
  • • 定义:只考虑二类的情形,所谓线性分类器即用一个超平面将正负样本分离开,表达式为 y=wx 。这里是强调的是平面。而非线性的分类界面没有这个限制,可以是曲面,多个超平面的组合等。【如果模型是参数的线性函数...
1 2 3 4 5 ... 20
收藏数 570,111
精华内容 228,044
关键字:

分类器