机器学习算法简单汇总

1 EM算法

1.1 算法原理

方法:利用了凸函数Jensen不等式,即Jensen不等式表述如下:E(f(X))>= f(EX).
EM可以看作是J的坐标上升法,E步固定 θ ,优化Q,M步固Q,优化 θ

最大期望(EM)算法是在概率(probabilistic)模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型依赖于无法观测的隐藏变量(Latent Variable)。最大期望经常用在机器学习和计算机视觉的数据聚类(Data Clustering)领域。

最大期望算法经过两个步骤交替进行计算:

第一步是计算期望(E),利用对隐藏变量的现有估计值,计算其最大似然估计值;

第二步是最大化(M),最大化在 E 步上求得的最大似然值来计算参数的值。
M 步上找到的参数估计值被用于下一个 E 步计算中,这个过程不断交替进行。

应用:主要用于从不完整的数据中计算最大似然估计。后来经过其他学者的发展,这个算法也被用于聚类等应用。
EM算法有很多的应用,最广泛的就是GMM混合高斯模型、聚类、HMM等等

可以说EM就是为解决数据缺失问题而生的,EM算法的主要目的是提供一个简单的迭代算法计算后验密度函数,它的最大优点是简单和稳定,但也容易陷入局部最优

2 Adaboost 算法

Adaboost算法,自适应增强。它的自适应在于:前一个基本分类器分错的样本会得到加强,加权后的全体样本再次被用来训练下一个基本分类器,同时在每一轮中加入一个新的弱分类器,直到达到某个预定的组都小的误差率或者达到预先指定的最大迭代次数。(三个臭皮匠顶个诸葛亮)

具体来说,Adaboost算法总共分三步:

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

Alt text

其中at表示最后H(x)在最终分类器中的重要程度。(目的:得到基本分类器在最终分类器的所占权重)。

误差率在迭代过程中逐渐较小!!

解释:
提高错误点的权值,当下一次分类器再次分错了这些点之后,会提高整体的错误率,这样就导致 a 变的很小,最终导致这个分类器在整个混合分类器的权值变低。也就是说,这个算法让优秀的分类器占整体的权值更高,而挫的分类器权值更低。

优点:
1、很好的利用了弱分类器进行级联。

2、可以将不同的分类算法作为弱分类器。

3、AdaBoost具有很高的精度。

4、相对于bagging算法和Random Forest算法,AdaBoost充分考虑的每个分类器的权重。
缺点:
1、AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定。

2、数据不平衡导致分类精度下降。

3、训练比较耗时,每次重新选择当前分类器最好切分点。
应用场景:
1)用于二分类或多分类的应用场景

2)用于做分类任务的baseline
  无脑化,简单,不会overfitting,不用调分类器
 
3)用于特征选择(feature selection)

4)Boosting框架用于对badcase的修正
  只需要增加新的分类器,不需要变动原有分类器

3 k-means 算法

相异度用通俗的话来讲,就是两个东西差异有多大。一般是用距离来做标度。共有三个计算距离公式。
闵可夫斯基距离:

dismk(xi,xj)=(u=1n|xiuxju|p)1p

欧式距离:

dised(xi,xj)=(u=1n|xiuxju|2)12

曼哈顿距离:

disman(xi,xj)=u=1n|xiuxju|

欧氏距离和曼哈顿距离可以看做是闵可夫斯基距离在p=2和p=1下的特例。另外这三种距离都可以加权,这个很容易理解,不再赘述。

下面要说一下标量的规格化问题。上面这样计算相异度的方式有一点问题,就是取值范围大的属性对距离的影响高于取值范围小的属性。例如上述例子中第三个属性的取值跨度远大于前两个,这样不利于真实反映真实的相异度,为了解决这个问题,一般要对属性值进行规格化。所谓规格化就是将各个属性值按比例映射到相同的取值区间,这样是为了平衡各个属性对距离的影响。通常将各个属性均映射到[0,1]区间,映射公式为:

ai=aimin(ai)max(ai)min(ai)

其中max(ai)和min(ai)表示所有元素项中第i个属性的最大值和最小值。例如,将示例中的元素规格化到[0,1]区间后,就变成了X’={1,0,1},Y’={0,1,0},重新计算欧氏距离约为1.732。

k-means算法步骤:
1、从D中随机取k个元素,作为k个簇的各自的中心。

2、分别计算剩下的元素到k个簇中心的相异度,将这些元素分别划归到相异度最低的簇。

3、根据聚类结果,重新计算k个簇各自的中心,计算方法是取簇中所有元素各自维度的算术平均 数。

4、将D中全部元素按照新的中心重新聚类。

5、重复第4步,直到聚类结果不再变化。

6、将结果输出。

适用范围及缺陷:
时间复杂度:O(tKmn),其中,t为迭代次数,K为簇的数目,m为记录数,n为维数
空间复杂度:O((m+K)n),其中,K为簇的数目,m为记录数,n为维数
适用于大数据集合,伸缩性好。
缺陷: 需要事先确定簇数k和初始聚类中心,还经常以局部最优结束,对噪声和孤立点敏感,不适用于发现非凸面形状的簇过大小差别很大的簇。

EM算法是像是K-means算法的应用场景。因为k-means总是陷入局部最优,而且对于非凸函数不适用。同样是聚类。

4 混合高斯模型算法(GMM算法)

GMM算法k-means算法的比较
1.EM算法
GMM算法是EM算法族的一个具体例子。
EM算法解决的问题是:要对数据进行聚类,假定数据服从杂合的几个概率分布,分布的具体参数未知,涉及到的随机变量有两组,其中一组可观测另一组不可观测。现在要用最大似然估计得到各分布参数。
如果涉及的两组随机变量都是可观测的,问题就立即可以解决了,对似然函数求取最大值就能得到分布参数的解。
EM算法先为所需求取的分布参数赋初值,使得能算出隐藏变量的期望;进而用隐藏变量的期望和可观测变量的数据对分布参数的似然函数求最大值,得到一组解从而更新分布参数。然后用更新过的分布参数算出隐含变量的期望,再用这个期望与可观测数据进行分布参数的更新…
即:EM算法包括隐藏变量期望计算(E-step)和似然函数最大值计算(M-step)两个过程,一开始为分布参数赋一个初始值,然后迭代地执行E-step和M-step,直到算法收敛。

2.GMM算法
GMM算法作为EM算法族的一个例子,它指定了各个参与杂合的分布都是高斯分布,即分布参数表现为均值Mu和方差Sigma。通过EM算法作为计算使用的框架,迭代地算出各个高斯分布的参数。

3.GMM和k-means的比较
相同点
都是迭代执行的算法,且迭代的策略也相同:算法开始执行时先对需要计算的参数赋初值,然后交替执行两个步骤,一个步骤是对数据的估计(k-means是估计每个点所属簇;GMM是计算隐含变量的期望;);第二步是用上一步算出的估计值重新计算参数值,更新目标参数(k-means是计算簇心位置;GMM是计算各个高斯分布的中心位置和协方差矩阵)
不同点
1)需要计算的参数不同:k-means是簇心位置;GMM是各个高斯分布的参数
2)计算目标参数的方法不同:k-means是计算当前簇中所有元素的位置的均值;GMM是基于概率的算法,是通过计算似然函数的最大值实现分布参数的求解的

猜你喜欢

转载自blog.csdn.net/huanghui147258369/article/details/64175807