分类目录归档:文本分类

达观数据王子豪:这5个例子,小学生都能秒懂分类算法

Deep Learning Specialization on Coursera
分类算法作为数据挖掘、机器学习中重要的研究领域,在新闻分类、黄反广告识别、情感分析、观点挖掘等应用实践中都有着广泛的应用。如何将朴素贝叶斯、决策树、支持向量机这些常见的分类算法通俗易懂地讲给对人工智能感兴趣的人?达观研究院的这篇分类算法科普文章,以日常生活为例子,让小学生都能秒懂分类算法。

试想,8岁的小明是你刚上小学的儿子,长得可爱,古灵精怪,对世界充满好奇。

这天饭后,刚写完家庭作业的小明看到你在书桌前对着电脑眉头紧锁,便跑了过来问你:“爸爸(妈妈),你在做什么呀?”。

身为算法工程师的你正为公司的一个分类项目忙得焦头烂额,听到小明的问话,你随口而出:“分类!”

“分类是什么?”

听到儿子的追问,你的视线终于离开屏幕,但想说的话还没出口又咽了回去……

分类是什么?

简单来说,分类就是对事物进行区分的过程和方法。

在你眼里乖巧的小明是一个好孩子,同时你也想确保他会在学校做一名“好学生”而不是“坏学生”。这里的区分“好学生”和“坏学生”就是一个分类任务,关于这点,达观研究院可以帮你回答小明的疑问。

K最邻近

“别和其他坏学生在一起,否则你也会和他们一样。”        —— 家长

这句话通常来自家长的劝诫,但它透露着不折不扣的近邻思想。在分类算法中,K最近邻是最普通也是最好理解的算法。它的主要思想是通过离待预测样本最近的K个样本的类别来判断当前样本的类别。

家长们希望孩子成为好学生,可能为此不惜重金购买学区房或者上私立学校,一个原因之一是这些优秀的学校里有更多的优秀学生。与其他优秀学生走的更近,从K最近邻算法的角度来看,就是让目标样本与其他正样本距离更近、与其他负样本距离更远,从而使得其近邻中的正样本比例更高,更大概率被判断成正样本。

 

朴素贝叶斯

“根据以往抓获的情况来看,十个坏学生有九个爱打架。”      —— 教导主任

说这句话的训导主任很有可能就是通过朴素贝叶斯算法来区分好、坏学生。

“十个坏学生有九个爱打架”就意味着“坏学生”打架的概率P(打架|坏学生)=0.9,假设根据训导处历史记录坏学生占学生总数P(坏学生)=0.1、打架发生的概率是P(打架)=0.09,那么这时如果发生打架事件,就可以通过贝叶斯公式判断出当事学生是“坏学生”的概率P(坏学生|打架)=P(打架|坏学生)×P(坏学生)÷P(打架)=1.0,即该学生100%是“坏学生”。

朴素贝叶斯算法成立的一个前提是满足特征间条件独立假设。假如教导主任还管学生早恋问题,那么他通过“打架”和“早恋”两种特征来判断学生的前提必须是——在已知学生“好坏”的情况下“打架”和“早恋”之间没有关联。这样的假设可能和实际情况不符合,但让训导主任判断起来更加简单粗暴。

决策树

“先看抽不抽烟,再看染不染头发,最后看讲不讲脏话。”  ——社区大妈

社区大妈经验丰富,有一套自己的判断逻辑。假设“抽烟”、“染发”和“讲脏话”是社区大妈认为的区分“好坏”学生的三项关键特征,那么这样一个有先后次序的判断逻辑就构成一个决策树模型。在决策树中,最能区分类别的特征将作为最先判断的条件,然后依次向下判断各个次优特征。决策树的核心就在于如何选取每个节点的最优判断条件,也即特征选择的过程。

而在每一个判断节点,决策树都会遵循一套IF-THEN的规则:

IF “抽烟” THEN -> “坏学生”

ELSE

IF “染发” THEN -> “坏学生”

ELSE IF “讲脏话” THEN -> “坏学生”

ELSE -> “好学生”

逻辑回归

