前言

随着时代的发展,机器学习被用到了工业、学习和生活等各个方面,它在在模式识别、自然语言处理、数据挖掘、计算机视觉等方面发挥着不可替代的作用。

机器学习主要分为监督学习、无监督学习以及最近兴起的强化学习。监督学习为带标签的学习,是最常见的一部分,它以回归和分类为主。无监督学习为不带标签的学习,主要分为聚类和降维。强化学习是带奖励机制的一种学习。我们主要来介绍回归分类和聚类降维中最为核心的算法。由于篇幅的限制,我可能只会对这些算法最粗浅的部分进行简单地介绍,比如说SVM,我不会具体介绍其在回归和分类中对应的版本,我只会简单提一下它的主要思想。

需要提到的是,很多方法我们不能严格地将其分为回归算法或者分类算法,因为可能回归和分类用到了同一个方法的不同变种,比如说SVM,在回归中可能叫做SVR,在分类问题中叫做SVC。对于这类方法,我们可能会将其列入每一部分第三小节的其他,来单独讨论。

机器学习的算法非常多,在不同的领域的侧重点也不一样,比如说在图像和视频分析方面,主要用到概率图模型的相关方法,诸如马尔科夫随机场等等。因此,对于算法的介绍,我也只是提取最为经典和常见的机器学习算法,或者说我比较偏爱的机器学习算法来介绍,不全但都融入了我自己的思考。对于介绍到的算法,我们只抓住其最核心的部分和主要的思想,简单介绍其最粗浅的部分而不深究。

由于篇幅的限制,大小标题中列到的算法,有的可能只是一两句话带过,有的甚至就不会提到,之所以在标题上列到,主要是为了保持文章结构的完整性。我会按照我认为的算法的重要性,依次介绍每个方面的一个个算法,当达到了篇幅限制时,我会选择合适的机会终止,当然,这必将导致一些算法没有提到,空留一个标题。

监督学习

回归

线性回归

所谓的线性回归,就是要找一个线性的超平面,去尽可能地拟合各个样本点。在一维的情况下,如图所示:

机器学习算法概括

我们要寻找一条直线,让它尽可能地穿过这些点。“尽可能”可能有一些度量,比如说让误差平方和最小。
求解这条直线的方法有最小二乘方法等。
线性回归是一种简单但却使用的回归技术。

岭回归

lasso回归

分类

k最近邻分类

所谓物以类聚,人以群分,你的圈子基本决定了你的状态。我们可以用周围的邻居来判断自己的情况,基于这个思想,就有了k-NN算法。k近邻算法不仅可以用于分类,也可以用于回归,我这里将它放在了分类的条目下。

分类问题中,一个对象的分类是由其邻居的“多数表决”确定的,k个最近邻居(k为正整数,通常较小)中最常见的分类决定了赋予该对象的类别。若k=1,则该对象的类别直接由最近的一个节点赋予。无论是分类还是回归,衡量邻居的权重都非常有用,使较近邻居的权重比较远邻居的权重大。例如,一种常见的加权方案是给每个邻居权重赋值为1/d,其中d是到邻居的距离。这样会避免一些单纯计数带来的问题。

k参数的选择可以使用交叉验证和自助法等等。

k-近邻算法的缺点是对数据的局部结构非常敏感。

朴素贝叶斯分类

朴素贝叶斯真的很朴素,用到的仅仅只是贝叶斯公式。以二分类为例,它给定若干组的带标签的数据,当新给一组特征时,我们需要判断它属于哪一类。

我们通过比较这组特征下的条件概率P(标签1|{特征1,特征2,特征3})P(标签2|{特征1,特征2,特征3})大小来对其分类。条件概率的计算可通过贝叶斯公式来计算,即

P(标签i|{特征1,特征2,特征3})=P({特征1,特征2,特征3}|标签i)P(标签i)P({特征1,特征2,特征3})

我们假设特征之间是独立的,那么就有

P({特征1,特征2,特征3}|标签i)=P(特征1|标签i)P(特征2|标签i)P(特征3|标签i)P({特征1,特征2,特征3})=P(特征1)P(特征2|标签i)P(特征3)

这些量和P(标签i)都是可以通过统计已有的样本数据,用频率来概率得到。
注意要,使用朴素贝叶斯分类方法,我们假设了特征之间相互独立,看起来很有局限。事实上,我们在处理文本数据的时候,常常用到这种方法。

