CICC科普栏目|17个机器进修的常用算法

2周前 (02-13 08:05)阅读1回复0
小强
小强
  • 管理员
  • 注册排名8
  • 经验值130130
  • 级别管理员
  • 主题26026
  • 回复0
楼主

来源:图灵人工智能

根据数据类型的差别,对一个问题的建模有差别的体例。在机器进修或者人工智能范畴,人们起首会考虑算法的进修体例。在机器进修范畴,有几种次要的进修体例。将算法根据进修体例分类是一个不错的设法,如许能够让人们在建模和算法抉择的时候考虑能根据输进数据来抉择最适宜的算法来获得更好的成果。

1. 监视式进修:

2. 非监视式进修:

展开全文

在非监视式进修中,数据其实不被特殊标识,进修模子是为了揣度出数据的一些内在构造。常见的利用场景包罗联系关系规则的进修以及聚类等。常见算法包罗Apriori算法以及k-Means算法。

3. 半监视式进修:

在此进修体例下,输进数据部门被标识,部门没有被标识,那种进修模子能够用来停止揣测,但是模子起首需要进修数据的内在构造以便合理的组织数据来停止揣测。利用场景包罗分类和回回,算法包罗一些对常用监视式进修算法的延伸,那些算法起首试图对未标识数据停止建模,在此根底上再对标识的数据停止揣测。如图论推理算法(Graph Inference)或者拉普拉斯撑持向量机(Laplacian SVM.)等。

4. 强化进修:

在那种进修形式下,输进数据做为对模子的反应,不像监视模子那样,输进数据仅仅是做为一个查抄模子对错的体例,在强化进修下,输进数据间接反应到模子,模子必需对此立即做出调整。常见的利用场景包罗动态系统以及机器人掌握等。常见算法包罗Q-Learning以及时间差进修(Temporal difference learning)

5. 算法类似性

根据算法的功用和形式的类似性,我们能够把算法分类,好比说基于树的算法,基于神经收集的算法等等。当然,机器进修的范畴十分浩荡,有些算法很难明白回类到某一类。而关于有些分类来说,统一分类的算法能够针对差别类型的问题。那里,我们尽量把常用的算法根据最随便理解的体例停止分类。

6. 回回算法:

回回算法是试图摘用对误差的权衡来摸索变量之间的关系的一类算法。回回算法是统计机器进修的利器。在机器进修范畴,人们说起回回,有时候是指一类问题,有时候是指一类算法,那一点经常会使初学者有所猜疑。常见的回回算法包罗:最小二乘法(Ordinary Least Square),逻辑回回(Logistic Regression),逐渐式回回(Stepwise Regression),多元自适应回回样条(Multivariate Adaptive Regression Splines)以及当地散点光滑估量(Locally Estimated Scatterplot Smoothing)

7. 基于实例的算法

基于实例的算法经常用来对决策问题成立模子,如许的模子经常先拔取一批样本数据,然后根据某些近似性把新数据与样本数据停止比力。通过那种体例来觅觅更佳的婚配。因而,基于实例的算法经常也被称为“赢家通食”进修或者“基于记忆的进修”。常见的算法包罗 k-Nearest Neighbor(KNN), 进修矢量量化(Learning Vector Quantization, LVQ),以及自组织映射算法(Self-Organizing Map , SOM)

8. 正则化办法

正则化办法是其他算法(凡是是回回算法)的延伸,根据算法的复杂度对算法停止调整。正则化办法凡是对简单模子予以奖励而对复杂算法予以赏罚。常见的算法包罗:Ridge Regression,Least Absolute Shrinkage and Selection Operator(LASSO),以及弹性收集(Elastic Net)。

9. 决策树进修

决策树算法根据数据的属性摘用树状构造成立决策模子, 决策示范型经常用来处理分类和回回问题。常见的算法包罗:分类及回回树(Classification And Regression Tree, CART), ID3 (Iterative Dichotomiser 3), C4.5, Chi-squared Automatic Interaction Detection(CHAID), Decision Stump, 随机丛林(Random Forest), 多元自适应回回样条(MARS)以及梯度推进机(Gradient Boosting Machine, GBM)