“上课讲话扣1分,不交作业扣2分,比赛得奖加5分。”   ——纪律委员

班上的纪律委员既勤恳又严格,总是在小本本上记录同学们的每一项行为得分。在完成对每一项行为的评分后,纪律委员根据最终加总得到的总分来判断每位同学的表现好坏。

上述的过程就非常类似于逻辑回归的算法原理。我们称逻辑回归为一种线性分类器,其特征就在于自变量x和因变量y之间存在类似y=ax+b的一阶的、线性的关系。假设“上课讲话”、“不交作业”和“比赛得奖”的次数分别表示为x1、x2、和x3,且每个学生的基础分为0,那么最终得分y=-1*x1-2*x2+5*x3+0。其中-1、-2和5分别就对应于每种行为在“表现好”这一类别下的权重。

Sigmoid函数图像

对于最终得分y,逻辑回归还通过Sigmoid函数将其变换到0-1之间,其含义可以认为是当前样本属于正样本的概率,即得分y越高,属于“表现好”的概率就越大。也就是说,假如纪律委员记录了某位同学分别“上课讲话”、“不交作业”和“比赛得奖”各一次,那么最终得分y=-2-1+5=2,而对2进行Sigmoid变换后约等于0.88,即可知该同学有88%的概率为“好学生”。

支持向量机

“我想个办法把表现差的学生都调到最后一排。”  ——班主任

即使学生们再不情愿,班主任也有一万个理由对他们的座位作出安排。对于“坏学生”,一些班主任的采取的做法是尽量让他们与“好学生”保持距离,即将“坏学生”们都调到教室的最后一排。这样一来,就相当于在学生们之间画了一条清晰的分割界线,一眼就能区分出来。

支持向量机的思想就是如此。支持向量机致力于在正负样本的边界上找到一条分割界线(超平面),使得它能完全区分两类样本的同时,保证划分出的间隔尽量的大。如果一条分割界线无法完全区分(线性不可分),要么加上松弛变量进行适当的容忍,要么通过核函数对样本进行空间上的映射后再进行划分。对于班主任来讲,调换学生们的座位就相当于使用了核函数,让原本散落在教室里的“好”、“坏”学生从线性不可分变得线性可分了。

结束语

分类和分类算法的思想其实无处不在。而在实际工程中,分类算法的应用需要关注的地方还有很多。达观数据在中文文本分类方面拥有丰富的实践经验和心得。想了解这方面的内容,敬请期待下一篇文章《中文文本分类——你需要了解的10项关键内容》。

关于作者

王子豪:达观数据高级NLP算法工程师,负责达观数据文本挖掘和NLP算法的开发及应用,在文本分类、观点挖掘和情感分析等领域有丰富实践经验。

达观数据曾彦能:如何用深度学习做好长文本分类与法律文书智能化处理

Deep Learning Specialization on Coursera

在NLP领域中,文本分类舆情分析等任务相较于文本抽取,和摘要等任务更容易获得大量标注数据。因此在文本分类领域中深度学习相较于传统方法更容易获得比较好的效果。正是有了文本分类模型的快速演进,海量的法律文书可以通过智能化处理来极大地提高效率。我们今天就来分析一下当前state of art的文本分类模型以及他们在法律文书智能化中的应用。

文本分类领域走过路过不可错过的深度学习模型主要有FastText,TextCNN,HAN,DPCNN。本文试图在实践之后总结一下这些这些分类模型的理论框架,把这些模型相互联系起来,让大家在选择模型与调参的时候能有一些直觉与灵感。在深度学习这个实践为王的领域常有人质疑理论理论无用,我个人的感受是理论首先在根据数据特征筛选模型的时候非常有用,其次在调参的过程中也能大幅提升效率,更重要的是调不出结果的时候,往往脑海里的那一句“这个模型不应该是这样的结果”,以及“这不科学”提供了坚持方向信心。

一、文本分类模型详解

1. FastText

