概述机器学习经典算法

机器学习算法可以按照不同的标准来进行分类。比如按函数f(x,θ)的不同,机器学习算法可以分为线性模型和非线性模型;按照学习准则的不同,机器学习算法也可以分为统计方法和非统计方法。按照训练样本提供的信息以及反馈方式的不同,机器学习算法可以分为以下几类。

监督学习中的数据集是有标签的,对于给出的样本是有答案的。如果机器学习的目标是通过建模样本的特征x和标签y之间的关系:f(x,θ)或p(y|x,θ),并且训练集中每个样本都有标签,那么这类机器学习称为监督学习。

根据标签类型的不同,又可以将其分为分类问题和回归问题两类。前者是预测某一样东西所属的类别(离散的),比如给定一个人的身高、年龄、体重等信息,然后判断性别、是否健康等;后者则是预测某一样本所对应的实数输出(连续的),比如预测某一地区人的平均身高。大部分模型都是属于监督学习,包括线性分类器、支持向量机等。常见的监督学习算法有:k-近邻算法(k-NearestNeighbors,kNN)、决策树(DecisionTrees)、朴素贝叶斯(NaiveBayesian)等。监督学习的基本流程如图1所示。

跟监督学习相反,无监督学习中数据集是完全没有标签的,依据相似样本在数据空间中一般距离较近这一假设,将样本分类。常见的无监督学习算法包括:稀疏自编码(SparseAutoEncoder)、主成分分析(PrincipalComponentAnalysis,PCA)、K-Means算法(K均值算法)、DBSCAN算法(Density-BasedSpatialClusteringofApplicationswithNoise)、最大期望算

法(Expectation-Maximizationalgorithm,EM)等。利用无监督学习可以解决的问题可以分为关联分析、聚类问题和维度约减。

关联分析是指发现不同事物之间同时出现的概率。它被广泛地应用在购物篮分析中。如果发现买面包的客户有百分之八十的概率买鸡蛋,那么商家就会把鸡蛋和面包放在相邻的货架上。

聚类问题是指将相似的样本划分为一个簇(Cluster)。与分类问题不同,聚类问题预先并不知道类别,自然训练数据也没有类别的标签。

维度约减是指减少数据维度的同时保证不丢失有意义的信息。利用特征提取方法和特征选择方法,可以达到维度约减的效果。特征选择是指选择原始变量的子集。特征提取是将数据从高维度转换到低维度。广为熟知的主成分分析算法就是特征提取的方法。

非监督学习的基本处理流程如图2所示:

可以看到相对于监督学习,非监督学习的过程中没有监督者(Supervisor)的干预。图3是一个典型的监督学习和非监督学习的对比,左侧是对一群有标签数据的分类,而右侧是对一群无标签数据的聚类。

无监督学习在过去十年间的发展主要集中在生成模型(GenerativeModel)和表征学习(RepresentationLearning)两个方面。对于生成模型,变分自编码机(VariationalAutoencoder,VAE)和生成式对抗网络(GenerativeAdverserialNets,GAN)相继成为无监督复杂概率分布学习的主流方法,并由此衍生和发展出大量的无监督生成模型。对于表征学习,以双向生成式对抗网络(BiGAN)、深度聚集(DeepCluster)、逆约束自编码机插值(ACAI)和动量对比(MoCo)为代表的方法充分结合了深度神经网络强大的特征表示能力,利用无监督数据进行表征学习,为后续更复杂多样的监督学习任务打下了坚实的数据表征基础。

此外,自监督学习(Self-supervisedLearning)近年来也逐渐成为无监督表征学习一种新思路,它试图通过根据数据本身的结构或特性人为地构造标签,从而实现监督式的模型学习。

半监督学习是监督学习与无监督学习相结合的一种学习方法。半监督学习一般针对的问题是数据量大,但是有标签数据少或者说标签数据的获取很难很贵的情况,训练的时候有一部分是有标签的,而有一部分是没有的。与使用所有标签数据的模型相比,使用训练集的训练模型在训练时可以更为准确,而且训练成本更低。常见的两种半监督的学习方式是直推学习(Transductivelearning)和归纳学习(Inductivelearning)。直推学习(Transductivelearning):没有标记的数据是测试数据,可以用测试的数据进行训练。需要注意,这里只是用了测试数据中的特征(Feature)而没有用标签(Label),所以并不是一种欺骗的方法。归纳学习(Inductivelearning):没有标签的数据不是测试集。半监督学习的基本流程如图4所示:

监督学习、半监督学习和非监督学习之间的区别如图6所示。

可以看到,图5(a)中,红色三角形数据和蓝色圆点数据为标注数据;图5(b)中,绿色的小圆点为非标注数据。图5(c)显示监督学习将有标签的数据进行分类;而半监督学习如图5(d)中部分是有标签的,部分是没有标签的,一般而言,半监督学习侧重于在有监督的分类算法中加入无标记样本来实现半监督分类。

强化学习从动物学习、参数扰动自适应控制等理论发展而来,基本原理是:如果Agent的某个行为策略导致环境正的奖赏(强化信号),那么Agent以后产生这个行为策略的趋势便会加强。Agent的目标是在每个离散状态发现最优策略以使期望的折扣奖赏和最大。

强化学习在机器人学科中被广泛应用。在与障碍物碰撞后,机器人通过传感器收到负面的反馈从而学会去避免冲突。在视频游戏中,可以通过反复试验采用一定的动作,获得更高的分数。Agent能利用回报去理解玩家最优的状态和当前应该采取的动作。

图6采用一只老鼠来模拟强化学习中的Agent,其任务是走出迷宫,每走一步都有一个方法来衡量其走的好与坏,基本学习过程是当其走得好的时候就给其一定的奖励(如一块蛋糕)。通过这种方式,Agent在行动评价的环境中获得知识,改进行动方案以适应环境。

在机器学习中,有一组输入变量(x)用于确定输出变量(y)。输入变量和输出变量之间存在某种关系,机器学习的目标是量化这种关系。

在线性回归中,输入变量(x)和输出变量(y)之间的关系表示为y=ax+b的方程。因此,线性回归的目标是找出系数a和b的值。这里,a是直线的斜率,b是直线的截距。图7显示了数据集的x和y值,线性回归的目标是拟合最接近大部分点的线。

CART是决策树的一个实现方式,由ID3,C4.5演化而来,是许多基于树的bagging、boosting模型的基础。CART可用于分类与回归。CART是在给定输入随机变量x条件下输出随机变量y的条件概率分布,与ID3和C4.5的决策树所不同的是,ID3和C4.5生成的决策树可以是多叉的,每个节点下的叉数由该节点特征的取值种类而定,比如特征年龄分为(青年,中年,老年),那么该节点下可分为3叉。而CART为假设决策树为二叉树,内部结点特征取值为“是”和“否”。左分支取值为“是”,右分支取值为“否”。这样的决策树等价于递归地二分每一个特征,将输入空间划分为有限个单元,并在这些单元上预测概率分布,也就是在输入给定的条件下输出条件概率分布。

随机森林指的是利用多棵决策树对样本进行训练并预测的一种分类器。它包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。随机森林是一种灵活且易于使用的机器学习算法,即便没有超参数调优,也可以在大多数情况下得到很好的结果。随机森林也是最常用的算法之一,因为它很简易,既可用于分类也能用于回归。

其基本的构建算法过程如下:1.用N来表示训练用例(样本)的个数,M表示特征数目。2.输入特征数目m,用于确定决策树上一个节点的决策结果;其中m应远小于M。3.从N个训练用例(样本)中以有放回抽样的方式,取样N次,形成一个训练集(即bootstrap取样),并用未抽到的用例(样本)作预测,评估其误差。4.对于每一个节点,随机选择m个特征,决策树上每个节点的决定都是基于这些特征确定的。

根据这m个特征,计算其最佳的分裂方式。5.每棵树都会完整成长而不会剪枝,这有可能在建完一棵正常树状分类器后被采用)。一个简单的随机森林算法示意如下:

随机森林集成了所有的分类投票结果,将投票次数最多的类别指定为最终的输出,这就是一种最简单的Bagging思想。

逻辑回归最适合二进制分类(y=0或1的数据集,其中1表示默认类)例如:在预测事件是否发生时,发生的事件被分类为1。在预测人会生病或不生病,生病的实例记为1)。它是以其中使用的变换函数命名的,称为逻辑函数h(x)=1/(1+e-x),它是一个S形曲线。

在逻辑回归中,输出是以缺省类别的概率形式出现的。因为这是一个概率,所以输出在0-1的范围内。输出(y值)通过对数转换x值,使用对数函数h(x)=1/(1+e-x)来生成。然后应用一个阈值来强制这个概率进入二元分类。