logistic回归

逻辑回归在有些书中也叫对数几率回归,常用于分类问题,特别是二分类问题。逻辑回归是线性回归的一个延伸,对于二分类问题,我们需要将回归的连续值搞成离散值,基本做法是看其是否大于零。那么参数如何选取呢?所谓的逻辑回归,就是我们在原有的线性回归的基础上,外套一个Sigmoid函数作为取值的概率,我们通过最大似然估计来估计参数。所谓的Sigmoid函数,它的表达式和图像如图所示,图像右端y的取值表示将线性回归的连续值按零点离散化。

机器学习算法概括

支持向量机

支持向量机,我们先说线性的情况,以可分的二维的二分类问题为例,它其实上就是寻找一根直线,将平面上的数据点正确地分为两类,并满足分割的间隔达到最大。如图所示,

机器学习算法概括

要分割(a)所示的数据点,显然(b)的分割间隔要大于(c)的分割间隔。这里可变参数是分割线(“决策面”)的斜率和截距。所谓的间隔就是分割线离两个数据集合的距离,它是用离它最近的一个点来衡量的。我们引两根平行于分割线的面,相切两个数据集,那么就形成了一个间隙。这个间隙内部不含任何的数据点。间隙边缘上的点称作支持向量。
如果将直线表示为wTx+b=0,那么合理的分割如图。
机器学习算法概括
通过数学推导,我们可以知道,这个问题其实就是求解如下的一个优化问题(wb是代求变量):

min12||w||2s.t.yi(wTxi+b)1,i=1,2,3,n.

其中yi{1,1},表示两类样本的标签。通过最优化的基本理论(拉格朗日对偶,KKT条件,SMO算法等),我们可以求解这个优化问题。

一般情况下,数据点不一定可以通过一个线性的超平面将其分开。那么我们可以将其映射到更高维的空间中,使其在高维的特征空间中线性可分,通过线性SVM方法将其分开。
线性情况下,最后的决策面的表达式可以表示为f(x)=i=1nαiyixi,x+b,这里的αi是原问题拉格朗日乘子系数。对应于高维特征空间,使用线性SVM方法,最后决策面的表达式为:

f(x)=i=1nαiyiΦ(xi),Φ(x)+b

这里的Φ是原始空间到高维空间的一个映射,比如说它可以是(x,y)(x,y,x2+y2)。因为升维可能造成计算量暴涨,我们寻求一种方法可以直接计算内积Φ(xi),Φ(x),即寻找一个函数k(xi,x)来表示Φ(xi),Φ(x),这种替换技巧叫做核技巧。因为核函数方法的存在,使得高维空间中的两个向量的内积可以直接计算,大大减少了计算量。

高维空间的决策平面用核函数来表达,那么高维空间中的对偶问题等也可以用核函数来表达,当使用SMO算法迭代求解时,计算量就会大大减小。简单地说,核方法通过用核函数表示高维空间中向量的内积,将原空间升维至高维空间和在高维空间中使用线性SVM方法两个步骤合成了一个步骤。所谓的升维,也可以理解为在原来线性基的基础上,添加一些非线性的基函数,使得分割线不再是直线。
常用的核函数为径向基函数,它的表达式为:

κ(x1,x2)=e||x1x2||22σ2

σ越小,非线性化程度越高。如果σ选得很小,则可以将任意的数据映射为线性可分。这有可能会过拟合问题。

其他

随机梯度下降

我们知道,在做有监督的问题中,有一个损失函数,用来衡量模型的好坏。在回归问题中,如果我们已经知道方程的形式,我们可以做出问题的损失函数。那么我们要做的就是寻找方程的最佳参数,即寻找参数,使得损失函数函数达到最小。乍一听,这就是个优化问题。当然可以对参数的各个分量求导,最后解方程组。问题是,你能确定最后的方程组好解?一般的数值解法有梯度下降法、牛顿法、拟牛顿方法以及信赖域方法等等。
梯度下降方法简单易行,可是当数据量比较大时,梯度下降的计算就特别大。为解决大数据量的优化求解,我们一般可以采用随机梯度下降。
所谓的随机梯度下降,就是相比梯度下将,我们不选择全部的数据点,而是每次随机选择一个或者若干个数据点来构建损失函数,接着再用梯度下降方法求解。看起来很不靠谱的样子,事实上多做几次这个操作,它是可以收敛的最优解的某个邻域的。