其中FastText结构特别简单,对于速度要求特别高场合适用,他把一篇文章中所有的词向量(还可以加上N-gram向量)直接相加求均值,然后过一个单层神经网络来得出最后的分类结果。很显然,这样的做法对于复杂的文本分类任务来说丢失了太多的信息。FastText的一种简单的增强模型是DAN,改变在于在词向量平均完成后多叠了几层全连接神经网络。对应地,FastText也可以看成是DAN全连接神经网络层数为1的的一种特例。

图1 2层DAN网络

需要特别注意的是,对于不加n-gram向量的FastText模型,他不可能去分辨否定词的位置,看下面的两句话:

我不喜欢这类电影,但是喜欢这一个。

我喜欢这类电影,但是不喜欢这一个。

这样的两句句子经过词向量平均以后已经送入单层神经网络的时候已经完全一模一样了,分类器不可能分辨出这两句话的区别,只有添加n-gram特征以后才可能有区别。因此,在实际应用的时候需要对你的数据有足够的了解。

2. TextCNN

TextCNN相较于fastText模型的结构会复杂一些,在2014年提出,他使用了卷积 + 最大池化这两个在图像领域非常成功的好基友组合。我们先看一下他的结构。如下图所示,示意图中第一层输入为7*5的词向量矩阵,其中词向量维度为5,句子长度为7,然后第二层使用了3组宽度分别为2、3、4的卷积核,图中每种宽度的卷积核使用了两个。

其中每个卷积核在整个句子长度上滑动,得到n个激活值,图中卷积核滑动的过程中没有使用padding,因此宽度为4的卷积核在长度为7的句子上滑动得到4个特征值。然后出场的就是卷积的好基友全局池化了,每一个卷积核输出的特征值列向量通过在整个句子长度上取最大值得到了6个特征值组成的feature map来供后级分类器作为分类的依据。

图2 TextCNN结构

我们知道图像处理中卷积的作用是在整幅图像中计算各个局部区域与卷积核的相似度,一般前几层的卷积核是可以很方便地做可视化的,可视化的结果是前几层的卷积核是在原始输入图像中寻找一些简单的线条。NLP中的卷积核没法做可视化,那么是不是就不能理解他在做什么了呢,其实可以通过模型的结构来来推断他的作用。因为TextCNN中卷积过后直接就是全局max pooling,那么它只能是在卷积的过程中计算与某些关键词的相似度,然后通过max pooling层来得出模型关注那些关键词是否在整个输入文本中出现,以及最相似的关键词与卷积核的相似度最大有多大。我们假设中文输出为字向量,理想情况下一个卷积核代表一个关键词,如下图所示:

图3 TextCNN卷积核的意义示意图

比如说一个2分类舆情分析任务中,如果把整个模型当成一个黑箱,那么去检测他的输出结果,会发现这个模型对于输入文本中是否含有“喜欢”,“热爱”这样的词特别敏感,那么他是怎么做到的呢?整个模型中能够做到遍历整个句子去计算关键词相似度的只有卷积的部分,因为后面直接是对整个句子长度的max pooling。但是因为模型面对的是字向量,并不是字,所以他一个卷积核可能是只学了半个关键词词向量,然后还有另外的卷积核学了另外半个关键词词向量,最后在分类器的地方这些特征值被累加得到了最终的结果。

TextCNN模型最大的问题也是这个全局的max pooling丢失了结构信息,因此很难去发现文本中的转折关系等复杂模式,TextCNN只能知道哪些关键词是否在文本中出现了,以及相似度强度分布,而不可能知道哪些关键词出现了几次以及出现这些关键词出现顺序。假想一下如果把这个中间结果给人来判断,人类也很难得到对于复杂文本的分类结果,所以机器显然也做不到。针对这个问题,可以尝试k-max pooling做一些优化,k-max pooling针对每个卷积核都不只保留最大的值,他保留前k个最大值,并且保留这些值出现的顺序,也即按照文本中的位置顺序来排列这k个最大值。在某些比较复杂的文本上相对于1-max pooling会有提升。

3. HAN(Hierarchy Attention Network)

相较于TextCNN,HAN最大的进步在于完全保留了文章的结构信息,并且特别难能可贵的是,基于attention结构有很强的解释性。

他的结构如下图所示:

图4 HAN结构

