一些常见的机器学习模型

一、词袋模型与one-hot编码:

词袋模型是个在自然语言处理和信息检索(IR)下被简化的表达模型。此模型下,一段文本可以用一个装着这些词的袋子来表示,这种表示方式不考虑文法以及词的顺序,只考虑所有的词的出现频率,每个词都是独立的。词袋模型本质是一种用机器学习算法对文本进行建模时表示文本数据的方法,也是 ngram 中的 unigram。

如:

一些常见的机器学习模型_第1张图片

有了词汇表,我们就可以根据词出现的次数来表示原来的两句话:     

一些常见的机器学习模型_第2张图片

one-hot即独热编码实际上在特征提取上是属于词袋模型,它使用使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。如对于西瓜数据集,我提取了根蒂与敲声两个特征使用one-hot编码进行测试,

一些常见的机器学习模型_第3张图片

最终得到如下编码:

一些常见的机器学习模型_第4张图片

它能解决分类器处理离散数据困难的问题,还能在一定程度上起到了扩展特征的作用。但它并不考虑词与词之间的顺序问题,同时由于在文本中,词的顺序是一个很重要的问题,但one-hot是基于词与词之间相互独立的情况下的,在多数情况中,词与词之间应该是相互影响的,这样就会丢失原有的文本信息。而且one-hot编码得到的特征是离散的,稀疏的,从而会带来维度灾难。

二、词频-逆文档频度(TF-IDF):

TF-IDF是一种用于资讯检索与文本挖掘的常用加权技术,可以用来评估一个词对于一个文档集或语料库中某个文档的重要程度。

TF(Term Frequency)即词频,对于某个词来说,如果它很重要,它应该在这篇文章中多次出现。

IDF(Inverse Document Frequency)即逆文档频率,出现频率最高的词就是这篇文档的关键词,但是一篇文章中出现频率最高的词肯定是’……这样的词,这些词显然不能反应文章的意思,此时就需要对每个词加一个权重,最常见的词如""""""给予最小的权重,较少见的但能反应这篇文章意思的词给予较大的权重,这个权重叫做逆文档频率。

而将TFIDF这两个值相乘,就得到了一个词的TF-IDF值。

某个词对文章的重要性越高,它的TF-IDF值就越大。所以,排在最前面的几个词,就是这篇文章的关键词。但总体来说,TF-IDF算法的优点是简单快速,结果比较符合实际情况。缺点是,单纯以"词频"衡量一个词的重要性,不够全面,有时重要的词可能出现次数并不多。而且,这种算法无法体现词的位置信息,出现位置靠前的词与出现位置靠后的词,都被视为重要性相同,这会导致一些更有用的特征被忽略。

三、WORD2VEC词向量模型:

word2vec是用一个一层的神经网络,是把one-hot形式的稀疏词向量映射成为一个n维的稠密向量的过程。在 NLP 中,把 x 看做一个句子里的一个词语,y 是这个词语的上下文词语,那么这个模型的目的,就是判断 (x,y) 这个样本,是否符合自然语言的法则。而Word2vec 正是来源于这个思想,但它的最终目的,不是要把函数映射训练得多么完美,而是只关心模型训练完后的副产物——模型参数。并将这些参数,作为输入 x 的某种向量化的表示,这个向量便叫做词向量。word2vec里面有两个重要的模型-CBOW模型与Skip-gram模型:

一些常见的机器学习模型_第5张图片

word2vec的思路与自编码器思路比较相似,都是先基于训练数据构建一个神经网络。当这个网络训练好之后,并不是利用这个训练好的网络处理新任务,而真正需要的是这个模型通过训练数据所学得的参数,例如隐层的权重矩阵。word2vec算法每次迭代要通过梯度下降更新两个矩阵:隐藏层系数矩阵W1和输出层系数矩阵W2,如果词汇量V很大的时候,每次更新矩阵就要消耗巨大的资源,特别的是W2,还需要计算梯度。为了提高效率,word2vec有两种优化策略:Hierarchical SoftmaxNegative Sampling。这两种策略出发点一致:不再显式使用W2矩阵,即不再完全计算或更新W2矩阵。

四、MultinomialNB多项式朴素贝叶斯:

朴素贝叶斯的算法分成以下两步:基于条件独立假设,计算联合分布和基于贝叶斯定理,针对输入x,求出后验概率最大的输出y。朴素贝叶斯算法是基于贝叶斯定理和特征条件独立假设的分类算法。贝叶斯定理其实就是一个非常简单的公式,如下:

多项式分布来源于统计学中的多项式实验,这种实验可以具体解释为:实验包括n次重复试验,每项试验都有同的可能结果。在任何给定的试验中,特定结果发生的概率是变的。在分类算法里面应用,可以转换成下面的表达式:

一些常见的机器学习模型_第6张图片