线性判别分析

所谓的线性判别分析,实际上是一种有监督的降维方法。之所以把它放在分类的标题下,是因为数据通过这种方式,在距离上有了更高的区分度,也可以说是为后续的分类做了降维处理。
线性判别分析,以二维数据点举例,就是要一条直线,使得数据点在这根直线上的投影满足类内方差尽可能小,类间距离尽可能大,如图所示。
机器学习算法概括
投影面的选择,往往会影响类内方差,和类间距离。显然图所示的右边一个图更能满足我们的要求。
机器学习算法概括

我们将类间距离的度量作为分子,类内距离的度量作为分母,形成一个目标函数,我们要做的就是最大化这个目标函数。利用广义瑞利商等一些基本的知识,我们就将问题转化为了求特征值的问题。

决策树

决策树,顾名思义就是像树一样不断分支。我们对每个特征,选择一定的条件进行判断,就可以将数据不断地分类,直到最后叶子节点满足一定的条件,比如说有同一个标签,那么这就是一棵决策树。举个例子,比如说西瓜好坏的判断,从数据中,我们可能会学习出如图所示的一棵决策树。
机器学习算法概括

分类问题,往往是给定若干组数据,每组数据有一些特征和标签。需要找一棵决策树,使得每组数据按照决策树路径走,最后尽可能地能走到使它正确分类的叶子节点中。一般来说,可能满足条件的决策树有很多,用于做判断特征选择的次序和特征判断条件(阈值设定不同等)的不同都会导致树的不同,我们要做的就是找一棵最好的树。在不同的算法中,“好”的标准往往不同。

比较常用的决策树有ID3、C4.5和分类回归树(CART),他们分别使用熵增益、信息增益和基尼指数来作为分类条件选择好坏的标准。C4.5是为解决ID3因偏向细小分割造成的过拟合问题的,CART方法的过拟合往往由剪枝方法来处理。

无监督学习

聚类

k均值

所谓的k-mean算法,就是要找到点的一个划分(假设分成k类),使得类内平方和达到最小。用数学来表述就是要求解下式表示的优化问题。

argminSi=1kxSi||xμi||2

算法的基本思想是迭代。首先选择k个点作为k个类中心,将所有点按距离中心的远近分配给k个类。接着计算k个类的重心作为新的类中心,继续前述的分配过程,直到中心不再改变,那么分类也不再改变。
容易想到,更新中心为重心步骤,类内距离平方是不增的,重新分配点的步骤距离也是不增,距离平方和有下界,故而算法必然是收敛的。
事实上,算法收敛到会收敛到一个局部最优值,初始点选择得不同,那么最终收敛到的结果可能就不同。

分层次聚类

谱聚类

高斯混合模型

EM算法可以形象地比喻鸡生蛋,蛋生鸡的过程。

降维

PCA降维

所谓的主成分分析,不过是在高维的空间中寻找一个低维的正交坐标系,比如说在三维空间中寻找一个二维的直角坐标系。那么这个二维的直角坐标系就会构成一个平面,将三维空间中的各个点在这个二维平面上做投影,就得到了各个点在二维空间中的一个表示,由此数据点就从三维降成了二维。

这个过程的关键在于,我们如何选取这个低维的坐标系,即坐标系原点在哪?各个轴朝哪个方向?一个原则就是使得各个点到到这个平面的距离平方和达到最小。由此,通过简单地数学推导,就能得到原点的表达公式和坐标系的各个基向量的表达公式。
下面以基于矩阵的视角写出PCA算法的算法流程,输入为p*N矩阵X,输出为d*N矩阵Y。矩阵的每一列都表示一个对象,每一行都表示对象的一个特征表示。
机器学习算法概括
选取了2000x1680的数据集进行了测试,选取降维后维数为20,其降维前后的图像(降维后的图像指的是投影点还原到原空间对应的坐标值重构出的图像)如下所示(选取第一个点为代表):

机器学习算法概括

LLE降维

当数据具备某些非线性结构,如流形结构时,我们希望降维后的数据仍然保持这些结构。那么就提出了LLE降维算法。
LLE (Locally linear embedding):在数据降维后仍然保留原始高维数据的拓扑结构,这种拓扑结构表现为数据点的局部邻接关系。
此算法我们首先要寻求每个数据点的k个最近邻,然后将当前数据点用k个最近邻线性表出,那么就有相对的权重系数。
我们希望数据在降维后数据点之间依然能保持这种线性表出的关系,并且在满足另外一些约束条件的前提下,我们很容易求得降维后的数据。
具体原理和公式网络上有很多人整理得很好,这里不提了。