输入词向量序列后,通过词级别的Bi-GRU后,每个词都会有一个对应的Bi-GRU输出的隐向量h,再通过uw向量与每个时间步的h向量点积得到attention权重,然后把h序列做一个根据attention权重的加权和,得到句子summary向量s2,每个句子再通过同样的Bi-GRU结构再加attention得到最终输出的文档特征向量v向量,然后v向量通过后级dense层再加分类器得到最终的文本分类结果。模型结构非常符合人的从词->句子->再到篇章的理解过程。

最重要的是该模型在提供了更好的分类精度的情况下,可视化效果非常好。同时在调参过程中,我们发现attention部分对于模型的表达能力影响非常大,整个模型在所有位置调整L2-Loss对模型表达能力带来的影响远不如在两处attention的地方大,这同时也能解释为什么可视化效果比较好,因为attention对于模型的输出贡献很大,而attention又恰恰是可以可视化的。

下面我们来看一下他在法律领域罪名预测任务上的可视化效果。下面的可视化的结果并不是找了极少数效果好的,而是大部分情况下模型的可视化能够解释他的输出。需要注意的是,此处为了让不太重要句子中相对重要的词并不完全不可见,词的亮度=sqrt(句子权重)*词权重。

在非常长的文本中,HAN觉得中间那些完全是废话,不如那句“公诉机关认为”有用,就放弃了。

图5 HAN attention可视化1

如下图所示,模型虽然在文本第二行中看到了窃取的字样,但是他认为这个案件中主要的事件是抢劫,这就是保留文本结构的好处。

图6 HAN attention可视化2

可以看到并不是所有的深度学习模型都是不可以理解的,这种可解释性也会给实际应用带来很多帮助。

4 DPCNN

上面的几个模型,论神经网络的层数,都不深,大致就只有2~3层左右。大家都知道何凯明大神的ResNet是CV中的里程碑,15年参加ImageNet的时候top-5误差率相较于上一年的冠军GoogleNet直接降低了将近一半,证明了网络的深度是非常重要的。

图7 ImageNet历年冠军

那么问题来了,在文本分类领域网络深度提升会带来分类精度的大幅提升吗?我们在一些比较复杂的任务中,以及数据量比较大(百万级)的情况下有提升,但不是ResNet那种决定性的提升。

DPCNN的主要结构如下图所示:

图8 DPCNN结构

从词向量开始(本文的重点在于模型的大结构,因此不去详解文中的region embedding部分,直接将整个部分认为是一种词向量的输出。)先做了两次宽度为3,filter数量为250个的卷积,然后开始做两两相邻的max-pooling,假设输入句子长度padding到1024个词,那么在头两个卷积完成以后句子长度仍然为1024。在block 1的pooling位置,max pooling的width=3,stride=2,也即序列中相邻的3个时间步中每一维feature map取这三个位置中最大的一个留下,也即位置0,1,2中取一个最大值,然后,移动2个时间步,在2,3,4时间步中取一次max,那么pooling输出的序列长度就是511。

后面以此类推,序列长度是呈指数级下降的,这也是文章名字Deep Pyramid的由来。然后通过两个卷积的非线性变换,提取更深层次的特征,再在输出的地方叠加上未经过两次卷积的quick connection通路(ResNet中使得深层网络更容易训练的关键)。因为每个block中的max pooling只是相邻的两个位置做max-pooling,所以每次丢失的结构信息很少,后面的卷积层又能提取更加抽象的特征出来。所以最终模型可以在不丢失太多结构信息的情况下,同时又做了比较深层的非线性变换。

我们实际测试中在非线性度要求比较高的分类任务中DPCNN会比HAN精度高,并且由于他是基于CNN的,训练速度比基于GRU的HAN也要快很多。

二、法律文书智能化应用

达观数据在法律文书智能化处理中也应用了上面的几个模型,并在此基础上做法律行业针对性的优化。在刚刚结束的“法研杯”法律人工智能大赛中达观数据代表队取得了单项三等奖的成绩。