10. 贝叶斯办法

贝叶斯办法算法是基于贝叶斯定理的一类算法,次要用来处理分类和回回问题。常见算法包罗:纯朴贝叶斯算法,均匀单依靠估量(Averaged One-Dependence Estimators, AODE),以及Bayesian Belief Network(BBN)。

11. 基于核的算法

基于核的算法中最闻名的莫过于撑持向量机(SVM)了。基于核的算法把输进数据映射到一个高阶的向量空间, 在那些高阶向量空间里, 有些分类或者回回问题可以更随便的处理。常见的基于核的算法包罗:撑持向量机(Support Vector Machine, SVM), 径向基函数(Radial Basis Function ,RBF), 以及线性判别阐发(Linear Discriminate Analysis ,LDA)等

12.聚类算法

聚类,就像回回一样,有时候人们描述的是一类问题,有时候描述的是一类算法。聚类算法凡是根据中心点或者分层的体例对输进数据停止回并。所以的聚类算法都试图找到数据的内在构造,以便根据更大的配合点将数据停止回类。常见的聚类算法包罗 k-Means算法以及期看更大化算法(Expectation Maximization, EM)。

13. 联系关系规则进修

联系关系规则进修通过觅觅最可以阐明数据变量之间关系的规则,来找出大量多元数据集中有用的联系关系规则。常见算法包罗 Apriori算法和Eclat算法等。

14. 人工神经收集

人工神经收集算法模仿生物神经收集,是一类形式婚配算法。凡是用于处理分类和回回问题。人工神经收集是机器进修的一个浩荡的分收,有几百种差别的算法。(此中深度进修就是此中的一类算法,我们会零丁讨论),重要的人工神经收集算法包罗:感知器神经收集(Perceptron Neural Network), 反向传递(Back Propagation), Hopfield收集,自组织映射(Self-Organizing Map, SOM)。进修矢量量化(Learning Vector Quantization, LVQ)

15. 深度进修

深度进修算法是对人工神经收集的开展。在近期博得了良多存眷, 特殊是百度也起头发力深度进修后, 更是在国内引起了良多存眷。 在计算才能变得日益廉价的今天,深度进修试图成立大得多也复杂得多的神经收集。良多深度进修的算法是半监视式进修算法,用来处置存在少量未标识数据的大数据集。常见的深度进修算法包罗:受限波尔兹曼机(Restricted Boltzmann Machine, RBN), Deep Belief Networks(DBN),卷积收集(Convolutional Network), 仓库式主动编码器(Stacked Auto-encoders)。

16. 降低维度算法

像聚类算法一样,降低维度算法试图阐发数据的内在构造,不外降低维度算法是以非监视进修的体例试牟利用较少的信息往返纳或者阐明数据。那类算法能够用于高维数据的可视化或者用来简化数据以便监视式进修利用。

常见的算法包罗:主成份阐发(Principle Component Analysis, PCA),偏最小二乘回回(Partial Least Square Regression,PLS), Sammon映射,多维标准(Multi-Dimensional Scaling, MDS), 投影逃踪(Projection Pursuit)等。

17. 集成算法:

集成算法用一些相对较弱的进修模子独登时就同样的样本停止操练,然后把成果整合起来停止整体揣测。集成算法的次要难点在于事实集成哪些独立的较弱的进修模子以及若何把进修成果整合起来。

那是一类十分强大的算法,同时也十分时髦。常见的算法包罗:Boosting, Bootstrapped Aggregation(Bagging), AdaBoost,堆叠泛化(Stacked Generalization, Blending),梯度推进机(Gradient Boosting Machine, GBM),随机丛林(Random Forest)。

常见机器进修算法优缺点:

纯朴贝叶斯:

1. 假设给出的特征向量长度可能差别,那是需要回一化为通长度的向量(那里以文天职类为例),好比说是句子单词的话,则长度为整个词汇量的长度,对应位置是该单词呈现的次数。

2. 计算公式如下:

此中一项前提概率能够通过纯朴贝叶斯前提独立展开。要重视一点就是 的计算办法,而由纯朴贝叶斯的前提假设可知, = ,因而一般有两种,一种是在类别为ci的那些样本集中,找到wj呈现次数的总和,然后除以该样本的总和;第二种办法是类别为ci的那些样本集中,找到wj呈现次数的总和,然后除以该样本中所有特征呈现次数的总和。

3. 假设 中的某一项为0,则其结合概率的乘积也可能为0,即2中公式的分子为0,为了制止那种现象呈现,一般情状下会将那一项初始化为1,当然为了包管概率相等,分母应对应初始化为2(那里因为是2类,所以加2,假设是k类就需要加k,术语上喊做laplace光滑, 分母加k的原因是使之称心全概率公式)。

纯朴贝叶斯的长处:对小规模的数据表示很好,合适多分类使命,合适增量式操练。

缺点:对输进数据的表达形式很灵敏。

决策树:决策树中很重要的一点就是抉择一个属性停止分枝,因而要重视一下信息增益的计算公式,并深进理解它。

信息熵的计算公式如下:

此中的n代表有n个分类类别(好比假设是2类问题,那么n=2)。别离计算那2类样本在总样本中呈现的概率p1和p2,如许就能够计算出未选中属性分枝前的信息熵。

如今选中一个属性xi用来停止分枝,此时分枝规则是:假设xi=vx的话,将样天职到树的一个分收;假设不相等则进进另一个分收。很显然,分收中的样本很有可能包罗2个类别,别离计算那2个分收的熵H1和H2,计算出分枝后的总信息熵H’=p1*H1+p2*H2.,则此时的信息增益ΔH=H-H’。以信息增益为原则,把所有的属性都测试一边,抉择一个使增益更大的属性做为本次分枝属性。

决策树的长处:计算量简单,可阐明性强,比力合适处置出缺失属性值的样本,可以处置不相关的特征;

缺点:随便过拟合(后续呈现了随机丛林,减小了过拟合现象)。

Logistic回回:Logistic是用来分类的,是一种线性分类器,需要重视的处所有:

1. logistic函数表达式为:

其导数形式为:

2. logsitc回回办法次要是用更大似然估量来进修的,所以单个样本的后验概率为:

到整个样本的后验概率:

此中:

通过对数进一步化简为:

3. 其实它的loss function为-l(θ),因而我们需使loss function最小,可摘用梯度下降法得到。梯度下降法公式为:

Logistic回回长处:

1. 实现简单

2. 分类时计算量十分小,速度很快,存储资本低;

缺点:

1. 随便欠拟合,一般准确度不太高

2. 只能处置两分类问题(在此根底上衍生出来的softmax能够用于多分类),且必需线性可分;

线性回回:

线性回回才是实正用于回回的,而不像logistic回回是用于分类,其根本思惟是用梯度下降法对最小二乘法形式的误差函数停止优化,当然也能够用normal equation间接求得参数的解,成果为:

而在LWLR(部分加权线性回回)中,参数的计算表达式为:

因为此时优化的是:

由此可见LWLR与LR差别,LWLR是一个非参数模子,因为每次停止回回计算都要遍历操练样本至少一次。

线性回回长处:实现简单,计算简单;

缺点:不克不及拟合非线性数据;

KNN算法:KNN即比来邻算法,其次要过程为:

1. 计算操练样本和测试样本中每个样本点的间隔(常见的间隔度量有欧式间隔,马氏间隔等);

2. 对上面所有的间隔值停止排序;

3. 选前k个最小间隔的样本;

4. 根据那k个样本的标签停止投票,得到最初的分类类别;

若何抉择一个更佳的K值,那取决于数据。一般情状下,在分类时较大的K值可以减小噪声的影响。但会使类别之间的边界变得模糊。一个较好的K值可通过各类启发式手艺来获取,好比,穿插验证。别的噪声和非相关性特征向量的存在会使K近邻算法的准确性减小。