下面时LLE算法的算法流程,输入为p*N矩阵X,输出为d*N矩阵Y。矩阵的每一列都表示一个对象,每一行都表示对象的一个特征表示。
机器学习算法概括

MDS和t-SNE

独立成分分析

独立成分分析的经典问题是“鸡尾酒会问题”(cocktail party problem)。该问题描述的是给定混合信号,如何分离出鸡尾酒会中同时说话的每个人的独立信号。当有N个信号源时,通常假设观察信号也有N个(例如N个麦克风或者录音机)。

等距特征映射

谱嵌入

其他方面

神经网络

我所理解的神经网络,无非就是向量和矩阵做乘法,对得到的向量加一个偏置后,外嵌套一个**函数,得到一个新的向量。对新的向量反复以上过程,就得到新的一层网络……最后的结果和最后的标签有偏差,我们通过链式法则等方式,调整权值矩阵,使偏差达到最小。训练多层神经网络的过程一般就叫做深度学习。
我们所需要考虑的细节就是矩阵的规模,**函数选什么,内存处理等等问题。

集成学习

bagging

Bagging的想法很简单,就是在训练集中均匀、有放回地抽取m个子集作为m个训练集,分别使用分类回归算法,可以得到m个模型,再通过取平均值、取多数票等方法,得到Bagging的结果。

Bagging算法可与其他分类、回归算法结合,提高其准确率、稳定性的同时,通过降低结果的方差,避免过拟合的发生。

boosting

“三个臭皮匠顶个诸葛亮”,弱分类器按准确率给予一定权重组合成一个强学习器,降低偏差,这就是boosting的基本思想。一个经典的提升算法例子是AdaBoost。

随机森林

在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。这个方法结合了bagging想法和随机子空间想法,建造决策树的集合。

概率图模型

概率图模型是用图论方法以表现数个独立随机变量之关系的一种建模法。其图中的任一节点为随机变量,若两节点间无边相接则意味此二变量彼此条件独立。两种常见的概率图模型是具有向性边的图及具无向性边的图。
概率图模型通过构造基于图的表达来描述多维空间上的概率分布。图的节点和边描述了该分布不同变量之间具有的条件独立性质的集合。根据图的有向性,概率图模型可以分成两大类,分别是贝叶斯网络和马尔可夫网络。这两类网络均具有因子化和条件独立的性质,但条件独立的类型和将分布因子化的方式有所不同。概率图模型在图像视频分析中用途很广。

贝叶斯网

一般而言,贝叶斯网络的有向无环图中的节点表示随机变量。连接两个节点的箭头代表此两个随机变量是具有因果关系或是非条件独立的,而两个节点间若没有箭头相互连接一起的情况就称其随机变量彼此间为条件独立。若两个节点间以一个单箭头连接在一起,表示其中一个节点是“因(parents)”,另一个是“果(descendants or children)”,两节点就会产生一个条件概率值。

举例来说,贝叶斯网络可用来表示疾病和其相关症状间的概率关系,倘若已知某种症状下,贝叶斯网络就可用来计算各种可能罹患疾病之发生概率。

马尔科夫随机场

马尔可夫随机场似贝叶斯网络用于表示依赖关系。但是,一方面它可以表示贝叶斯网络无法表示的一些依赖关系,如循环依赖。另一方面,它不能表示贝叶斯网络能够表示的某些关系,如推导关系。

马尔可夫随机场要求一个变量在前一个变量的条件下,和前一个变量之前所有变量的联合是条件独立,也就是要满足马尔可夫性质。

强化学习

APRIORI

Acknowledgement

references

[1] 周志华. 机器学习[M]. Qing hua da xue chu ban she, 2016.
[2] 李航. 统计学习方法[J]. 2012.
[3] 2002.Casella G, Berger R L. 统计推断[M]. 机械工业出版社, 2002.

相关文章:

  • 2022-12-23
  • 2021-12-06
  • 2022-01-10
  • 2021-09-21
  • 2021-06-29
  • 2018-07-30
  • 2022-12-23
  • 2022-02-13
猜你喜欢
  • 2021-08-09
  • 2021-01-30
  • 2021-09-27
  • 2021-09-29
相关资源
相似解决方案