以裁判文书智能化处理为例,达观数据可以通过上述的文本分类器根据一段犯罪事实来向法律工作者推荐与描述的犯罪事实相关的罪名,法律条文,甚至是刑期的预测等。

下面以裁判文书网的一篇裁判文书为例,我们截取其中的犯罪事实部分文字,输入模型。模型会根据输入的文字判断此段分类事实对应的罪名,并且高亮出犯罪事实中的关键内容。

截取裁判文书网中的犯罪事实部分:

图9 裁判文书样例

输入模型:

“公诉机关指控:2017年6月30日22时左右,被告人耿艳峰醉酒驾驶冀T×××××号比亚迪小型轿车沿东孙庄村东水泥路由西向东行驶,行至事发处,与对向被告人孙汉斌无证醉酒驾驶无牌二轮摩托车发生碰撞。造成两车不同程度损坏,孙汉斌受伤的道路交通事故。经衡水市公安局物证鉴定所检验:耿艳峰血液酒精含量为283.11mg/lOOmL;孙汉斌血液酒精含量为95.75mg/mL。经武强县交通警察大队认定:耿艳峰、孙汉斌均负此事故的同等责任。”

得到结果:

图10 模型输出结果

模型会输出预测的罪名以及相关法条的推荐结果,能够极大地提高律师的效率。并且模型还能将关键的句子以及词高亮出来给律师进一步仔细审阅提供方便。

目前在刑法相关的大量样本上罪名预测与相关法条推荐的准确率在90%左右。刑期由于存在不同年代不同地区存在一些差异,目前模型的输出结果还不能特别直观地给出评估。

三、总结

目前state of the art的深度学习文本发分类模型在十万~百万级以上的数据上已经能取得相当不错的效果,并且也有一些可解释性非常强的模型可用。要在实际业务中把文本分类模型用好,除了像文中深入分析理论以外,在大量的业务实践中总结经验也是必不可少的。达观在裁判文书处理等实际任务上实测输出结果也非常不错,并且达观的深度学习文本分类技术也会在各个业务应用中不断优化升级,希望能为法律行业的智能化以及效率优化作出一些贡献。

参考文献:

1.Joulin, Armand, et al. "Bag of Tricks forEfficient Text Classification." Proceedings of the 15th Conferenceof the European Chapter of the Association for Computational Linguistics:Volume 2, Short Papers. Vol. 2. 2017.

2.Iyyer, Mohit, et al. "Deep unorderedcomposition rivals syntactic methods for text classification." Proceedingsof the 53rd Annual Meeting of the Association for Computational Linguistics andthe 7th International Joint Conference on Natural Language Processing (Volume1: Long Papers). Vol. 1. 2015.

3.Kim, Yoon. "Convolutional Neural Networksfor Sentence Classification." Proceedings of the 2014 Conferenceon Empirical Methods in Natural Language Processing (EMNLP). 2014.

4.Yang, Zichao, et al. "Hierarchicalattention networks for document classification." Proceedings of the2016 Conference of the North American Chapter of the Association forComputational Linguistics: Human Language Technologies. 2016.

5.Johnson, Rie, and Tong Zhang. "Deeppyramid convolutional neural networks for text categorization." Proceedingsof the 55th Annual Meeting of the Association for Computational Linguistics(Volume 1: Long Papers). Vol. 1. 2017.

关于作者

曾彦能:达观数据NLP算法工程师,负责达观数据NLP深度学习算法的研究、优化,以及在文本挖掘系统中的具体应用。对文本分类,序列标注模型有深入的研究。曾作为主要成员之一代表达观数据参加2018中国"法研杯" 法律智能挑战赛获得单项三等奖。

AI Challenger 2018 细粒度用户评论情感分析 fastText Baseline

Deep Learning Specialization on Coursera

上一篇《AI Challenger 2018 进行时》文尾我们提到 AI Challenger 官方已经在 GitHub 上提供了多个赛道的 Baseline: AI Challenger 2018 Baseline ,其中文本挖掘相关的3个主赛道均有提供,非常适合用来学习:英中文本机器翻译的 baseline 就直接用了Google官方基于Tensorflow实现的Tensor2Tensor跑神经网络机器翻译Transformer模型,这个思路是我在去年《AI Challenger 2017 奇遇记》里的终极方案,今年已成标配;细粒度用户评论情感分析提供了一个基于支持向量机(SVM)的多分类模型 baseline;观点型问题阅读理解提供一个深度学习模型 baseline , 基于pytorch实现论文《Multiway Attention Networks for Modeling Sentence Pairs》里的思路。