近邻算法具有较强的一致性成果。跟着数据趋于无限,算法包管错误率不会超越贝叶斯算法错误率的两倍。关于一些好的K值,K近邻包管错误率不会超越贝叶斯理论误差率。

注:马氏间隔必然要先给出样本集的统计性量,好比均值向量,协方差矩阵等。关于马氏间隔的介绍如下:

KNN算法的长处:

1. 思惟简单,理论成熟,既能够用来做分类也能够用来做回回;

2. 可用于非线性分类;

3. 操练时间复杂度为O(n);

4. 准确度高,对数据没有假设,对outlier不灵敏;

缺点:

1. 计算量大;

2. 样本不服衡问题(即有些类此外样本数量良多,而其它样本的数量很少);

3. 需要大量的内存;

SVM:

要学会若何利用libsvm以及一些参数的调剂体味,别的需要理清晰svm算法的一些构想:

1. svm中的更优分类面是对所有样本的几何裕量更大(为什么要抉择更大间隔分类器,请从数学角度上阐明?网易深度进修岗位面试过程中有被问到。谜底就是几何间隔与样本的误分次数间存在关系:

,此中的分母就是样本到分类间隔间隔,分子中的R是所有样本中的最长向量值),即:

颠末一系列推导可得为优化下面原始目标:

2. 下面来看看拉格朗日理论:

能够将1中的优化目标转换为拉格朗日的形式(通过各类对偶优化,KKD前提),最初目标函数为:

我们只需要最小化上述目标函数,此中的α为原始优化问题中的不等式约束拉格朗日系数。

3. 对2中最初的式子别离w和b求导可得:

由上面第1式子能够晓得,假设我们优化出了α,则间接能够求出w了,即模子的参数搞定。而上面第2个式子能够做为后续优化的一个约束前提。

4. 对2中最初一个目标函数用对偶优化理论能够转换为优化下面的目标函数:

而那个函数能够用常用的优化办法求得α,进而求得w和b。

5. 根据事理,svm简单理论应该到此完毕。不外仍是要填补一点,即在揣测时有:

阿谁尖括号我们能够用核函数取代,那也是svm经常和核函数扯在一路的原因。

6. 最初是关于松弛变量的引进,因而原始的目标优化公式为:

此时对应的对偶优化公式为:

与前面的比拟只是α多了个上界。

SVM算法长处:

1. 可用于线性/非线性分类,也能够用于回回;

2. 低泛化误差;

3. 随便阐明;

4. 计算复杂度较低;

缺点:

1. 对参数和核函数的抉择比力灵敏;

2. 原始的SVM只比力擅长处理二分类问题;

Boosting:

次要以Adaboost为例,起首来看看Adaboost的流程图,如下:

从图中能够看到,在操练过程中我们需要操练出多个弱分类器(图中为3个),每个弱分类器是由差别权重的样本(图中为5个操练样本)操练得到(此中第一个弱分类器对应输进样本的权值是一样的),而每个弱分类器对最末分类成果的感化也差别,是通过加权均匀输出的,权值见上图中三角形里面的数值。那么那些弱分类器和其对应的权值是如何操练出来的呢?

下面通过一个例子来简单阐明,假设的是5个操练样本,每个操练样本的维度为2,在操练第一个分类器时5个样本的权重各为0.2. 重视那里样本的权值和最末操练的弱分类器组对应的权值α是差别的,样本的权重只在操练过程顶用到,而α在操练过程和测试过程都有用到。

如今假设弱分类器是带一个节点的简单决策树,该决策树会抉择2个属性(假设只要2个属性)的一个,然后计算出那个属性中的更佳值用来分类。

Adaboost的简单版本操练过程如下:

1. 操练第一个分类器,样本的权值D为不异的均值。通过一个弱分类器,得到那5个样本(请对应书中的例子来看,照旧是machine learning in action)的分类揣测标签。与给出的样本实在标签比照,就可能呈现误差(即错误)。假设某个样本揣测错误,则它对应的错误值为该样本的权重,假设分类准确,则错误值为0. 最初累加5个样本的错误率之和,记为ε。

2. 通过ε来计算该弱分类器的权重α,公式如下:

3. 通过α来计算操练下一个弱分类器样本的权重D,假设对应样天职类准确,则减小该样本的权重,公式为:

假设样天职类错误,则增加该样本的权重,公式为:

4. 轮回步调1,2,3来陆续操练多个分类器,只是其D值差别罢了。

测试过程如下:

输进一个样本到操练好的每个弱分类中,则每个弱分类都对应一个输出标签,然后该标签乘以对应的α,最初乞降得到值的符号即为揣测标签值。

Boosting算法的长处:

1. 低泛化误差;

2. 随便实现,分类准确率较高,没有太多参数能够调;

3. 缺点:

4. 对outlier比力灵敏;

聚类:

根据聚类思惟划分:

次要是因为在反常检测中,反常的样本数量十分少而一般样本数量十分多,因而不敷以进修到好的反常行为模子的参数,因为后面新来的反常样本可能完满是与操练样本中的形式差别。

EM算法:有时候因为样本的产生和隐含变量有关(隐含变量是不克不及看察的),而求模子的参数时一般摘用更大似然估量,因为含有了隐含变量,所以对似然函数参数求导是求不出来的,那时能够摘用EM算法来求模子的参数的(对应模子参数个数可能有多个),

EM算法一般分为2步:

E步:拔取一组参数,求出在该参数下隐含变量的前提概率值;

M步:连系E步求出的隐含变量前提概率,求出似然函数下界函数(素质上是某个期看函数)的更大值。

反复上面2步曲至收敛,公式如下所示:

M步公式中下界函数的推导过程:

EM算法一个常见的例子就是GMM模子,每个样本都有可能由k个高斯产生,只不外由每个高斯产生的概率差别罢了,因而每个样本都有对应的高斯散布(k个中的某一个),此时的隐含变量就是每个样本对应的某个高斯散布。

GMM的E步公式如下(计算每个样本对应每个高斯的概率):

更详细的计算公式为:

M步公式如下(计算每个高斯的比重,均值,方差那3个参数):

Apriori是联系关系阐发中比力早的一种办法,次要用来发掘那些频繁项聚集。其思惟是:

1. 假设一个项目聚集不是频繁聚集,那么任何包罗它的项目聚集也必然不是频繁聚集;

2. 假设一个项目聚集是频繁聚集,那么它的任何非空子集也是频繁聚集;

Aprioir需要扫描项目表多遍,从一个项目起头扫描,舍往掉那些不是频繁的项目,得到的聚集称为L,然后对L中的每个元素停止自组合,生成比前次扫描多一个项目标聚集,该聚集称为C,接着又扫描往掉那些非频繁的项目,反复…

看下面那个例子,元素项目表格:

假设每个步调不往掉非频繁项目集,则其扫描过程的树形构造如下:

在此中某个过程中,可能呈现非频繁的项目集,将其往掉(用暗影表达)为:

FP Growth是一种比Apriori更高效的频繁项发掘办法,它只需要扫描项目表2次。此中第1次扫描获适当个项目标频次,往掉不契合撑持度要求的项,并对剩下的项排序。第2遍扫描是成立一颗FP-Tree(frequent-patten tree)。

接下来的工做就是在FP-Tree长进行发掘,好比说有下表:

它所对应的FP_Tree如下:

然后从频次最小的单项P起头,找出P的前提形式基,用构造FP_Tree同样的办法来构造P的前提形式基的FP_Tree,在那棵树上找出包罗P的频繁项集。

依次从m,b,a,c,f的前提形式基上发掘频繁项集,有些项需要递回的往发掘,比力费事,好比m节点。

仅用于学术分享,版权属于原做者。

存眷公家号领会更多

会员申请 请在公家号内回复“小我会员”或“单元会员

欢送存眷中国批示与掌握学会媒体矩阵

CICC官方网站

CICC官方微信公家号

《批示与掌握学报》官网

国际无人系统大会官网

中国批示掌握大会官网

全国兵棋推演大赛

全国空中智能博弈大赛

搜狐号

一点号

0
回帖

CICC科普栏目|17个机器进修的常用算法 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息