机器学习分类简单介绍
一,从机器学习问题角度分类
我们先从机器学习问题本身分类的角度来看,我们可以分成下列类型的算法。
监督学习
机器学习中有一大部分的问题属于监督学习的范畴,简单口语化地说明,这类问题中,给定的训练样本中,每个样本的输入x都对应一个确定的结果y,我们需要训练出一个模型(数学上看是一个x→y的映射关系f),在未知的样本x′给定后,我们能对结果y′做出预测。
这里的预测结果如果是离散值(很多时候是类别类型,比如邮件分类问题中的垃圾邮件/普通邮件,比如用户会/不会购买某商品),那么我们把它叫做分类问题(classification problem);如果预测结果是连续值(比如房价,股票价格等等),那么我们把它叫做回归问题(regression problem)。
有一系列的机器学习算法是用以解决监督学习问题的,比如最经典的用于分类问题的朴素贝叶斯、逻辑回归、支持向量机等等;比如说用于回归问题的线性回归等等。
无监督学习
有另外一类问题,给我们的样本并没有给出“标签/标准答案”,就是一系列的样本。而我们需要做的事情是,在一些样本中抽取出通用的规则。这叫做无监督学习。包括关联规则和聚类算法在内的一系列机器学习算法都属于这个范畴。
半监督学习
这类问题给出的训练数据,有一部分有标签,有一部分没有标签。我们想学习出数据组织结构的同时,也能做相应的预测。此类问题相对应的机器学习算法有自训练(Self-Training)、直推学习(Transductive Learning)、生成式模型(Generative Model)等。
总体说来,最常见是前两类问题,而对应前两类问题的一些机器学习算法如下:
![](https://pic4.zhimg.com/80/v2-09e0403e7926db246610c2b282cf50ee_hd.jpg)
二,从算法的功能角度分类
我们也可以从算法的共性(比如功能,运作方式)角度对机器学习算法分类。下面我们根据算法的共性去对它们归个类。不过需要注意的是,我们下面的归类方法可能对分类和回归有比较强的倾向性,而这两类问题也是最常遇到的。
回归算法(Regression Algorithms)
![](https://pic1.zhimg.com/80/v2-f46f020211430c3a9ffe35f72966b572_hd.jpg)
回归算法是一种通过最小化预测值与实际结果值之间的差距,而得到输入特征之间的最佳组合方式的一类算法。对于连续值预测有线性回归等,而对于离散值/类别预测,我们也可以把逻辑回归等也视作回归算法的一种,常见的回归算法如下:
- Ordinary Least Squares Regression (OLSR)
- Linear Regression
- Logistic Regression
- Stepwise Regression
- Locally Estimated Scatterplot Smoothing (LOESS)
- Multivariate Adaptive Regression Splines (MARS)
基于实例的算法(Instance-based Algorithms)
![](https://pic1.zhimg.com/80/v2-5c833b99a94ebb1cad40b44e9a8e5aa4_hd.jpg)
这里所谓的基于实例的算法,我指的是我们最后建成的模型,对原始数据样本实例依旧有很强的依赖性。这类算法在做预测决策时,一般都是使用某类相似度准则,去比对待预测的样本和原始样本的相近度,再给出相应的预测结果。常见的基于实例的算法有:
- k-Nearest Neighbour (kNN)
- Learning Vector Quantization (LVQ)
- Self-Organizing Map (SOM)
- Locally Weighted Learning (LWL)
决策树类算法(Decision Tree Algorithms)
![](https://pic4.zhimg.com/80/v2-d66ba9cc2e6db8eda38d38f784d5efd6_hd.jpg)
决策树类算法,会基于原始数据特征,构建一颗包含很多决策路径的树。预测阶段选择路径进行决策。常见的决策树算法包括:
- Classification and Regression Tree (CART)
- Iterative Dichotomiser 3 (ID3)
- C4.5 and C5.0 (different versions of a powerful approach)
- Chi-squared Automatic Interaction Detection (CHAID)
- M5
- Conditional Decision Trees
贝叶斯类算法(Bayesian Algorithms)
![](https://pic3.zhimg.com/80/v2-0fbceb78101ba2fdd4dd368e2ec656e0_hd.jpg)
这里说的贝叶斯类算法,指的是在分类和回归问题中,隐含使用了贝叶斯原理的算法。包括:
- Naive Bayes
- Gaussian Naive Bayes
- Multinomial Naive Bayes
- Averaged One-Dependence Estimators (AODE)
- Bayesian Belief Network (BBN)
- Bayesian Network (BN)
聚类算法(Clustering Algorithms)
![](https://pic3.zhimg.com/80/v2-29ed1cda0cd5aaa2f733758fb648a3ad_hd.jpg)
聚类算法做的事情是,把输入样本聚成围绕一些中心的『数据团』,以发现数据分布结构的一些规律。常用的聚类算法包括:
- k-Means
- Hierarchical Clustering
- Expectation Maximisation (EM)
关联规则算法(Association Rule Learning Algorithms)
![](https://pic2.zhimg.com/80/v2-36214fc27421baca1c505a5a7f9b59bf_hd.jpg)
关联规则算法是这样一类算法:它试图抽取出,最能解释观察到的训练样本之间关联关系的规则,也就是获取一个事件和其他事件之间依赖或关联的知识,常见的关联规则算法有:
- Apriori algorithm
- Eclat algorithm
人工神经网络类算法(Artificial Neural Network Algorithms)
![](https://pic1.zhimg.com/80/v2-55d5b4b366057f8af6e43f7ce369138d_hd.jpg)
这是受人脑神经元工作方式启发而构造的一类算法。需要提到的一点是,我把“深度学习”单拎出来了,这里说的人工神经网络偏向于更传统的感知算法,主要包括:
- Perceptron
- Back-Propagation
- Radial Basis Function Network (RBFN)
深度学习(Deep Learning Algorithms)
![](https://pic2.zhimg.com/80/v2-02d276798a0c131959a67a571645df65_hd.jpg)
深度学习是近年来非常火的机器学习领域,相对于上面列的人工神经网络算法,它通常情况下,有着更深的层次和更复杂的结构。该类算法广泛应用于计算机视觉。
- Deep Boltzmann Machine (DBM)
- Deep Belief Networks (DBN)
- Convolutional Neural Network (CNN)
- Stacked Auto-Encoders
降维算法(Dimensionality Reduction Algorithms)
![](https://pic3.zhimg.com/80/v2-b5239b94d5c8fbc7bd9cdf419c246ef1_hd.jpg)
从某种程度上说,降维算法和聚类其实有点类似,因为它也在试图发现原始训练数据的固有结构,但是降维算法在试图,用更少的信息(更低维的信息)总结和描述出原始信息的大部分内容。
有意思的是,降维算法一般在数据的可视化,或者是降低数据计算空间有很大的作用。它作为一种机器学习的算法,很多时候用它先处理数据,再灌入别的机器学习算法学习。主要的降维算法包括:
- Principal Component Analysis (PCA)
- Principal Component Regression (PCR)
- Partial Least Squares Regression (PLSR)
- Sammon Mapping
- Multidimensional Scaling (MDS)
- Linear Discriminant Analysis (LDA)
- Mixture Discriminant Analysis (MDA)
- Quadratic Discriminant Analysis (QDA)
- Flexible Discriminant Analysis (FDA)
模型融合算法(Ensemble Algorithms)
![](https://pic1.zhimg.com/80/v2-55961465c0f42eb7beefc9bbabb68c14_hd.jpg)
严格意义上来说,这不算是一种机器学习算法,而更像是一种优化手段/策略,它通常是结合多个简单的弱机器学习算法,去做更可靠的决策。拿分类问题举个例,直观的理解,就是单个分类器的分类是可能出错,不可靠的,但是如果多个分类器投票,那可靠度就会高很多。常用的模型融合增强方法包括:
- Random Forest
- Boosting
- Bootstrapped Aggregation (Bagging)
- AdaBoost
- Stacked Generalization (blending)
- Gradient Boosting Machines (GBM)
- Gradient Boosted Regression Trees (GBRT)
三,机器学习算法决策树
为了达到快速选择算法的目的,特将常用算法制作了一棵决策树,每一组条件都是对应一条路径,能找到相对较为合适的一些解决方法,如下图:
![](https://pic4.zhimg.com/80/v2-969d04b47ba8c9f1a16b95ec6a767ef0_hd.jpg)
首先样本量如果非常少的话,其实所有的机器学习算法都没有办法从里面“学到”通用的规则和模式,所以多弄点数据是王道。然后根据问题是有/无监督学习和连续值/离散值预测,分成了分类、聚类、回归和 维度约减 四个方法类,每个类里根据具体情况的不同,又有不同的处理方法。
链接:https://www.zhihu.com/question/27306416/answer/281031045
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
朴素贝叶斯分类
朴素贝叶斯分类是基于贝叶斯定理与特征条件独立假设的分类方法,发源于古典数学理论,拥有稳定的数学基础和分类效率。它是一种十分简单的分类算法,当然简单并不一定不好用。通过对给出的待分类项求解各项类别的出现概率大小,来判断此待分类项属于哪个类别,而在没有多余条件的情况下,朴素贝叶斯分类会选择在已知条件下,概率最大的类别。
贝叶斯分类算法的实质就是计算条件概率的公式。在事件 B 发生的条件下,事件 A 发生的概率为 P(A | B)来表示。
<img src="https://pic1.zhimg.com/50/v2-aea8116a5c34605b9cc4de92d247f426_hd.jpg" data-caption="" data-size="normal" data-rawwidth="501" data-rawheight="322" class="origin_image zh-lightbox-thumb" width="501" data-original="https://pic1.zhimg.com/v2-aea8116a5c34605b9cc4de92d247f426_r.jpg">![](https://pic1.zhimg.com/80/v2-aea8116a5c34605b9cc4de92d247f426_hd.jpg)
P(A | B)的概率为
<img src="https://pic4.zhimg.com/50/v2-de5b63eccef28c04015322ed894e4653_hd.jpg" data-caption="" data-size="normal" data-rawwidth="143" data-rawheight="43" class="content_image" width="143">![](https://pic4.zhimg.com/80/v2-de5b63eccef28c04015322ed894e4653_hd.jpg)
在日常应用中,我们经常可以直接得出 P(A | B),而 P(B | A)直接得到比较困难,通过贝叶斯定理就可以通过 P(A | B)获得 P(B | A)。
而朴素贝叶斯分类的正式定义则如下:
<img src="https://pic4.zhimg.com/50/v2-ba7a2c453ef3f3378f9fd0872b3c7a70_hd.jpg" data-caption="" data-size="normal" data-rawwidth="683" data-rawheight="199" class="origin_image zh-lightbox-thumb" width="683" data-original="https://pic4.zhimg.com/v2-ba7a2c453ef3f3378f9fd0872b3c7a70_r.jpg">![](https://pic4.zhimg.com/80/v2-ba7a2c453ef3f3378f9fd0872b3c7a70_hd.jpg)
朴素贝叶斯算法在执行文本分类等工作是会有很好的效果,比如朴素贝叶斯算法常被使用于垃圾邮件的过滤分类中。
SVM算法
支持向量机(Support Vector Machine,常简称为 SVM)是一种监督式学习的方法,可广泛地应用于统计分类以及回归分析。支持向量机属于一般化线性分类器,它能够同时最小化经验误差与最大化几何边缘区,因此支持向量机也被称为最大边缘区分类器。
同时支持向量机将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面,分隔超平面使两个平行超平面的距离最大化。假定平行超平面间的距离或差距越大,分类器的总误差越小。
<img src="https://pic3.zhimg.com/50/v2-2b8624274f9c2f0a0318a7482aa3574e_hd.jpg" data-caption="" data-size="normal" data-rawwidth="485" data-rawheight="523" class="origin_image zh-lightbox-thumb" width="485" data-original="https://pic3.zhimg.com/v2-2b8624274f9c2f0a0318a7482aa3574e_r.jpg">![](https://pic3.zhimg.com/80/v2-2b8624274f9c2f0a0318a7482aa3574e_hd.jpg)
SVM 算法虽然存在难以训练和难以解释的问题,但是在非线性可分问题上的表现十分优秀,在非线性可分问题中常选择 SVM 算法。
基于 KNN 的算法
K - 近邻算法,简称 KNN(k-Nearest Neighbor),它同样是一个比较简单的分类、预测算法。对选取与待分类、待预测数据的最相似的 K 个训练数据,通过对这 K 个数据的结果或者分类标号取平均、取众数等方法得到待分类、待预测数据的结果或者分类标号。
<img src="https://pic3.zhimg.com/50/v2-90dade7d278aaa6a60262c1228fa08c1_hd.jpg" data-caption="" data-size="normal" data-rawwidth="190" data-rawheight="171" class="content_image" width="190">![](https://pic3.zhimg.com/80/v2-90dade7d278aaa6a60262c1228fa08c1_hd.jpg)
K - 近邻算法如上图所示,有两类不同的样本数据,分别用蓝色的小正方形和红色的小三角形表示,而图正中间的那个绿色的圆所标示的数据则是待分类的数据。在不知道中间那个绿色的数据是从属于哪一类(蓝色小正方形or红色小三角形)的情况下,我们可以从它的临近的样本进行判断。
如果 K=3,绿色圆点最近的 3 个邻居是 2 个红色小三角形和 1 个蓝色小正方形,少数从属于多数,基于统计的方法,判定绿色的这个待分类点属于红色的三角形一类。
如果 K=5,绿色圆点的最近的 5 个邻居是 2 个红色三角形和 3 个蓝色的正方形,还是少数从属于多数,基于统计的方法,判定绿色的这个待分类点属于蓝色的正方形一类。
从上文我们看到,当无法判定当前待分类点是从属于已知分类中的哪一类时,可以依据统计学的理论看它所处的位置特征,衡量它周围邻居的权重,而把它归为(或分配)到权重更大的那一类,这就是 K 近邻算法的核心思想。
KNN 算法相比其他算法也更加简单,并且易于理解、实现,无需估计参数与训练。适合对稀有事件进行分类和多分类方面的问题,在这类问题方面 KNN 算法的表现比 SVM 更好。
人工神经网络算法
人工神经网络,简称神经网络或类神经网络,是一种模仿生物神经网络结构和功能的数学模型或计算模型,用于对函数进行估计或近似。神经网络由大量的人工神经元联结进行计算。大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自适应系统。
下图为人工神经网络示意图,人工神经网络由很多的层组成,最前面这一层叫输入层,最后面一层叫输出层,最中间的层叫隐层,并且每一层有很多节点,节点之间有边相连的,每条边都有一个权重。对于文本来说输入值是每一个字符,对于图片来说输入值就是每一个像素。
![](https://pic1.zhimg.com/80/v2-ffeb59eb5b88142eeb277c7dfd7b972f_hd.jpg)
人工神经网络是如何工作的?
1.前向传播:对于一个输入值,将前一层的输出与后一层的权值进行运算,再加上后一层的偏置值得到了后一层的输出值,再将后一层的输出值作为新的输入值传到再后面一层,一层层传下去得到最终的输出值。
2.反向传播:前向传播会得到预测值,但是这个预测值不一定是真实的值,反向传播的作用就是修正误差,通过与真实值做对比修正前向传播的权值和偏置。
人工神经网络在语音、图片、视频、游戏等各类应用场景展现出了优异的性能,但是存在需要大量的数据进行训练来提高准确性的问题。