本次 AI Challenger 2018, 除了英中文本机器翻译,另一个我比较关注的赛道是: 细粒度用户评论情感分析。情感分析是自然语言处理里面的一个经典任务,估计很多同学入门NLP的时候都玩过 IMDB Movie Reviews Dataset , 这个可以定义为一个二分类的情感分类问题。不过这次 AI Challenger 的细粒度用户评论情感分析问题,并不是这么简单:
继续阅读

AI Challenger 2018 进行时

Deep Learning Specialization on Coursera

之前写过一篇《AI Challenger 2017 奇遇记》,记录了去年参加 AI Challenger 英中机器文本翻译比赛和英中机器同声传译比赛的过程,得到了一些反馈,特别是一些同学私下留言希望共享语料做科研用,但是限于去年比赛AI Challenger官方的约定,无法私下分享。不过好消息是,AI Challenger 2018 新赛季已经于8月29号启动,总奖金高达300万人民币,单个赛道冠军奖金最高到40万人民币。新赛季英中机器翻译文本大赛继续,提供了一批新的语料,中英双语句对规模大致到了1千3百万句对的水平,真的很赞。

我之前没有参加这类数据竞赛的经验,去年因为做 AIpatent专利机器翻译 产品的缘故,参加了 AI Challenger 2017 两个与机器翻译相关的赛道,并且侥幸进了英中机器同声传译比赛的 Top 5,过程中最大的收获其实是 follow 了一轮最新的神经网络机器翻译模型和试用了一些相关的NMT开源工具,另外也跟踪了机器翻译相关的论文,了解了当前机器翻译的进展情况,这些对于我的工作还是有相当帮助的。

10年前读研的时候,没有MOOC,没有Kaggle,也没有这么多开源的深度学习平台和工具,有时候不得不感慨,对于搞数据挖掘的同学来说,这是最好的时代。对于还在校学习的同学,如果实验室的任务不重,强烈建议参加类似 AI Challenger, Kaggle 这样的比赛,这可能是除了实习之外,又一个很好的积累实战经验的方法之一。在 NLPJob ,我们已经发现有一些招聘方加了一条加分项,例如:有Kaggle比赛获奖或者其他竞赛获奖的优先。而类似的,我们也发现很多同学的简历中参加Kaggle, 天池大数据等竞赛的经历逐渐成了标配。面向校招,在校同学缺乏实战经验,如果又没有一些很好的实验室项目或者实习经历作为筹码,那么参加这类比赛不失为一个很好的简历补充方式。

以下选自 AI Challenger 2018 的相关官方介绍,其中五大主赛道有三个与自然语言处理相关,可见NLP是多么的难。

继续阅读

逻辑回归模型算法研究与案例分析

Deep Learning Specialization on Coursera

逻辑回归模型算法研究与案例分析

(白宁超  2018年9月11日11:37:17)

导读:逻辑回归(Logistic regression)即逻辑模型,属于常见的一种分类算法。本文将从理论介绍开始,搞清楚什么是逻辑回归、回归系数、算法思想、工作原理及其优缺点等。进一步通过两个实际案例深化理解逻辑回归,以及在工程应用进行实现。(本文原创,转载必须注明出处: 决策树模型算法研究与案例分析)

继续阅读

深度 | 朴素贝叶斯模型算法研究与实例分析

Deep Learning Specialization on Coursera

深度 | 朴素贝叶斯模型算法研究与实例分析

(白宁超 2018年9月3日15: 56:20)

