精华内容
下载资源
问答
  • 传统情感分类方法与深度学习的情感分类方法对比

    万次阅读 多人点赞 2018-11-10 16:57:16
    标注:本博客是参考论文《传统情感分类方法与机遇深度学习的情感分类方法对比分析》写的,作者段传明。 情感分类是自然语言处理的重要分支,传统情感分类主要有基于情感词典的和基于机器学习的,最新的方法是基于...

    标注:本博客是参考论文有《传统情感分类方法与机遇深度学习的情感分类方法对比分析》、《自然语言处理中的深度学习:方法及应用》

    情感分类是自然语言处理的重要分支,传统情感分类主要有基于情感词典的和基于机器学习的,最新的方法是基于深度学习的。

    1、基于情感词典的方法

    缺点:受限于情感词典的质量和覆盖度。
    定义:是对人脑的简单模拟,核心模式是基于词典和规则,即以情感词典作为判断评论情感极性的主要依据,根据以往经验对现有词汇做出评价的一种模型,eg1:通常把讨厌、糟糕作为消极词,把高兴。快乐作为积极词,通过句子中出现的情感词,预测该句子的情感极性。
    依赖于:情感词典的构建和判断规则质量,而两者都需要耗费很多人力,包括人工设计和先验知识。
    在这里插入图片描述

    2、基于机器学习

    核心:模型训练
    缺点:模型训练依赖于标注数据集的质量,高质量的数据集需要投入大量人工成本。需要高质量的特征构造和选取。
    常用特征有:N-gram特征、句法特征等。
    在这里插入图片描述

    3、基于深度学习模型


    1. 定义:

      深度学习是基于特征自学习和深度神经网络(DNN)的一系列机器学习算法的总称。目前深度学习的研究有了长足发展,在传统特征选择与提取框架上取得巨大突破,在自然语言处理、生物医学分析、遥感影像解译等诸多领域产生越来越重要影响,并在计算机视觉和语音识别领域取得革命性突破。

    2. NLP研究任务包括

      词性标注、机器翻译、命名实体识别、机器问答、情感分析、自动文摘、句法分析和共指消解等。

    3. 深度学习应用在NLP领域原因:
      文本间的关系难以度量,相关研究高度依赖人工构建特征。而深度学习方法的优势恰恰在于其请打的判别能力和特征自学习能力,非常适合高维数、无标签和大数据的特点。

    4. 不使用传统神经网络原因

      传统神经网络无法处理前后关联问题,而深度学习模型RNN解决了该问题。随着距离和先验知识的增加,RNN会出现梯度消失或梯度爆炸情况,因此无法解决长久依赖问题。而LSTM通过三个门结构控制细胞cell,解决上述问题。

    5. 深度学习优点:

      基于深度学习抽象特征,可避免人工提取特征的工作,且通过Word2Vec技术模拟词语之间联系,有局部特征抽象画以及记忆功能,在情感分类中具有极大优势。

    6. 现有深度学习方法主要分为两个步骤:

      • 将需要分类的评论语料表达为语义词向量(Word Embedding);
      • 通过不同语义合成方法用词向量得到所对应句子或文档的特征表达式,最后通过深度神经网络进行分类。

    在这里插入图片描述

    3.1 语义词向量表达

    在自然语言处理中,很重要的一个问题是如何将一个句子用向量表示。词向量通常是指通过语言模型学习到的词的分布式特征表示,也被称为词编码。可以非稀疏的表示大规模语料中复杂的上下文信息。

    BOW(Bag of Words)。

    传统文档表示方法是基于词袋模型。
    BOW核心思想:忽略文本中的次序和语法、句法,仅看成这些词汇的排列组合,且文本中的词汇没有任何关系。
    缺点:

    1. 极高维度:文本向量的维数与训练数据集中出现的所有单词数一样多,且若某一词汇在训练集中未出现过,则会忽视这个词,在测试集中无法成为该文本特征。
    2. 向量极度稀疏
    3. 认为词语之间无关系,很难表示一个句子或一篇短文的语义,
    4. 不同语境下,词袋法很难区分一个词的意义。

    Word2Vec

    该模型由Mikolov等人提出,核心思想是通过高维向量表示词语,相近词语放在相近位置,因此Word2Vec适合处理序列数据,因为序列局部间的数据存在很大关联。通过Word2Vec可训练语料库模型,获得词向量,且词向量的高维性解决了词语多方向发散问题,从而保证模型的稳定性。
    有两种模型:(1)CBOW:通过上下文预测当前词
    (2)Skip-gram:通过当前次预测上下文。

    3.2句子向量

    通过不同语义合成(Semantic Composition)方法用词向量得到所对应句子或文档的特征表达,语义词向量就是利用原始词向量合成更高层次的文本特征向量。

    3.3深度学习模型

    • 循环神经网络和长短记忆神经网络

      循环神经网络(Recurrent neural networks,RNN)是隐藏层和自身存在连接的一类神经网络。相较于前馈神经网络,RNN可将本次隐藏层的结果用于下次隐藏层的计算,因此可以用来处理时间序列问题,比如文本生成【28】、机器翻译【29】和语音识别【30】,RNN的优化算法为BPTT算法(backpropagation through time)【31】,由于梯度消失的原因,RNN的反馈误差往往只能向后传递5-10层,因此文献【32】在RNN的基础上提出来长短记忆神经网络(long-short term memory,LSTM).LSTM使用Celljiegou 记忆之前的输入,使得网络可以学习到合适的时机重置Cell结构。

    • 卷积神经网络(Convolutional neural networks,CNN)

      CNN由文献【40】提出并由文献【41】改进的深度神经网络。在一般前馈神经网络中,输入层和隐藏层之间采用全连接结构,而在CNN中每一个卷积层节点只与一个固定大小的区域有连接,连接的权重矩阵称为卷积核。池化(pooling)是CNN所采用的另一个关键技术,在固定大小的区域使用平均值或最大值代替原有的矩阵区域,既减少了特征数目又增加了网络的鲁棒性。
      目前CNN在NLP领域的应有有许多新的尝试。文献【6】将CNN用于语义角色标注,文献【42】使用字符作为语义特征,采用大规模文本语料训练CNN迷行用于本体分类、情感分析和文本分类。

    4 基于情感词典、机器学习、深度学习在情感分类中对比

    在这里插入图片描述

    5深度学习瓶颈

    目前深度学习的理论依据还处于起步阶段,大部分的研究成果都是经验性的,没有足够的理论来指导实验,研究者无法确定网络架构。超参数设置是否已是最优组合。除此之外,目前仍没有一种通用的神经网络或学习策略可以适用于大多数的应用任务,因此深度学习领域的研究者正在不断尝试新的网络架构和学习策略,以提升网络的泛化能力。
    目前深度学习用于NLP领域的主要步骤可以归结为如下3 步:

    • 将原始文本作为输入,自学习得到文本特征的分布表示。
    • 将分布式向量特征作为深度神经网络的输入。
    • 针对不同的应用需求,使用不同的深度学习模型,有监督的训练网络权重。
    展开全文
  • 分类器的比较方法

    千次阅读 2017-12-14 04:53:39
    目标:比较不同分类器的性能,以确定在给定的数据集上哪种分类器效果更好。一、估计准确度的置信区间通过将分类任务用二项式试验建模来推导置信区间。给定一个包含N个记录的检验集,令X是被模型正确预测的记录数,p...

    目标:

    比较不同分类器的性能,以确定在给定的数据集上哪种分类器效果更好。

    一、估计准确度的置信区间

    通过将分类任务用二项式试验建模来推导置信区间。给定一个包含N个记录的检验集,令X是被模型正确预测的记录数,p是模型的真正准确率。通过吧预测任务用二项式试验建模,X服从均值为Np、方差为Np(1-p)的二项分布。可以证明经验准确率acc=X/N也是均值为p,方差为p(1-p)/N的二项分布。当N充分大时,通常用正态分布近似。根据正态分布,可以推导出acc的置信区间:

    P(Zα/2accpp(1p)/NZ1α/2)=1αP(−Zα/2≤acc−pp(1−p)/N≤Z1−α/2)=1−α

    其中Zα/2Zα/2Z1α/2Z1−α/2 分别是在置信水平 (1α)(1−α) 下由标准正态分布得到的上界和下界。
    重新整理不等式,得到p的置信区间如下:

    2×N×acc+Z2α/2±Zα/2Z2α/2+4Nacc4Nacc22(N+Z2α/2)2×N×acc+Zα/22±Zα/2Zα/22+4Nacc−4Nacc22(N+Zα/22)

    二、比较两个模型的性能

    考虑一对模型M1M1M2M2 ,他们在两个对立的检验集D1D1D2D2 上进行评估,令 n1n1D1D1 中的记录数,n2n2D2D2 中的记录数。另外,假设M1M1D1D1 上的错误率为 e1e1M2M2D2D2 上的错误率为 e2e2 。目标是检验 e1e1e2e2 的观察差是否统计显著 (错误率的观察差 d=e1e20d=e1−e2≠0)。
    d的方差为:

    σ^d=e1(1e1)n1+e2(1e2)n2σ^d=e1(1−e1)n1+e2(1−e2)n2

    在置信水平(1-αα)%下,实际差dtdt 的置信区间为:

    dt=d±zα/2σ^ddt=d±zα/2σ^d

    三、比较两种分类方法的性能

    将数据集D划分为k个大小相等的部分,然后使用每种分类方法,在k-1份数据上构建模型,并在剩余的划分上进行检验,该步骤重复k次,每次使用不同的划分进行检验。
    观察差的总方差为:

    σ^2dcv=kj=1(djd¯¯¯)2k(k1)σ^dcv2=∑j=1k(dj−d¯)2k(k−1)

    用t分布计算得到置信区间为:
    dcvt=d^±t(1α),k1σ^dcvdtcv=d^±t(1−α),k−1σ^dcv

    【几个概念】

    1.二项式试验

    (1)试验由N个独立的试验组成,其中每个试验有两种可能的结果:成功或失败。
    (2)每个试验成功的概率p是常数。

    如果X是N次试验观察到的成功次数,则X取一个特定值v的概率由均值为Np、方差为Np(1-p)的二项分布给出。

    【参考文献】

    Pang-Ning Tan等,数据挖掘导论,中国工信出版集团

    展开全文
  • 文本分类方法总结

    万次阅读 2020-01-17 15:01:42
    1 机器学习的文本分类方法 1.1 特征工程 1.1.1 文本预处理 1.1.2 文本表示和特征提取 1.1.3 基于语义的文本表示 1.2 分类器 朴素贝叶斯分类(Naïve Bayes) 用朴素贝叶斯分类算法做中文文本分类 KNN SVM ...

    目录

    1 机器学习的文本分类方法

    1.1 特征工程

    1.1.1 文本预处理

    1.1.2 文本表示和特征提取

    1.1.3 基于语义的文本表示

    1.2 分类器

    朴素贝叶斯分类(Naïve Bayes)

    用朴素贝叶斯分类算法做中文文本分类

    KNN

    SVM

    最大熵

    2 深度学习的文本分类方法

    2.1 文本的分布式表示:词向量(word embedding)

    2.2 深度学习文本分类模型

    2.2.1 fastText

    2.2.2 TextCNN

    2.2.3 TextRNN

    2.2.4 TextRNN + Attention

    2.2.5 TextRCNN

    2.2.6 EntNet/DMN

    2.3 总结

    Reference


    1 机器学习的文本分类方法

    文本分类问题算是自然语言处理领域中一个非常经典的问题了,相关研究最早可以追溯到上世纪50年代,当时是通过专家规则(Pattern)进行分类,甚至在80年代初一度发展到利用知识工程建立专家系统,这样做的好处是短平快的解决top问题,但显然天花板非常低,不仅费时费力,覆盖的范围和准确率都非常有限。

    后来伴随着统计学习方法的发展,特别是90年代后互联网在线文本数量增长和机器学习学科的兴起,逐渐形成了一套解决大规模文本分类问题的经典玩法,这个阶段的主要套路是人工特征工程+浅层分类模型。训练文本分类器过程见下图:

    整个文本分类问题就拆分成了特征工程和分类器两部分,玩机器学习的同学对此自然再熟悉不过了

    1.1 特征工程

    特征工程在机器学习中往往是最耗时耗力的,但却极其的重要。抽象来讲,机器学习问题是把数据转换成信息再提炼到知识的过程,特征是“数据-->信息”的过程,决定了结果的上限,而分类器是“信息-->知识”的过程,则是去逼近这个上限。然而特征工程不同于分类器模型,不具备很强的通用性,往往需要结合对特征任务的理解。

    文本分类问题所在的自然语言领域自然也有其特有的特征处理逻辑,传统分本分类任务大部分工作也在此处。文本特征工程分为文本预处理、特征提取、文本表示三个部分,最终目的是把文本转换成计算机可理解的格式,并封装足够用于分类的信息,即很强的特征表达能力。

    1.1.1 文本预处理

    文本预处理过程是在文本中提取关键词表示文本的过程,中文文本处理中主要包括文本分词去停用词两个阶段。

    预处理不是本文重点,在此就不具体介绍了。

    1.1.2 文本表示和特征提取

    文本表示:

    文本表示的目的是把文本预处理后的转换成计算机可理解的方式,是决定文本分类质量最重要的部分。传统做法常用词袋模型(BOW, Bag Of Words)或向量空间模型(Vector Space Model),最大的不足是忽略文本上下文关系,每个词之间彼此独立,并且无法表征语义信息。词袋模型的示例如下:

                   ( 0, 0, 0, 0, .... , 1, ... 0, 0, 0, 0)

    一般来说词库量至少都是百万级别,因此词袋模型有个两个最大的问题:高纬度、高稀疏性。词袋模型是向量空间模型的基础,因此向量空间模型通过特征项选择降低维度,通过特征权重计算增加稠密性。

    特征提取:

    向量空间模型的文本表示方法的特征提取对应特征项的选择特征权重计算两部分。特征选择的基本思路是根据某个评价指标独立的对原始特征项(词项)进行评分排序,从中选择得分最高的一些特征项,过滤掉其余的特征项。常用的评价有文档频率、互信息、信息增益、χ²统计量等。

    特征权重主要是经典的TF-IDF方法及其扩展方法,主要思路是一个词的重要度与在类别内的词频成正比,与所有类别出现的次数成反比。

    关于特征选择和特征权重计算可以看这篇博文 NLP --- 文本分类(向量空间模型(Vector Space Model)VSM)

    1.1.3 基于语义的文本表示

    传统做法在文本表示方面除了向量空间模型,还有基于语义的文本表示方法,比如LDA主题模型、LSI/PLSI概率潜在语义索引等方法,一般认为这些方法得到的文本表示可以认为文档的深层表示,而word embedding文本分布式表示方法则是深度学习方法的重要基础,下文会展现。

    1.2 分类器

    朴素贝叶斯分类(Naïve Bayes)

    用朴素贝叶斯分类算法做中文文本分类

    KNN

    该算法的基本思想是:根据传统的向量空间模型,文本内容被形式化为特征空间中的加权特征向量。对于一个测试文本,计算它与训练样本集中每个文本的相似度,找出K个最相似的文本,根据加权距离和判断测试文本所属的类别,具体算法步骤如下:

    1. 对于一个测试文本,根据特征词形成测试文本向量。
    2. 计算该测试文本与训练集中每个文本的文本相似度,按照文本相似度,在训练文本集中选出与测试文本最相似的k个文本。
    3. 在测试文本的k个近邻中,依次计算每类的权重。
    4. 比较类的权重,将文本分到权重最大的那个类别中。

    针对海量文本数据的改进方法可见这篇博文:用于大数据分类的KNN算法研究

    SVM

    基于支持向量机SVM的文本分类的实现

    最大熵

     

    2 深度学习的文本分类方法

    上文介绍了传统的文本分类做法,传统做法主要问题的文本表示是高纬度高稀疏的,特征表达能力很弱,而且神经网络很不擅长对此类数据的处理;此外需要人工进行特征工程,成本很高。而深度学习最初在之所以图像和语音取得巨大成功,一个很重要的原因是图像和语音原始数据是连续和稠密的,有局部相关性。应用深度学习解决大规模文本分类问题最重要的是解决文本表示,再利用CNN/RNN等网络结构自动获取特征表达能力,去掉繁杂的人工特征工程,端到端的解决问题。接下来会分别介绍:

    2.1 文本的分布式表示:词向量(word embedding)

    分布式表示(Distributed Representation)其实Hinton 最早在1986年就提出了,基本思想是将每个词表达成 n 维稠密、连续的实数向量,与之相对的one-hot encoding向量空间只有一个维度是1,其余都是0。分布式表示最大的优点是具备非常powerful的特征表达能力,比如 n 维向量每维 k 个值,可以表征 k^{^{n}} 个概念。事实上,不管是神经网络的隐层,还是多个潜在变量的概率主题模型,都是应用分布式表示。下图是03年Bengio在 A Neural Probabilistic Language Model 的网络结构:

    这篇文章提出的神经网络语言模型(NNLM,Neural Probabilistic Language Model)采用的是文本分布式表示,即每个词表示为稠密的实数向量。NNLM模型的目标是构建语言模型:

    词的分布式表示即词向量(word embedding)是训练语言模型的一个附加产物,即图中的Matrix C。

    尽管Hinton 86年就提出了词的分布式表示,Bengio 03年便提出了NNLM,词向量真正火起来是google Mikolov 13年发表的两篇word2vec的文章 Efficient Estimation of Word Representations in Vector Space 和 Distributed Representations of Words and Phrases and their Compositionality,更重要的是发布了简单好用的word2vec工具包,在语义维度上得到了很好的验证,极大的推进了文本分析的进程。下图是文中提出的CBOW 和 Skip-Gram两个模型的结构,基本类似于NNLM,不同的是模型去掉了非线性隐层,预测目标不同,CBOW是上下文词预测当前词,Skip-Gram则相反。

    除此之外,提出了Hierarchical Softmax 和 Negative Sample两个方法,很好的解决了计算有效性,事实上这两个方法都没有严格的理论证明,有些trick之处,非常的实用主义。详细的过程不再阐述了,有兴趣深入理解word2vec的,推荐读读这篇很不错的paper:word2vec Parameter Learning Explained。额外多提一点,实际上word2vec学习的向量和真正语义还有差距,更多学到的是具备相似上下文的词,比如“good”“bad”相似度也很高,反而是文本分类任务输入有监督的语义能够学到更好的语义表示,有机会后续系统分享下。

    至此,文本的表示通过词向量的表示方式,把文本数据从高纬度高稀疏的神经网络难处理的方式,变成了类似图像、语音的的连续稠密数据。深度学习算法本身有很强的数据迁移性,很多之前在图像领域很适用的深度学习算法比如CNN等也可以很好的迁移到文本领域了,下一小节具体阐述下文本分类领域深度学习的方法。

    2.2 深度学习文本分类模型

    词向量解决了文本表示的问题,该部分介绍的文本分类模型则是利用CNN/RNN等深度学习网络及其变体解决自动特征提取(即特征表达)的问题。

    2.2.1 fastText

    fastText 是上文提到的 word2vec 作者 Mikolov 转战 Facebook 后16年7月刚发表的一篇论文 Bag of Tricks for Efficient Text Classification。把 fastText 放在此处并非因为它是文本分类的主流做法,而是它极致简单,速度快,模型图见下:

    具体结构参考这篇文章 fastText原理及实践

    fastText的核心思想就是:将整篇文档的词及n-gram向量叠加平均得到文档向量,然后使用文档向量做softmax多分类。这中间涉及到两个技巧:字符级n-gram特征的引入以及分层Softmax分类。

    2.2.2 TextCNN

    本篇文章的题图选用的就是14年这篇文章提出的TextCNN的结构(见下图)。fastText 中的网络结果是完全没有考虑词序信息的,而它用的 n-gram 特征 trick 恰恰说明了局部序列信息的重要意义。卷积神经网络(CNN Convolutional Neural Network)最初在图像领域取得了巨大成功,CNN原理就不讲了,核心点在于可以捕捉局部相关性,具体到文本分类任务中可以利用CNN来提取句子中类似 n-gram 的关键信息。

    TextCNN的详细过程原理图见下:

    2.2.3 TextRNN

    尽管TextCNN能够在很多任务里面能有不错的表现,但CNN有个最大问题是固定 filter_size 的视野,一方面无法建模更长的序列信息,另一方面 filter_size 的超参调节也很繁琐。CNN本质是做文本的特征表达工作,而自然语言处理中更常用的是递归神经网络(RNN, Recurrent Neural Network),能够更好的表达上下文信息。具体在文本分类任务中,Bi-directional RNN(实际使用的是双向LSTM)从某种意义上可以理解为可以捕获变长且双向的的 "n-gram" 信息。

    RNN算是在自然语言处理领域非常一个标配网络了,在序列标注/命名体识别/seq2seq模型等很多场景都有应用,Recurrent Neural Network for Text Classification with Multi-Task Learning文中介绍了RNN用于分类问题的设计,下面介绍两种structure。

    1)structure 1

    流程:embedding--->BiLSTM--->concat final output/average all output----->softmax layer

    2)structure 2

    流程:embedding-->BiLSTM---->(dropout)-->concat ouput--->UniLSTM--->(droput)-->softmax layer

    结构图如下图所示:

    与之前结构不同的是,在双向LSTM(上图不太准确,底层应该是一个双向LSTM)的基础上又堆叠了一个单向的LSTM。把双向LSTM在每一个时间步长上的两个隐藏状态进行拼接,作为上层单向LSTM每一个时间步长上的一个输入,最后取上层单向LSTM最后一个时间步长上的隐藏状态,再经过一个softmax层(输出层使用softamx激活函数,2分类的话则使用sigmoid)进行一个多分类。

    2.2.4 TextRNN + Attention

    CNN和RNN用在文本分类任务中尽管效果显著,但都有一个不足的地方就是不够直观,可解释性不好,特别是在分析badcase时候感受尤其深刻。而注意力(Attention)机制是自然语言处理领域一个常用的建模长时间记忆机制,能够很直观的给出每个词对结果的贡献,基本成了Seq2Seq模型的标配了。实际上文本分类从某种意义上也可以理解为一种特殊的Seq2Seq,所以考虑把Attention机制引入近来,研究了下学术界果然有类似做法。

    这其中比较典型的就是HAN,具体可以见这篇文章HAN(Hierarchical Attention Network)

    2.2.5 TextRCNN

    我们参考的是中科院15年发表在AAAI上的这篇文章 Recurrent Convolutional Neural Networks for Text Classification 的结构:

    2.2.6 EntNet/DMN

    对这两个网络没有研究过,具体参考这篇文章 基于深度学习的文本分类

    2.2.7 Bert

    Ber的结构讲解有很多,大家可自行搜索。

    2.2.8 DPCNN

    DPCNN可参考这篇文章DPCNN深度金字塔卷积神经网络介绍

    2.3 总结

    文本分类在深度学习的时代逃过了特征提取类似距离的定义的过程, 但是依然逃不了模型的选择, 参数的优化,编码和预处理的考量(one-hot, n-gram等等) ,以及时间的平衡。

    概况说来,主要有5大类模型:

    1. 词嵌入向量化:word2vec, FastText等等
    2. 卷积神经网络特征提取:Text-CNN, Char-CNN等等
    3. 上下文机制:Text-RNN, BiRNN, RCNN等等
    4. 记忆存储机制:EntNet, DMN等等
    5. 注意力机制:HAN等等

    最后再推荐下Github上关于文本分类的总结,讲的非常全面:https://github.com/brightmart/text_classification

    Reference

    用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践

    用于大数据分类的KNN算法研究

    fastText原理及实践

    textRNN & textCNN的网络结构与代码实现!

    基于深度学习的文本分类

    展开全文
  • 常见分类方法

    万次阅读 2016-12-30 10:29:19
    本文只对几种常见的分类方法做简单介绍,详细的讲解和算法网上有很多资源,文中会给出推荐链接。 Content 1. 决策树分类(链接:http://blog.csdn.net/github_36299736/article/details/52749999) 2. 基于规则...

    本文只对几种常见的分类方法做简单介绍,详细的讲解和算法网上有很多资源,文中会给出推荐链接。

    Content

    1.      决策树分类(链接:http://blog.csdn.net/github_36299736/article/details/52749999

    2.      基于规则分类

    3.      最邻近分类(K-NN)

    4.      朴素贝叶斯分类器

    5.      人工神经网络

    6.      支持向量机(SVM)

     

    1. 基于规则的分类器

    简单来说,基于规则的分类器就是使用一组“if… then …”的组合来进行分类的技术。通常用R =( r1˅ r2 ˅ … ˅ rk)来表示,其中 ri 就是分类的规则。

    以上图为例,r1  类就可以用如下规则判断:

            If (胎生 = 否 & 飞行动物 = 是)then (类别 = 鸟类)

    度量分类规则的质量可以用覆盖率(coverage)和准确率(accuracy)。覆盖率就是满足规则的记录数占总记录数的比例,准确率就是使用该规则正确分类的比例。

    基于规则分类还有以下两个重要的规则:

            互斥规则(Mutually Exclusive Rule)和穷举规则(Exhaustive Rule)

    互斥规则:规则集中不存在两条规则被同一条记录触发。简单说就是保证同一条记录不会同时属于两个类别。

    穷举规则:对于属性值的任一组合,R中都存在一条规则加以覆盖。即每一条记录都保证能以其中一种规则加以分类。

    这两个性质就可以保证每条记录被且仅被一条规则覆盖。但是实际情况下,分类器可能无法满足这两条性质。对于不能穷举的规则集,我们可以通过设定一个默认规则来覆盖不能被分类的记录。对于不互斥的规则集,我们可以通过建立优先级或者为规则加权等方式来解决。

     

    2. 最邻近分类器

    最邻近分类器是一种简单且常用的分类器。也就是我们常说的K-NN分类算法。它的原理非常简单,即根据与测试数据最近的K个点的类别,采用多数表决方案来确定该测试数据的分类

    以上图为例,1-最邻近(图a)中可以看到与测试数据最近的一个点为负,所以该测试点被指派到负类。2-最邻近(图b)中,与测试数据最近的两点为一正一负,可以随机选择其中一个类别。3-最邻近(图c)中,最近的三个点为两正一负,根据多数表决方案,该点被指派为正。

    从上述例子中就可以看到该算法中k值的选取非常关键。K值太小,结果容易受到数据中噪声的影响从而产生过拟合。K值太大,容易导致误分类,因为结果可能会受到距离测试数据点非常远的数据的影响。(如下图)

    算法描述如下:

    也可以对不同距离的数据点进行加权,从而提高分类的准确率。

     

    3. 朴素贝叶斯分类器

    了解朴素贝叶斯分类,首先要知道贝叶斯定理,也就是我们比较熟悉的条件概率。参考:http://blog.csdn.net/github_36299736/article/details/52800394

    朴素贝叶斯分类器的工作原理就是计算测试数据被分给各个类别的条件概率(后验概率),并将该记录指派给概率最大的分类。

    让我们用之前在决策树分类中使用过的例子来分析:

    假定一个测试数据,该测试数据的属性集可以表示为:X= {有房=否,婚姻状况=已婚,年收入=120k},我们需要将该数据分类到两个类别之一,即 Y = {拖欠贷款=是,拖欠贷款=否}。那么我们需要做的就是分别计算两种分类情况下的后验概率 P (Y|X) 。 P1 = P (拖欠贷款 = 是|X) 和P2 = P (拖欠贷款 = 否|X) ,如果P1 >P2,则记录分类为拖欠贷款 = 是,反之分类为拖欠贷款 = 否。

    朴素贝叶斯分类器更通常的表示方法:给定类标号 y,朴素贝叶斯分类器在估计条件概率时假设属性之间条件独立,若每个属性集(数据)包含d个属性X = { X1,X2,…,Xd } ,那么每个类Y的后验概率计算公式为:

    由于P(X)是固定值,因此只要找出分子最大的类就可以了。

    对于连续属性的条件概率,可以用以下两种方法来估计它的类条件概率:

    1.      把连续的属性离散化,然后用相应区间来替代连续的属性值;

    2.      假设连续变量服从某种概率分布(例如:高斯分布),然后使用训练数据估计分布的参数。

     

    4. 人工神经网络(ANN)

    类似于人脑由神经元及轴突构成的结构,人工神经网络由相互连接的结点和有向链构成。最简单的ANN模型是感知器(perceptron)。

    以上图为例,b即为一个感知器,其中,x1, x2, x3 分别为三个输入结点,在本例中表示三个输入的布尔值,还有一个输出结点。结点通常叫做神经元或单元。感知器中,每个输入结点都通过一个加权链连接到输出结点。加权链就像神经元间连接的强度,训练一个感知器模型就相当于不断调整链的权值,直到能拟合训练数据的输入输出关系为止

    感知器对输入加权求和,再减去偏置因子 t,然后考察得到的结果,得到输出值 ŷ。

    上图中分类依据为如果三个输入值中至少两个0,y取-1,至少有两个1时,y取1. 它的感知器的输出计算公式如下:

    更通用的数学表达方式是:

    其中,w1, w2, …, wd 是输入链的权值,x1, x2, …, xd 是输入属性值。

    还可以写成更简洁的形式:

    其中,w0 = -t,x0 = 1. w · x 是权值向量 w 和输入属性向量 x 的点积。

     

    多层人工神经网络

    多层神经网络相比于感知器要复杂得多,首先,网络的输入层和输出层之间可能包含多个隐藏层,隐藏层中包含隐藏结点。这种结构就叫做多层神经网络。感知器就是一个单层的神经网络

    除此之外,网络还可以使用其他激活函数(如S型函数,双曲线正切函数,符号函数等)使得隐藏结点和输出结点的输出值和输入参数呈非线性关系。

    直观上,我们可以把每个隐藏结点看成一个感知器,而每个感知器可以构造出一个超平面用于分类。如下图a中所构造的两个超平面。

    ANN学习算法的目标函数是找出一组权值w,使得误差平方和最小:

     

    对于激活函数是线性函数的情况,可以将ŷ =w · x 带入上式将其变成参数的二次函数,就可以找出全局最小解。当输出是参数的非线性函数的时候,可以采用梯度下降法来优化。

    关于神经网络的更多内容,我推荐这一篇文章,来自知乎专栏,作者:YJango,链接:https://zhuanlan.zhihu.com/p/22888385

     

    5. 支持向量机(SVM)

    SVM是现在倍受关注的分类技术,可以很好地适用于高维数据。它的特点是,使用训练实例的一个子集来表示决策边界,该子集就是支持向量。那么为什么把一个决策边界叫做“向量”呢?首先从最大边缘超平面这个概念开始了解。

    假设这是一个数据集,其中包含两类数据,分别用方块和圆来表示。非常直观地看到,我们很容易在两组数据之间找到无限个超平面(本例中是一条直线),使得不同类的数据分别在这个超平面的两侧。

    但是,有一些超平面的选择在测试未知数据时的效果可能并不好,比如下图中的红色线:

    可以看到,只要测试数据稍稍偏离一点,就容易导致分类错误。因此,我们要在这无数条分界线中找到一条最优解,使它到两边的边距最大。(如下图)

    如果将这些数据点放在坐标系中,边缘的点可以以向量的形式来表示:

     

    其中,用红色圈起来的数据点就是support vector,这也就是SVM这个算法名称的由来。

    关于支持向量机,有一系列非常好的博客可以参考,作者:pluskid,链接:http://blog.pluskid.org/?page_id=683

     

    其实常用分类方法还有很多,例如AdaBoost,以及不同分类方法的组合。本文只是参考书中内容对几种常见分类算法做了入门级介绍,可以根据实际的学习和工作需要做深入研究并择优使用。 感谢阅读。

     

    参考:《数据挖掘导论》第五章 分类:其他技术

    展开全文
  • 分类方法概述

    千次阅读 2018-01-16 10:48:53
    单一的分类方法主要包括:决策树、贝叶斯、人工神经网络、K-近邻、支持向量机和基于关联规则的分类等;另外还有用于组合单一分类方法的集成学习算法,如Bagging和Boosting等。  (1)决策树  决策树是用于分类和...
  • 方法一:创建独立ID或别名的样式文件 WordPress默认的分类是查找对应ID的主题文件,找不到就会指向archive.php文件,如果archive.php文件不存在,就会默认使用index.php文件。 到博客后台查看一下要设计样式的分类的...
  • #另一种分类器 from sklearn.neighbors import KNeighborsClassifier my_classifier=KNeighborsClassifier() my_classifier.fit(x_train,y_train) #训练分类器 predictions=my_classifier.predict(x_test) #对...
  • 图像分类方法

    千次阅读 2013-10-31 11:28:32
    一、最小距离分类法是监督分类方法之一。它的具体分类过程如下: (1)利用训练样本数据计算出每一类别的均值向量及标准差(均方差)向量; (2)以均值向量作为该类在特征空间中的中心位置,计算输入图形中每个...
  • 常见的分类方法

    千次阅读 2016-09-27 17:32:08
    主要分类方法介绍解决分类问题的方法很多[40-42] ,单一的分类方法主要包括:决策树、贝叶斯、人工神经网络、K-近邻、支持向量机和基于关联规则的分类等;另外还有用于组合单一分类方法的集成学习算法,如Bagging和...
  • Python分类求和方法

    千次阅读 2018-11-27 16:40:51
    在Excel中经常会有根据列分类求和的需求,如果数据较少,可以在Excel中通过手动筛选的方法,但是数据较多那就比较麻烦啦。 这里需要用到groupby函数,pandas提供了一个灵活高效的groupby功能,它使你能以一种自然的...
  • 文本分类方法综述

    千次阅读 2018-07-31 15:13:17
    本文主要总结文本分类方法。 文本分类的本质是文本相似性的度量、计算。
  • 分类模型的评估方法

    千次阅读 2017-12-14 01:30:19
    在检验集上计算出的准确率或错误率可以用来比较不同分类器在相同领域上的性能,但需要检验记录的类标号必须已知。 一、保持方法(Holdout) 将被标记的原始数据划分为两个不相交的集合,分别为训练集和检验集。在...
  • 打开微信扫一扫,关注微信公众号【数据与算法联盟】 转载请注明出处:... 机器学习算法可以按照不同的标准进行分类。比如按函数f(X)的不同,机器学习算法可以分为线性模型和非线性模型;按照学习准则的...
  • R语言估算不同分类器的预测误差

    千次阅读 2017-06-11 08:45:50
    说明为了比较不同分类器,我们通过将多种分类算法采用ipred包的erroreset函数进行10折交叉验证,来证明集成分类器是否比单一决策树分类效果更优。
  • 软件测试方法分类

    千次阅读 2019-05-20 21:31:24
    软件测试方法按各种类划分为: 一. 按开发阶段划分 单元测试(模块测试) 单元测试是对软件组成的单元进行测试,其目的是检验软件基本组成单位的正确性 TDD(测试驱动开发),开发人员先不写代码,测试人员先写测试...
  • 基于SVM的中文文本分类方法

    千次阅读 2017-06-15 16:50:21
    基于SVM的中文文本分类方法 1、文本分类简介 文本分类(Text Classification)是将文本文档与规定好的类别进行匹配的过程。文本分类可以分为训练和分类两个阶段,其对应的流程图如下面的图1.1和图1.2所示: 图...
  • 下说明这两种分类方法的相同和不同之处:1,相同:二者都是bootsrap自助法选取样本。 2,相同:二者都是要训练很多棵决策树。 3,不同:adaboost后面树的训练,其在变量抽样选取的时候,对于上一棵树分错的样本,...
  • opencv图像分类方法汇总

    千次阅读 2016-08-03 14:20:00
    OpenCV分类器学习心得 这篇文章是学习了斯坦福大学《机器学习》、《学习OpenCV》、OpenCV中文文档以及相关博客总结出来的,自认为已经了解各种分类器的工作原理(涉及数学公式推导部分还很薄弱)才敢动笔。不足之处...
  • 分类方法中样本类别不均衡问题

    千次阅读 2017-11-29 20:45:51
    大部分的分类学习方法都存在一个基本的假设,训练集中不同类别的训练样本数目差不多。如果不同类别的样本数目差距很大,比如正类样本有98个,而负类样本只有2个,这种情况下学习出来的分类器只要一直返回正类的预测...
  • SVM多类分类方法

    千次阅读 2016-07-19 17:50:56
    SVM多类分类方法   (2012-04-12 09:46:51) 转载▼     SVM多类分类方法的实现根据其指导思想大致有两种: (1)将多类问题分解为一系列SVM可直接求解的两类问题,基于这一系列SVM求解结果得出最终...
  • 分类模型评估方法

    千次阅读 2018-07-04 10:04:05
    上图矩阵中1是正例,0是只负例对于二分类问题,可以将真实类别和分类器预测类别组合为:真正例(true positive TP):真实类别为正例,预测类别为正例;假正例(false positive FP): 真实类别为负例,预测类别为正例...
  • 数据分析常见方法及模型分类

    千次阅读 2020-08-05 10:33:26
    今天跟大家分享一下比较常见的数据分析方法以及模型分类。...一般来说,我们可以将数据分析方法分为对比分析、相关分析、分类分析以及综合分析四类,其中前三类主要是以定性的数据分析方法和模型为主,而对于...
  • 强化学习的方法总结与分类

    千次阅读 2018-07-24 17:03:45
    强化学习中有多种不同的方法,比如说比较知名的控制方法 Q learning,Policy Gradients,还有基于对环境的理解的 model-based RL 等等。... 第一种分类方法可分为不理解环境(Model-Free RL)和理...
  • 分类中常见的类别不平衡问题解决方法

    万次阅读 多人点赞 2017-08-29 11:01:32
    通常的分类学习方法中都有一个共同的假设,即不同类别的训练样例数目相同。如果不同类别的训练样例数目稍有差别,通常对分类影响不大,但是若差别很大,则会对学习造成影响,测试结果非常差。例如二分类问题中有998...
  • 流量分类方法设计(一)——参考论文整理

    千次阅读 多人点赞 2018-04-05 16:05:59
    流量分类方法设计(一)——参考论文整理 因为最近在做流量分类有关的工作,所以将整个工作思路整理下来,希望对以后进一步的学习和论文写作有所帮助。 这一篇主要整理一下最近有关流量分类的论文,介绍他们的设计...
  • 近日,Shiyu Mou 在 Medium 上发表了一篇文章,对五种用于图像分类方法(KNN、SVM、BP 神经网络、CNN 和迁移学习)进行了实验比较,该研究的相关数据集和代码也已经被发布在了 GitHub 上。项目地址:...
  • 正态分布中的贝叶斯分类方法

    千次阅读 2018-10-01 11:18:52
    本文主要介绍多元正态分布中的贝叶斯分类方法。   对于c类问题,以最小错误率的决策标准,可以得到判别函数为 令判别函数简化为 假设X是n维的待分类特征向量,且服从正态分布,即,则 为了方便计算,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 448,060
精华内容 179,224
关键字:

不同分类方法对比