图9判断了肿瘤是恶性还是良性。默认变量是y=1(肿瘤=恶性);x变量可以是肿瘤的信息,例如肿瘤的尺寸。如图所示,逻辑函数将数据集的各种实例的x值转换成0到1的范围。如果概率超过阈值0.5(由水平线示出),则将肿瘤分类为恶性。

逻辑回归的目标是使用训练数据来找到系数b0和b1的值,以使预测结果与实际结果之间的误差最小化。这些系数是使用最大似然估计来计算的。

朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。朴素贝叶斯分类器基于一个简单的假定:给定目标值时属性之间相互条件独立。通过以上定理和“朴素”的假定,可知:P(Category|Document)=P(Document|Category)*P(Category)/P(Document)朴素贝叶斯的基本方法:在统计数据的基础上,依据条件概率公式,计算当前特征的样本属于某个分类的概率,选择最大的概率分类。

对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。其计算流程表述如下:(1)x={a1,a2,...,am}为待分类项,每个ai为x的一个特征属性(2)有类别集合C={y1,y2,...,yn}(3)计算P(y1|x),P(y2|x),...,P(yn|x)(4)如果P(yk|x)=max{P(y1|x)

kNN(k-NearestNeighbor)的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。kNN方法在做类别决策时,只与极少量的相邻样本有关。由于kNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,kNN方法较其他方法更为适合。kNN算法不仅可以用于分类,还可以用于回归。通过找出一个样本的k个最

近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。如图10是kNN算法中,k等于不同值时的算法分类结果:

简单来说,kNN可以看成:有一堆已经知道分类的数据,然后当一个新数据进入的时候,就开始跟训练数据里的每个点求距离,然后挑离这个训练数据最近的k个点,看看这几个点属于什么类型,然后用少数服从多数的原则,给新数据归类。

AdaptiveBoosting或称为AdaBoost,是多种学习算法的融合。它是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,然后将每次训练得到的分类器融合起来,作为最终的决策分类器。

AdaBoost是最常用的算法。它可用于回归或者分类算法。相比其他机器学习算法,它克服了过拟合的问题,通常对异常值和噪声数据敏感。为了创建一个强大的复合学习器,AdaBoost使用了多次迭代。因此,它又被称为“AdaptiveBoosting”。通过迭代添加弱学习器,AdaBoost创建了一个强学习器。一个新的弱学习器加到实体上,并且调整加权向量,作为对前一轮中错误分类的样例的回应。得到的结果,是一个比弱分类器有更高准确性的分类器。

AdaBoost有助于将弱阈值的分类器提升为强分类器。图11描述了AdaBoost的执行,只用了简单易于理解的代码在一个文件中就实现了。这个函数包含一个弱分类器和boosting组件。弱分类器在一维的数据中尝试去寻找最理想的阈值来将数据分离为两类。boosting组件迭代调用分类器,经过每一步分类,它改变了错误分类示例的权重。因此,创建了一个级联的弱分类器,它的行为就像一个强分类器。

目前,对Adaboost算法的研究以及应用大多集中于分类问题,同时近年也出现了一些在回归问题上的应用。Adaboost系列主要解决了:两类问题、多类单标签问题、多类多标签问题、大类单标签问题和回归问题。它用全部的训练样本进行学习。

K-均值是著名聚类算法,它找出代表聚类结构的k个质心。如果有一个点到某一质心的距离比到其他质心都近,这个点则指派到这个最近的质心所代表的簇。依次,利用当前已聚类的数据点找出一个新质心,再利用质心给新的数据指派一个簇。

注:图12中用“x”表示聚类质心,用点表示训练样本:(a)原始数据集;(b)随机初始化聚类质心;(c-f)k-均值迭代2次的示意图。

在每次迭代中每个训练样例都被指派到一个最近的聚类质心,每个聚类质心被移动到分配给它的点的平均值的位置。

支持向量机(SupportVectorMachine,SVM)是一类按监督学习(SupervisedLearning)方式对数据进行二元分类(BinaryClassification)的广义线性分类器(GeneralizedLinearClassifier),其决策边界是对学习样本求解的最大边距超平面(Maximum-MarginHyperplane)。基本思想是找到集合边缘上的若干数据(称为支持向量(SupportVector)),用这些点找出一个平面(称为决策面),使得支持向量到该平面的距离最大。由简至繁的SVM模型包括:◆当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机;◆当训练样本近似线性可分时,通过软间隔最大化,学习一个线性支持向量机;◆当训练样本线性不可分时,通过核技巧和软间隔最大化,学习一个非线性支持向量机;在分类问题中,很多时候有多个解,如图13左侧所示,在理想的线性可分的情况下其决策平面会有多个。而SVM的基本模型是在特征空间上找到最佳的分离超平面使得训练集上正负样本间隔最大,SVM算法计算出来的分界会保留对类别最大的间距,即有足够的余量,如图5-15右侧所示。

在解决线性不可分问题时,它可以通过引入核函数,巧妙地解决了在高维空间中的内积运算,从而很好地解决了非线性分类问题。如图14所示,通过核函数的引入,将线性不可分的数据映射到一个高纬的特征空间内,使得数据在特征空间内是可分的。

人工神经网络ANN(ArtificialNeuralNetwork)是由大量处理单元互联组成的非线性、自适应信息处理系统。它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。其基本过程可以概述如下:外部刺激通过神经末梢,转化为电信号,传导到神经细胞(又叫神经元);无数神经元构成神经中枢;神经中枢综合各种信号,做出判断;人体根据神经中枢的指令,对外部刺激做出反应。其过程表述如图15所示:

人工神经网络经历了漫长的发展阶段。最早是上个世纪六十年代提出的“人造神经元”模型,叫做“感知器”(Perceptron)。感知机模型是机器学习二分类问题中的一个非常简单的模型。它的基本结构如图16所示。

人工神经网络具有四个基本特征:非线性、非局限性、非常定性和非凸性。

人工神经网络的特点和优越性,主要表现在三个方面:具有自学习功能、具有联想存储功能和具有高速寻找最优解的能力。

THE END
1.算法学习攻略总结:入门至进阶,通关之路指南51CTO博客学算法、刷 LeetCode 绝非一蹴而就,它需要一个循序渐进的过程。 导读 1. 初学者的常见误区 2. 新手小白如何有效刷算法题 2.1. 没有接受自己是算法小白的事实 2.2. 没有合理的刷题方法 3. 正确的算法学习路径 3.1. 基础数据结构与算法知识 3.2. 常见算法思想 https://blog.51cto.com/u_16542656/12047317
2.入门必看算法基础知识讲解小白都也能看得懂上一节中提到:算法就是解决某个或者某类问题的办法,但是,这只是对算法的一个笼统的描述。一个真正的算法,包含以下5大特性:输入、输出、有穷性、确定性、可行性。 输入输出:算法具有零个或者多个输入,至少一个或者多个输出。输入可以为零,但是必须存在输出,输出的形式可有为确定的返回值或者日志的的打印等,如果没https://blog.csdn.net/m0_63174618/article/details/138362160
3.算法入门:从零开始学习算法的简单教程本文介绍了算法入门的基础知识,包括算法的基本概念、重要性及其应用领域。文章详细解释了如何描述和分析算法,并列举了常见的算法类型及其应用场景,适合希望从零开始学习算法的读者。 算法入门:从零开始学习算法的简单教程 算法基础概念介绍 什么是算法 算法是一组定义明确的指令,用于解决特定问题或完成特定任务。算法可https://www.imooc.com/article/357937
4.吴师兄学算法五分钟学算法吴师兄学算法(www.cxyxiaowu.com)提供许多数据结构与算法学习的基础知识, 涵盖 LeetCode 题解、剑指 Offer 题解、数据结构等内容。https://www.cxyxiaowu.com/
5.算法干货主动学习算法学习笔记主动学习方法被提出以有效地处理这类问题。主动学习(Active Learning)是指通过自动的机器学习算法,从数据集中自动筛选出合适的候选集给人工标注的过程。有效的主动学习数据选择策略可以有效地降低训练的代价并同时提高模型的识别能力。在主动学习中,学习器能够主动地选择包含信息量大的未标注样例并将其交由专家进行标注,然https://developer.aliyun.com/article/1177917
6.趣学算法(陈小玉著)带目录完整pdf[95MB]电子书下载第1章 算法之美 1 1.1 打开算法之门 2 1.2 妙不可言—算法复杂性 2 1.3 美不胜收—魔鬼序列 9 1.4 灵魂之交—马克思手稿中的数学题 16 1.5 算法学习瓶颈 21 1.6 你怕什么 22 第2章 贪心算法 24 2.1 人之初,性本贪 25 2.1.1 贪心本质 25 https://www.jb51.net/books/635507.html
7.超详细算法岗的学习路线大总结!机器学习 or 深度学习基础 论文or 项目介绍 其他问题 & 向面试官提问 本文将从以上四点进行展开。 一、数据结构&算法题 随着算法岗越来越卷,Coding几乎成了面试必考的一项,而且在面评中的权重也越来越高,根据个人面试经验,如果这一环节没有很顺利得完成的话,几乎必挂,尤其对于非科班转行的同学,需要特别重视。 https://leetcode.cn/circle/discuss/SX3aa6/
8.算法数据结构体系学习班马士兵教育官网注意原“算法与数据结构基础班”已经过期。所有内容都被现在的“算法数据结构体系学习班”重新讲述,还增加了内容,增加了题目练习。原“算法与数据结构基础班”的所有内容,对应现在的“算法数据结构体系学习班”的1-23节。 注意原“算法与数据结构进阶班”已经过期。所有内容已经被现在的“算法数据结构体系学习班”和“https://www.mashibing.com/course/339
9.机器学习算法原理详解机器学习算法原理详解 机器学习作为人工智能的一个重要分支,其目标是通过让计算机自动从数据中学习并改进其性能,而无需进行明确的编程。本文将深入解读几种常见的机器学习算法原理,包括线性回归、逻辑回归、支持向量机(SVM)、决策树和K近邻(KNN)算法,探讨它们的理论基础、算法流程、优缺点及应用场景。https://www.elecfans.com/d/3669550.html
10.科学网—[转载]进化集成学习算法综述【摘 要】进化集成学习结合了集成学习和进化算法两方面的优势,并在机器学习、数据挖掘和模式识别等领域被广泛应用。首先对进化集成学习算法的理论基础、组成结构及分类情况进行了概述。然后根据进化算法在集成学习中的优化任务,从样本选择、特征选择、集成模型参数组合优化、集成模型结构优化以及集成模型融合策略优化几个方面https://wap.sciencenet.cn/blog-951291-1312816.html
11.机器学习十大经典算法入门[通俗易懂]腾讯云开发者社区机器学习十大经典算法入门[通俗易懂] 大家好,又见面了,我是你们的朋友全栈君。 一,SVM(Support Vector Machine)支持向量机a. SVM算法是介于简单算法和神经网络之间的最好的算法。 b. 只通过几个支持向量就确定了超平面,说明它不在乎细枝末节,所以不容易过拟合,但不能确保一定不会过拟合。可以处理复杂的非线性https://cloud.tencent.com/developer/article/2098380
12.深度学习高手笔记卷1:基础算法本书通过扎实、详细的内容和清晰的结构,从算法理论、算法源码、实验结果等方面对深度学习算法进行分析和介绍。本书共三篇,第一篇主要介绍深度学习在计算机视觉方向的一些卷积神经网络,从基础骨干网络、轻量级 CNN、模型架构搜索 3 个方向展开,介绍计算机视觉方向的里程碑算法;第二篇主要介绍深度学习在自然语言处理方向的https://www.epubit.com/bookDetails?id=UB7d8623610d375
13.python机器学习笔记:深入学习决策树算法原理这些技术都使用一种学习算法(learning algorithm)确定分类模型,该模型能够很好的拟合输入数据中类标号和属性集之间的联系,学习算法得到的模型不仅要很好地拟合输入数据,还要能够正确的预测未知样本的类标号。因此,训练算法的主要目标就是建立具有很好泛化能力模型,即建立能够准确的预测未知样本类标号的模型。https://www.flyai.com/article/622
14.轻松看懂机器学习十大常用算法(附实例)八、Adaboost 算法 九、神经网络 十、马尔可夫 一、决策树 根据一些 feature 进行分类,每个节点提一个问题,通过判断,将数据分为两类,再继续提问。这些问题是根据已有数据学习出来的,再投入新数据的时候,就可以根据这棵树上的问题,将数据划分到合适的叶子上。 https://mse.xauat.edu.cn/info/1038/2182.htm
15.轻松看懂机器学习十大常用算法通过本篇文章可以对ML的常用算法有个常识性的认识,没有代码,没有复杂的理论推导,就是图解一下,知道这些算法是什么,它们是怎么应用的,例子主要是分类问题。 每个算法都看了好几个视频,挑出讲的最清晰明了有趣的,便于科普。 以后有时间再对单个算法做深入地解析。 https://www.jianshu.com/p/55a67c12d3e9
16.《常用算法之智能计算(三)》:机器学习计算因为机器学习计算中涉及了大量的统计学理论,机器学习与统计推断的联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习计算关注可以实现的、行之有效的学习算法,很多推论问题具有无程序可循的难度,所以部分的机器学习研究是开发简单、处理容易的近似算法。http://www.kepu.net/blog/zhangjianzhong/201903/t20190327_475625.html