导读:朴素贝叶斯模型是机器学习常用的模型算法之一,其在文本分类方面简单易行,且取得不错的分类效果。所以很受欢迎,对于朴素贝叶斯的学习,本文首先介绍理论知识即朴素贝叶斯相关概念和公式推导,为了加深理解,采用一个维基百科上面性别分类例子进行形式化描述。然后通过编程实现朴素贝叶斯分类算法,并在屏蔽社区言论、垃圾邮件、个人广告中获取区域倾向等几个方面进行应用,包括创建数据集、数据预处理、词集模型和词袋模型、朴素贝叶斯模型训练和优化等。然后结合复旦大学新闻语料进行朴素贝叶斯的应用。最后,大家熟悉其原理和实现之后,采用机器学习sklearn包进行实现和优化。由于篇幅较长,采用理论理解、案例实现、sklearn优化三个部分进行学习。(本文原创,转载必须注明出处:朴素贝叶斯模型算法研究与实例分析)

继续阅读

实现 | 朴素贝叶斯模型算法研究与实例分析

Deep Learning Specialization on Coursera

实现 | 朴素贝叶斯模型算法研究与实例分析

(白宁超 2018年9月2日 11: 16:31)

 

导读:朴素贝叶斯模型是机器学习常用的模型算法之一,其在文本分类方面简单易行,且取得不错的分类效果。所以很受欢迎,对于朴素贝叶斯的学习,本文首先介绍理论知识即朴素贝叶斯相关概念和公式推导,为了加深理解,采用一个维基百科上面性别分类例子进行形式化描述。然后通过编程实现朴素贝叶斯分类算法,并在屏蔽社区言论、垃圾邮件、个人广告中获取区域倾向等几个方面进行应用,包括创建数据集、数据预处理、词集模型和词袋模型、朴素贝叶斯模型训练和优化等。然后结合复旦大学新闻语料进行朴素贝叶斯的应用。最后,大家熟悉其原理和实现之后,采用机器学习sklearn包进行实现和优化。由于篇幅较长,采用理论理解、案例实现、sklearn优化三个部分进行学习。(本文原创,转载必须注明出处:朴素贝叶斯模型算法研究与实例分析)

继续阅读

理论 | 朴素贝叶斯模型算法研究与实例分析

Deep Learning Specialization on Coursera

理论 | 朴素贝叶斯模型算法研究与实例分析

(白宁超 2018年9月4日10:00:31)

导读:朴素贝叶斯模型是机器学习常用的模型算法之一,其在文本分类方面简单易行,且取得不错的分类效果。所以很受欢迎,对于朴素贝叶斯的学习,本文首先介绍理论知识即朴素贝叶斯相关概念和公式推导,为了加深理解,采用一个维基百科上面性别分类例子进行形式化描述。然后通过编程实现朴素贝叶斯分类算法,并在屏蔽社区言论、垃圾邮件、个人广告中获取区域倾向等几个方面进行应用,包括创建数据集、数据预处理、词集模型和词袋模型、朴素贝叶斯模型训练和优化等。然后结合复旦大学新闻语料进行朴素贝叶斯的应用。最后,大家熟悉其原理和实现之后,采用机器学习sklearn包进行实现和优化。由于篇幅较长,采用理论理解、案例实现、sklearn优化三个部分进行学习。(本文原创,转载必须注明出处:朴素贝叶斯模型算法研究与实例分析)

继续阅读

KNN模型算法研究与案例分析

Deep Learning Specialization on Coursera

KNN模型算法研究与案例分析

(白宁超 2018年8月30日11:46:14)

导读:机器学习算法中KNN属于比较简单的典型算法,既可以做聚类又可以做分类使用。本文通过一个模拟的实际案例进行讲解。整个流程包括:采集数据、数据格式化处理、数据分析、数据归一化处理、构造算法模型、评估算法模型和算法模型的应用。(本文原创,转载必须注明出处)

继续阅读

决策树模型算法研究与案例分析

Deep Learning Specialization on Coursera

决策树模型算法研究与案例分析

(白宁超 2018年8月30日11:46:14)

导读:决策树算法是一种基本的分类与回归方法,是最经常使用的算法之一。决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是基于规则的集合。本文首先介绍决策树定义、工作原理、算法流程、优缺点等,然后结合案例进行分析。(本文原创,转载必须注明出处)

继续阅读