机器学习之常用算法基础概念(常见的机器学习算法)
moboyou 2025-05-04 15:16 29 浏览
一. 机器学习的流程
- 收集数据
- 准备输入数据
- 分析输入数据
- 训练算法
- 测试算法
- 使用算法
机器学习就是计算机利用已有的数据或经验,通过训练得出模型,并使用测试数据对该模型进行评估,若性能达到所需要求,则可用该模型测试其他的数据,否则,调整算法重新训练模型并评估,直到构建出符合性能需求的模型为止。
二、预处理的步骤
- 数据选取、数据处理、数据集成、数据变换、数据规约。
- 数据初步选取。数据选取需要遵循三个基本原则:
(1)选择能够赋予属性名和属性值明确含义的属性数据。
(2)避免选择重复数据。
(3)合理选择与学习内容关联性高的属性数据。
2. 数据清理。数据清理是预处理中最重要的一步,主要处理缺失数据、噪声数据、识别和删除孤立点等。
3. 数据集成。数据集成就是将多个数据源中的数据合并在一起形成一个数据仓库/数据库的技术和过程。需要解决数据中的3个主要问题:多个数据集匹配、数据冗余、数据冲突。
4. 数据变换。数据变换有数据标准化、数据白化处理。
5. 数据归约。数据归约通常采用维归约、数值归约方法实现。维归约指通过减少属性的方式压缩数据量,通过移除不相关的属性,可以提高模型效率。
三、分类学习器基本操作流程
- 对于构建机器学习应用,通常包括五个部分,分别是数据导入、数据的探索和特征选择、训练模型、比较模型、输出模型。
启动分类学习器。可以通过直接在命令行窗口输入“Classification Learner”,或者在MATLAB的菜单栏中选择“应用程序”选项卡下的分类学习器应用“Classification Learner”。
- 输入数据。导入数据的方式有两种,一种是单击CLASSIFICATION LEARNER选项卡下FILE组中的New Session下拉按钮,然后选择From Workspace,其含义是导入MATLAB工作空间的函数数据;另一种是选择From File,其含义是通过数据文件导入数据。
2. 数据的探索和特征的选择。设置训练数据的相关属性、标签及设置验证集,导入数据并设置好交叉验证后单击Start Session按钮。
3. 训练模型。选择一个合适的算法后单击“Train”进行训练。
4. 比较模型。观察每个类预测的准确率。
5. 输出模型。可以在“Export Model”下拉列表中可以选择不同的导出方式。导入工作空间的方法:选择“Export Model”下拉列表中的“Export Compact Model”选项,输入导入模型的名称,采用默认值,单击“确定”按钮。
四、k紧邻算法(KNN算法)
- 原理:
如果一个样本在特征空间中的k个最相似的样本中的大多数属于某一个类别,则该样本也属于这个类别。
当无法判定当前待分类点从属于已知分类中的哪一类时,可以依据统计学的理论看它所处的位置特征,衡量它周围邻居的权重,而把它归为到权重更大的那一类,这就是k近邻算法的核心思想。
k紧邻算法使用的模型实际上对应于特征空间的划分。k值的选择、距离度量和分类决策规则是该算法的3个基本要素。
(1)在实际应用中,k值一般选择一个较小的数值,通常采用交叉验证的方法来选择最优的k值。
(2)算法中的分类决策规则往往是多数表决,即由输入实例的k个最邻近的训练实例中的多数类决定输入实例的类别。
(3)距离度量一般采用欧式距离表示,在度量之前,应该将每个属性的值规范化,以防止具有较大初始值域的属性比具有较小初始值域的属性的权重大。
2. 优点:
(1)简单、有效、复杂度低、无须参数估计、无须训练。
(2)精度高、对噪声不敏感。
(3)适用于类域的交叉或重叠较多的待分样本集。
(4)适用于多分类问题,其表现性能比SVM效果更好。
3. 缺点:
(1)计算量大。
(2)可解释性差。
(3)样本不均衡时,如果一个类样本容量很大,而其他样本容量很小时,有可能导致当输入一个新样本时,该样本的k个邻近样本中很可能该类占大多数。
(4)样本容量较小的类域使用该算法容易产生误分。
(5)k值的选取对分类效果有较大影响。
五、决策树
- 原理:
决策树是在已知各种情况发生概率的基础上,通过构成决策树来评估项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。在机器学习中,决策树是一个预测模型,其代表的是对象属性与对象值之间的一种映射关系。
决策树可以看作一个树状预测模型,它是由结点和有向分支组成的层次结构。树中包含3种结点:根结点、内部结点、叶子结点。决策树只有一个根结点,是全体训练数据的集合。树中每个内部结点都是一个分裂问题。每个叶子结点都是带有分类标签的数据集合,即为样本所属的分类。
2. 优点:
(1)决策树易于理解和实现。
(2)速度快,计算量相对较小,且容易转化成分类规则。
3. 缺点:在处理大样本集时,易出现过拟合现象,降低分类的准确性。
六、支持向量机(SVM)
- 原理:支持向量机将向量映射到一个更高维的空间中,在这个空间中建立一个最大间隔的超平面。在分开数据的超平面的两边建有两个互相平行的临界超平面,建立方向合适的分隔超平面将使两个与之平行的超平面之间的距离最大化。其假定为,平行超平面间的距离或差距越大,分类器的总误差就越小。
2. 优点:
(1)算法专门针对有限样本设计,其目标是获得现有信息下的最优解,而不是样本趋于无穷时的最优解。
(2)算法最终转化为求解一个二次凸规划问题,能求得理论上的全局最优解,解决了一些传统方法无法避免的局部极值问题。
(3)算法将实际问题通过非线性变换映射到高维的特征空间中,在高维特征空间中构造线性最佳逼近来解决原空间中的非线性逼近问题。保证了机器学习具有良好的泛化能力,同时巧妙地解决了维数灾难问题。
3. 缺点:对缺失数据敏感,内存消耗大,难以解释。
七、朴素贝叶斯算法(Bayes算法)
- 原理:朴素贝叶斯算法具有分类准确率较高并且运算速度快的特点。对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大就认为此待分类项属于哪个类别。
2. 优点:
(1)算法形式简单,规则清楚易懂,可扩展性强。
(2)算法实施的时间和空间开销小。
(3)算法性能稳定,模型的健壮性比较好。
3. 缺点:
(1)算法假设属性之间都是条件独立的,然而在社会活动中,数据集中的变量之间往往存在较强的相关性,忽视这种性质会对分类结果产生很大影响。
(2)算法将各特征属性对于分类决策的影响程度都看作是相同的,这不符合实际运用的需求。
(3)算法在使用中通常要将定类数据以上测量级的数据离散化,这样很可能会造成数据中有用信息的损失,对分类效果产生影响。
八、线性回归
- 原理:线性回归是利用数理统计中回归分析,来确定两种或两种以上变量之间相互依赖的定量关系的一种统计分析方法。其表达式为:y=wT+e,e为残差,服从均值为0的正态分布。
2. 优点:
(1)训练速度和预测速度较快。
(2)结果可解释。
(3)当新增数据时,易于更新模型。
3. 缺点:
(1)预测精确度较低。
(2)可能会出现过度拟合。
(3)分离信号和噪声的效果不理想,在使用前需要先去掉不相关的特征。
九、逻辑回归
- 原理:逻辑回归是基于线性模型的,为了解决分类问题,把线性模型的输出做一个变换,使用Sogmoid函数,把实数域的输出映射到(0,1)区间,为输出提供了很好的概率解释。但是从本质上来说,逻辑回归还是一种广义的线性模型,采用了交叉熵损失函数。最后为了最小化损失函数,逻辑回归采用了梯度下降方法。综合这3个因素,就构成了逻辑回归算法。
2. 优点:
(1)预测结果的概率为0~1。
(2)可以适用于离散型和连续型变量。
(3)容易使用和解释。
3. 缺点:
(1)对模型中自变量多重共线性较为敏感。
(2)预测结果呈“S”形,导致很多区间的变量变化对目标概率的影响没有区分度,无法确定阈值。
十、神经网络(NN)
- 原理:人工神经网络(ANN)是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量结点之间相互连接的关系,从而达到处理信息的目的。
2. 优点:
(1)具有较强的非线性映射能力。
(2)具有高度的自学习和自适应的能力。
(3)具有良好的泛化能力和一定的容错能力。
3. 缺点:
(1)存在局部极小化问题。
(2)收敛速度慢。
(3)神经网络结构选择不一。神经网络结构的选择一般只能由经验选定,若选择过大,易出现过度拟合,若选择过小,又可能造成网络不收敛。网络的结构直接影响网络的逼近能力及推广性质。
十一、数据集成(AdaBoost算法)
- 原理:AdaBoost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些分类器集合起来,构成一个更强的最终分类器(强分类器)。其自适应性在于:前一个基本分类器分错的样本会得到加强,加权后的全体数据再次被用来训练下一个基本分类器。同时,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小错误率或达到预先指定的最大迭代次数。
2. 优点:泛化错误率低;易编码;可用于绝大部分分类器;无参数调整。
3. 缺点:对离群点敏感。
十二、k均值算法(k-means算法)
- 原理:k均值算法是典型的基于距离的动态聚类算法,以距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。使用误差平方和准则作为聚类准则,寻求的是使误差平方和准则函数最小化的聚类结果。
2. 优点:
(1)算法简单、快速。
(2)对大数据集具有较高的效率并且是可伸缩性的。
(3)时间复杂度近于线性,而且适合挖掘大规模数据集。
3. 缺点:
(1)在k-means算法中的k值必须是事先给定的,但是k值的选定是非常难以估计的。
(2)初始聚类中心的选择在k-means算法中是随机的,一旦初始值选择得不合理,就可能无法得到有效的聚类结果。
(3)该算法需要不断地进行样本分类调整,不断地计算调整后的新的聚类中心,因此当数据量非常大时,算法需要的时间是非常多的。
十三、K中心点算法
- 原理:k中心点算法在分类上属于动态聚类算法。算法的基础是在每个簇中选出一个实际的对象来代表该簇,其余的每个对象聚类到与其最相似性的代表性对象所在的簇中,然后重复迭代,直到每个代表对象都成为它所在的簇实际中心点或最靠近中心点的对象为止。
2. 优点:减轻了k均值算法对孤立点的敏感性。
3. 缺点:与k均值算法的缺点相似。
参考教材:《机器学习入门到实战 MATLAB实践应用》(冷雨泉主编)
相关推荐
- 记一次前端逻辑绕过登录到内网挖掘
-
前言在测试一个学校网站的时候发现一个未授权访问内网系统,但是这个未授权并不是接口啥的,而是对前端js的审计和调试发现的漏洞,这里给大家分享一下这次的漏洞的过程文章中涉及的敏感信息均已做打码处理,文...
- 陕西普通话等级查询网的开发者被指将考生数据直接写入源码里
-
据报道,陕西普通话等级查询网站突然引起大量程序员关注。有人晒出该网站的源代码的打码截图,图中显示,所有考生数据都被直接写在该网站的源代码里。这表示任何人不需要经过任何验证直接查看源代码即可访问考生信息...
- PHP8知识详解:PHP是什么?
-
PHP是什么?PHP服务网从下面几点为你讲清楚什么是PHP。1、PHP最开始是PersonalHomePage(个人主页)的缩写,已经正式更名为“PHP:HypertextPreproces...
- PHP紧急更新修复漏洞:自5.x以来所有版本均受影响
-
IT之家6月8日消息,PHP项目维护团队昨日发布新补丁,修复了存在于PHPforWindows中的远程代码执行(RCE)漏洞,并敦促用户尽快更新至6月6日发布的8.3.8、...
- OA协同办公系统源码解析
-
在如今的信息化时代,PHPOA软件承当着为企事业单位提供安全、稳定、开源的信息化安全系统,在当今信息化时代,协同办公系统成为了企业管理的重要工具。OA(OfficeAutomation)协同办公系统...
- 附源码:PHP实现查询汉字笔画、笔画排序
-
有时候我们在开发中可能会用到和汉字有关的方法,例如笔画排序之类的,但是直接进行sort排序往往得不到我们想要的结果,因为内部并没有预留这些排序方法。因此我们需要自己动手,今天就教大家实现汉字笔画的...
- StrongShop跨境电商系统源码 | 支持多语言多货币
-
StrongShop跨境电商系统源码|支持多语言多货币StrongShop是一款免费开源的跨境电商商城网站。基于PHPLaravel框架开发的一款Web商城系统。该项目在没有对Lar...
- 源代码的定义
-
源代码是程序员在开发程序时(通常是在字处理程序中)编写的人类可读指令的列表。源代码通过编译器将其转换为机器代码,也称为目标代码,计算机可以理解和执行。目标代码主要由1和0组成,所以它是不可读的。源代码...
- 2077年了,PHP语言现在怎么样啦?
-
“PHP是世界上最好的语言!”这句话一出来,编程界的鄙视链一触即发,程序员的键盘世界大战就爆发了。那么,本文就简单讨论PHP语言,笔者作为创业小公司小团队的角度来妄议一下PHP。首先直接说明观点:新手...
- 开源直播系统源码—为什么要使用PHP语言
-
开展开源直播系统源码的的开发工作的时候,开发人员们碰到的最多问题便是使用什么语言开发的,回答大多是PHP语言。而对于没有的开发经验的人而言,难以理解PHP语言究竟代表着什么,又有哪些作用。实际上,PH...
- 手游平台源码搭建使用的PHP是什么?有什么优点吗?
-
PHP即“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入html中。PHP结合了C语言、java和perl多个语言的特色发展出自己的特色语法,并依据它们的长项持续改进提升自...
- PHP直播源码,直播系统源代码功能有哪些?
-
PHP直播源码究竟是什么?其实所谓的PHP直播源码就是用PHP语言开发的直播系统源代码。PHP是什么?PHP原始为PersonalHomePage的缩写,已经正式更名为“PHP:Hyperte...
- 盘点如何利用PHP生成PDF文件
-
在PHP代码中生成PDF文件是一项非常耗时的工作,早期的程序员通常是在PHP代码中利用FPDF生成PDF文件。但在如今,有很多的函数库可以使用,借助它们你可以从你提供的HTML文档生成PDF文件,从而...
- PHP低代码开发平台 V5.0.7新版发布
-
注意:本版变更:此版本增加租户内测模式,同时增加软删除及数据回收功能。Sfdp更新6.0.5版本Tpflow更新6.0.7版本1.[修复]修复数据为空的时桌面方案报错修复了在桌面组件删除时,由于用户...
- 「sabre/dav」只要十行代码让你的网站获得WebDav网盘能力
-
如今网盘已经成为我们日常中很重要的工具了,不仅仅可以和别人分享,更重要的是可以在我们不同的设备之间读取资料.那什么是WebDav呢?WebDav是一个Http上封装的一个文件系统,就像ftp,nfs之...
- 一周热门
- 最近发表
- 标签列表
-
- curseforge官网网址 (16)
- 外键约束 oracle (36)
- oracle的row number (32)
- 唯一索引 oracle (34)
- oracle in 表变量 (28)
- oracle导出dmp导出 (28)
- oracle 数据导出导入 (16)
- oracle两个表 (20)
- oracle 数据库 字符集 (20)
- oracle安装补丁 (19)
- matlab归一化 (16)
- matlab化简多项式 (20)
- 多线程的创建方式 (29)
- 多线程 python (30)
- java多线程并发处理 (32)
- 宏程序代码一览表 (35)
- c++需要学多久 (25)
- c语言编程小知识大全 (17)
- css class选择器用法 (25)
- css样式引入 (30)
- html5和css3新特性 (19)
- css教程文字移动 (33)
- php简单源码 (36)
- php个人中心源码 (25)
- 网站管理平台php源码 (19)