scikit-learn库,根据特征数据的先验分布不同,提供了5种不同的朴素贝叶斯分类算法,分别是伯努利朴素贝叶斯,类朴素贝叶斯,高斯朴素贝叶斯、多项式朴素贝叶斯、补充朴素贝叶斯。

对于高斯朴素贝叶斯而言,适合用于特征变量是连续变量,符合高斯分布的数据。比如说人的身高,物体的长度。这种模型假设特征符合高斯分布。

多项式朴素贝叶斯,适合用于特征变量是离散变量,符合多项分布的数据。在文档分类中特征变量体现在一个单词出现的次数,或者是单词的 TF-IDF 值等,这个模型假设特征复合多项式分布,是一种非常典型的文本分类模型,模型内部带有平滑参数。

五、SVM支持向量机

SVM即支持向量机模型,它本质上是特征空间中最大化间隔的线性分类器,是一种二分类模型。以二维平面为例,就是找一条直线,把两堆不同的点分开。

一些常见的机器学习模型_第7张图片一些常见的机器学习模型_第8张图片

但由于这种直线可能有无数条,所以需要选择最好的一条。支持向量机通过对数据进行二元分类,给出最大边距超平面作为决策边界。

SVM 想要的就是找到各类样本点到超平面的距离最远,也就是找到最大间隔超平面。

对于支持向量机的两个参数C和σ: C=1/λ

  1. 当C较大时,相当于λ较小,可能会导致过拟合,高方差;
  2. 当C 较小时,相当于λ较大,可能会导致低拟合,高偏差;
  3. 当σ较大时,可能会导致低方差,高偏差;
  4. 当σ较小时,可能会导致低偏差,高方差。

同时在SVM中有一个极为重要的部分称之为核函数,因为低维空间映射到高维空间后维度可能会很大,如果将全部样本的点乘全部计算好,这样的计算量太大了,而引入核函数一方面减少了我们计算量,另一方面也减少了我们存储数据的内存使用量。在SVM中常见的核函数有线性核函数,多项式核函数与高斯核函数。

优点:

  1. 有严格的数学理论支持,可解释性强,不依靠统计方法,从而简化了通常的分类和回归问题;
  2. 能找出对任务至关重要的关键样本(即:支持向量);
  3. 采用核技巧之后,可以处理非线性分类/回归任务;
  4. 最终决策函数只由少数的支持向量所确定,计算的复杂性取决于支持向量的数目,而不是样本空间的维数,这在某种意义上避免了“维数灾难”。

缺点:

当支持向量的数量较大时,预测计算复杂度较高。

六、CNN卷积神经网络:

CNN是一种专门用来处理具有类似网格结构的数据的神经网络,它更擅长处理图像特别是大图像的相关机器学习问题。卷积网络是指那些至少在网络的一层中使用卷积运算来替代一般的矩阵乘法运算的神经网络。

CNN由五种结构组成,分别为输入层,卷积层,池化层,全连接层,Softmax层输出:

一些常见的机器学习模型_第9张图片

卷积层是构建卷积神经网络的核心层,它产生了网络中大部分的计算量。一个卷积神经网络的基本流程可以概括为:

卷积神经网络的优点是神经元之间共享卷积核,适合处理高维数据,而且无需手动选取特征,训练好权重,即得特征分类效果好。但缺点是需要调参,需要大样本量,而且并不知道没个卷积层到底提取到的是什么特征,对于相关参数为什么好并不能够人为的做出解释。

七、LSTM 长短期记忆网络

LSTM也即长短期记忆网络,它是一种特殊的循环神经网络,主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的RNNLSTM能够在更长的序列中有更好的表现。标准的RNN重复模块链结构为:

一些常见的机器学习模型_第10张图片

LSTM也具有这种链式结构,但是它的重复单元不同于标准RNN网络里的单元只有一个网络层,它的内部有四个网络层:

一些常见的机器学习模型_第11张图片

 LSTM网络能通过一种被称为门的结构对细胞状态进行删除或者添加信息,门能够有选择性的决定让哪些信息通过,而其中门的结构就是sigmoid层和一个点乘操作的组合。因为sigmoid层的输出是0-1的值,这代表有多少信息能够流过sigmoid层,0表示都不能通过,1表示都能通过。一个LSTM里面包含三个门来控制细胞状态。

总而言之,通过门控状态来控制传输状态,记住需要长时间记忆的,忘记不重要的信息;而不像普通的RNN那样只能有一种记忆叠加方式。对很多需要“长期记忆”的任务如具有前后关系的文本数据来建模来说是比较好的。但同时由于LSTM引入了很多内容,导致参数变多,也使得训练难度加大了很多。

——这是当时的报告,可能存在很多参考内容,如有侵权请联系我删除

你可能感兴趣的:(机器学习,人工智能)