机器学习初学者 6 个核心算法!建议收藏,反复观看!

今天再来介绍机器学习算法的基本概念和适用场景!

首先,引用一句英国统计学家George E. P. Box的名言:All models are wrong, but some are useful. 没有哪一种算法能够适用所有情况,只有针对某一种问题更有用的算法。

也就是说,机器学习算法不会要求一个问题被 100%求解,取而代之的是把问题转化为最优化的问题,用不同的算法优化问题,从而比较得到尽量好的结果。因此对于数据科学家来说,理解算法显得格外重要,理解不同算法的思想可以帮助数据科学家更从容地面对不同的应用场景。

本文列出了常用的机器学习算法的基本概念、主要特点和适用场景,希望可以在大家选择合适的机器学习算法解决实际问题时起到一点参考作用。

本文主要提及的机器学习算法包括:

  • K近邻(KNN)算法

  • 朴素贝叶斯算法

  • 决策树算法

  • SVM算法

  • adaboost算法

  • EM算法(期望最大化算法)

觉得有用的朋友,可以收藏、点赞

目录

用以下这幅图可以很好的解释kNN算法:

K近邻(KNN)算法优点

K近邻(KNN)算法缺点

适用场景及主要应用领域

K近邻(KNN)算法需要注意的问题

下图为朴素贝叶斯算法的流程

朴素贝叶斯算法注意点

适用场景及主要应用领域

主要应用领域

3.决策树算法

决策树算法注意点

适用场景及主要应用领域

4.SVM算法

SVM算法注意点

适用场景及主要应用领域

支持向量机的常见适用范围如下

5.adaboost算法

adaboost算法注意点

适用场景及主要应用领域

通过 Adaboost 算法

6.EM算法

EM算法注意点

适用场景及主要应用领域


1.KNN算法

KNN算法的基本介绍:假若一个特征空间中大多数的样本属于某一个类别,则在这个特征空间中,k个最相似的样本也属于这个类别。

该算法由两个步骤组成:

(1)对于一个给定的搜索训练集按一定距离度量,来找到一个 的值。

(2)在这个KNN当中,根据大多数分为一致的类来进行分类。

用以下这幅图可以很好的解释kNN算法:

不同形状的点,为不同标签的点。其中绿色点为未知标签的数据点。现在要对绿色点进行预测。由图不难得出:

如果k=3,那么离绿色点最近的有2个红色三角形和1个蓝色的正方形,这3个点投票,于是绿色的这个待分类点属于红色的三角形。

如果k=5,那么离绿色点最近的有2个红色三角形和3个蓝色的正方形,这5个点投票,于是绿色的这个待分类点属于蓝色的正方形。

K近邻(KNN)算法优点

  • 算法原理简单,容易理解,也较容易实现。

  • 不需要进行训练,只需要保存训练样本和标签。

  • 不易受小错误概率的影响。经理论证明,最近邻的渐进错误率最坏时不超过两倍的贝叶斯错误率,最好时接近或达到贝叶斯错误率。

K近邻(KNN)算法缺点

  • K的选择不固定。

  • 预测结果容易受到噪声数据的影响。

  • 当样本不平衡时,新样本的类别偏向训练样本中数量占优的类别,容易导致预测错误。

  • 当数据量较大时,具有较高的计算复杂度和内存消耗,因为对每一个待分类的文本,都要计算它到全体已知样本的距离,才能求得它的K个最近邻。

适用场景及主要应用领域

由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。

在实际应用当中,KNN算法在人脸识别、文字识别、医学图像处理等领域可以取得良好的分类效果。

K近邻(KNN)算法需要注意的问题

  • 数据特征之间量纲不统一时,需要对数据进行归一化处理,否则会出现大数吃小数的问题;

  • 数据之间的距离计算通常采用欧式距离;

  • KNN算法中K值的选取会对结果产生较大的影响,一般k值要小于训练样本数据的平方根;

  • 通常采用交叉验证法来选择最优的K值。

2.朴素贝叶斯算法

朴素贝叶斯分类是一种十分简单的分类算法,即对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。

以判定外国友人为例做一个形象的比喻。

若我们走在街上看到一个黑皮肤的外国友人,让你来猜这位外国友人来自哪里。十有八九你会猜是从非洲来的,因为黑皮肤人种中非洲人的占比最多,虽然黑皮肤的外国人也有可能是美洲人或者是亚洲人。但是在没有其它可用信息帮助我们判断的情况下,我们会选择可能出现的概率最高的类别,这就是朴素贝叶斯的基本思想。

下图为朴素贝叶斯算法的流程

朴素贝叶斯算法注意点

  • 当特征属性值的值类型不是离散值而是连续值的时候,需要通过高斯分布做概率的计算;

  • 为了避免统计概率中出现概率为0的情况,可以引入Laplace校准,它的思想非常简单,就是对没类别下所有划分的计数加1。

适用场景及主要应用领域

  1. 朴素贝叶斯算法对待预测样本进行预测,过程简单速度快;

  2. 对于多分类问题也同样很有效,复杂度也不会有大程度上升;

  3. 在分布独立这个假设成立的情况下,贝叶斯分类器效果奇好,会略胜于逻辑回归,同时需要的样本量也更少一点。

  4. 对于类别类的输入特征变量,效果非常好。对于数值型变量特征,我们是默认它符合正态分布的。

主要应用领域

  • 文本分类/垃圾文本过滤/情感判别:多分类较为简单,同时在文本数据中,分布独立这个假设基本是成立的。垃圾文本过滤(比如垃圾邮件识别)和情感分析(微博上的褒贬情绪)用朴素贝叶斯也通常能取得很好的效果。

  • 多分类实时预测:对于文本相关的多分类实时预测,朴素贝叶斯算法被广泛应用,简单又高效。

  • 推荐系统:朴素贝叶斯和协同过滤(Collaborative Filtering)是一对好搭档,协同过滤是强相关性,但是泛化能力略弱,朴素贝叶斯和协同过滤一起,能增强推荐的覆盖度和效果。

3.决策树算法

决策树是一个树结构(可以是二叉树或非二叉树),其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个输出类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。

决策树学习通常包含这几个方面:特征选择、决策树生成、决策树剪枝、缺失值/异常值处理、决策树集成学习。

决策树算法注意点

  • 决策树算法非常容易过拟合,导致泛化能力不强。可以通过设置节点最少样本数量和限制决策树深度来改进。

  • 决策树会因为样本发生一点点的改动,就会导致树结构的剧烈改变。这个可以通过集成学习之类的方法解决。

  • 寻找最优的决策树是一个NP难的问题,一般通过启发式方法,容易陷入局部最优。可以通过集成学习之类的方法来改善。

  • 有些比较复杂的关系,决策树很难学习,比如异或,一般这种关系可以换神经网络分类方法来解决。

  • 如果某些特征的样本比例过大,生成决策树容易偏向于这些特征。这个可以通过调节样本权重来改善(特别注意,在模型训练过程中,某些特征的权重排序很大,需要手动调节样本的权重来影响特征的权重,主要有样本的均衡,样本的过滤,样本权重的调节)。

适用场景及主要应用领域

相比其他算法,决策树有一个非常明显的优势,就是可以很直观地进行可视化,分类规则好理解,让非专业的人也容易看明白,既可以解决分类问题(对应的目标值是类别型的数据),也能解决回归问题(输出结果也可以是连续的数值),目前广泛应用于语音识别、人脸识别、医疗诊断、模式识别等领域。

4.SVM算法

支持向量机,support vector machine,简称SVM,是经典机器学习的一个重要分类算法,用于完成数据分类。svm算法通过找出一个决策超平面(二维空间指直线,三维空间指平面,超过三维的就是超平面了),将已有训练数据集划分开,然后对于新数据,根据数据是位于超平面的哪一侧完成判断,得到新数据的分类。

因此基础的svm算法是一个二分类算法,至于多分类任务,多次使用svm即可解决。

下图是一组支持向量机实现分类的示例。

SVM算法注意点

  • SVM可以执行线性非线性的分类、回归、异常值检测。适用于中小型复杂数据集;

  • SVM对特征缩放很敏感,可以在输入之前采用StandardScaler处理;

  • 如果SVM模型过拟合,可以通过降低C来进行正则化;

  • vLinearSVC灰度偏执正则化,需要减去平均值,StandardScaler会自动处理;

  • 处理非线性数据集的方法之一是添加更多的特征,比如多项式特征。

适用场景及主要应用领域

支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,但它具有以下缺点:

  • 无法应对大规模训练样本;

  • 难以解决多分类问题;

  • 对参数及核函数选择非常敏感。

支持向量机的常见适用范围如下

  1. 网络完全 传统的网络入侵检测方法大多采用密码签名的方法。在进行入侵检测方面,机器学习技术可以帮助我们进行网络流量的分析,在这里支持向量机具有检测速度快,分类精度高等特点,可以帮助安全人员识别不同类别的网络攻击,例如扫描和欺诈网络。

  2. 人脸识别

SVM可以将图像部分分为人脸和非人脸。它包含nxn像素的训练数据,具有两类人脸(+1)和非人脸(-1),然后从每个像素中提取特征作为人脸和非人脸。根据像素亮度在人脸周围创建边界,并使用相同的过程对每个图像进行分类。

  1. 文本和超文本分类

SVM可以实现对两种类型的模型进行文本和超文本分类,它主要通过使用训练数据将文档分类为不同的类别,如新闻文章、电子邮件和网页。

对于每个文档,计算一个分数并将其与预定义的阈值进行比较。当文档的分数超过阈值时,则将文档分类为确定的类别。如果它不超过阈值,则将其视为一般文档。

通过计算每个文档的分数并将其与学习的阈值进行比较来对新实例进行分类。

  1. 蛋白质折叠和远程同源检测

蛋白质远程同源性检测是计算生物学中的一个关键问题。SVM算法是远程同源检测最有效的方法之一。这些方法的性能取决于蛋白质序列的建模方式。

5.adaboost算法

在了解adaboost算法之前,我们先来重温一下三个臭皮匠顶个诸葛亮的故事:诸葛亮带兵过江,江水湍急,而且里面多是突出水面的礁石。普通竹筏和船只很难过去,打头阵的船只都被水冲走触礁沉没,诸葛亮一筹莫展,也想不出好办法,入夜来了3个做牛皮活的皮匠献策。告诉诸葛亮买牛,然后把牛从肚皮下整张剥下来,封好切口后让士兵往里吹气,做成牛皮筏子,这样的筏子不怕撞,诸葛亮按此方法尝试并顺利过江。

Adaboost就是这样一种“三个臭皮匠顶个诸葛亮”的迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。

adaboost算法注意点

AdaBoost迭代次数也就是弱分类器数目不太好设定,可以使用交叉验证来进行确定;

数据不平衡导致分类精度下降;

训练比较耗时,每次重新选择当前分类器最好切分点;

对异常样本敏感,异常样本在迭代中可能会获得较高的权重,影响最终的强学习器的预测准确性。

适用场景及主要应用领域

在机器学习的算法中,Adaboost 算法是一种比较重要且通用的用于特征分类的算法,在图像检索和人脸表情识别等问题中都有普遍应用。从现状看,人们对Adaboost 算法的研究及应用主要集中用于分类问题上,另外在某些回归问题上也有所涉及,比如两类问题、多类单标签问题、多类多标签问题和回归问题。

Adaboost 在机器学习领域中十分重要,它是一种提高任意给定学习算法准确度的方法。也就是说,Adaboost 算法为其他算法提供了一种框架结构,而其他算法只在其中作为子分类器,因此 Adaboost 算法可以运用在许多方面的实践上。

通过 Adaboost 算法

  1. 可以实现手写体字符识别,运用到了许多输入设备上,如流行的触屏手机上的手写输入、笔记本电脑的手写输入、扫描仪扫面文字转化为电子文档。

  2. 图像识别,如人脸识别、google 上的图片检索功能(很方便地找到想要的清晰度更高的图片)。我们实现了语音识别,现在的WIN7上都有了一个语音识别的功能,我们能够让计算机知道我们说了什么话,并通过机器自动学习提高语音识别的精度,声音输入和声控很可能在未来普及。

  3. Adaboost 算法还能做文本分类和医疗诊断等等。

6.EM算法

最大期望算法(Expectation-maximization algorithm,又译为期望最大化算法),是在概率模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型依赖于无法观测的隐性变量。

以打猎为例做一个形象的比喻:

比如你一位同学和一位猎人一起外出打猎,一只野兔从前方窜过。只听一声枪响,野兔应声到下,如果要你推测,这一发命中的子弹是谁打的?你就会想,只发一枪便打中,由于猎人命中的概率一般大于你那位同学命中的概率,从而推断出这一枪应该是猎人射中的。

这个例子所作的推断就体现了最大似然法的基本思想。

多数情况下我们是根据已知条件来推算结果,而最大似然估计是已经知道了结果,然后寻求使该结果出现的可能性最大的条件,以此作为估计值。

EM算法注意点

  • 对初始化数据敏感。

  • EM算法计算复杂,收敛较慢,不适于大规模数据集和高维数据。

  • 当所要优化的函数不是凸函数时,EM算法容易给出局部最优解,而不是全局最优解。

适用场景及主要应用领域

  1. K-Means聚类

K-Means是EM算法的一个特列。在K-Means聚类时,每个聚类簇的质心是隐含数据。我们会假设K个初始化质心,即EM算法的E步;然后计算得到每个样本最近的质心,并把样本聚类到最近的这个质心,即EM算法的M步。重复这个E步和M步,直到质心不再变化为止,这样就完成了K-Means聚类。

  1. 高斯混合模型

高斯混合模型(Gaussian Misture Model)的参数估计是EM算法的一个重要应用。高斯混合模型应用广泛,在许多情况下, EM算法是学习高斯混合模型的有效方法。

  1. 隐马尔科夫模型

EM算法的另一个重要应用是隐马尔科夫模型。

算法的选择取决于许多因素,比如问题陈述、预期的输出类型、数据的类型和大小、可用的计算时间、特征数量以及数据中的观测点等,以上内容仅供大家在选择算法时作为参考,实践和运行才是评估算法的最佳标准。

感谢观看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/9228.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32理论 —— μCOS-Ⅲ(新)

文章目录 1. 任务调度器1.1 抢占式调度 μCos-Ⅲ全称是Micro C OS Ⅲ,由Micriμm 公司发布的一个基于C 语言编写的第三代小型实时操作系统(RTOS); RTOS 与裸机相比最大的优势在于多任务管理与实时性,它提供了多任务管理和任务间通信的功能&a…

一文玩转Vue3参数传递——全栈开发之路--前端篇(8)

全栈开发一条龙——前端篇 第一篇:框架确定、ide设置与项目创建 第二篇:介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇:setup语法,设置响应式数据。 第四篇:数据绑定、计算属性和watch监视 第五篇 : 组件…

电脑桌面定时提醒软件 有定时提醒功能的软件有哪些

对于很多上班族来说,在电脑、手机上使用一款定时提醒软件,是非常有必要的。一款定时提醒软件能让我们对即将进行的工作一目了然,防止遗漏或错过重要事务。其次,通过设定提醒,我们可以更好地安排自己的时间,…

基于springboot实现医院药品管理系统项目【项目源码+论文说明】

基于springboot实现医院药品管理系统演示 摘要 身处网络时代,随着网络系统体系发展的不断成熟和完善,人们的生活也随之发生了很大的变化,人们在追求较高物质生活的同时,也在想着如何使自身的精神内涵得到提升,而读书就…

社交媒体数据恢复:新浪微博

当我们在使用新浪微博时,可能会遇到一些意外情况,如误删微博、账号出现问题等。这时,我们需要进行数据恢复。本文将详细介绍如何在新浪微博中进行数据恢复。 首先,我们需要了解新浪微博的数据恢复功能。根据微博的帮助中心&#…

Android11 InputManagerService启动流程分析

InputManagerService在systemserver进程中被启动 //frameworks\base\services\java\com\android\server\SystemServer.java t.traceBegin("StartInputManagerService"); inputManager new InputManagerService(context);//1 t.traceEnd(); //省略 //注册服务 Servi…

socket实现TCP UDP

1、socket通信建立流程 1.1、创建服务端流程 使用 socket 函数来创建 socket服务。 使用 bind 函数绑定端口。 使用 listen 函数监听端口。 使用 accept 函数接收客户端请求。 1.2、创建客户端流程 使用 socket 函数来创建 socket 服务。 使用 connect 函数连接到 socke…

基于springboot+jsp+Mysql的商务安全邮箱邮件收发

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

【强训笔记】day16

NO.1 代码实现&#xff1a; class StringFormat { public:string formatString(string A, int n, vector<char> arg, int m) {string ret;int j0;for(int i0;i<n;i){if(A[i]%){if(i1<n&&A[i1]s){retarg[j];i;}else {retA[i];}}else {retA[i];}}while(j&l…

设计模式之拦截过滤器模式

想象一下&#xff0c;在你的Java应用里&#xff0c;每个请求就像一场冒险旅程&#xff0c;途中需要经过层层安检和特殊处理。这时候&#xff0c;拦截过滤器模式就化身为你最可靠的特工团队&#xff0c;悄无声息地为每一个请求保驾护航&#xff0c;确保它们安全、高效地到达目的…

小白必看:数据防泄密软件介绍|安在云和Ping32对比?

在当今数字化时代&#xff0c;数据防泄密软件已经成为企业和组织不可或缺的重要工具。随着信息技术的发展&#xff0c;企业面临着越来越多的网络安全威胁&#xff0c;数据泄露事件也屡见不鲜。数据防泄密软件的出现&#xff0c;为企业提供了有效的解决方案。 一、数据防泄密软…

wlan二层旁挂组网实验

实验拓扑图 代码&#xff1a; SW1 <Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]sysn sw1 [sw1]undo info-center enable Info: Information center is disabled. [sw1]vlan batch 10 20 30 Info: This operation may take a few seconds. …

Linux网络——自定义序列化与反序列化

前言 之前我们学习过socket之tcp通信&#xff0c;知道了使用tcp建立连接的一系列操作&#xff0c;并通过write与read函数能让客户端与服务端进行通信&#xff0c;但是tcp是面向字节流的&#xff0c;有可能我们write时只写入了部分数据&#xff0c;此时另一端就来read了&#x…

rk3588局域网推流

最近无意间看见在网上有使用MediaMtx插件配合ffmpeg在Windows来进行推流&#xff0c;然后在使用其他软件进行拉流显示数据图像的&#xff0c;既然windows都可以使用 &#xff0c;我想linux应该也可以&#xff0c;正好手上也有一块RK3588的开发板&#xff0c;就测试了一下&#…

【每日刷题】Day35

【每日刷题】Day35 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 844. 比较含退格的字符串 - 力扣&#xff08;LeetCode&#xff09; 2. 2487. 从链表中移除节点 - 力…

【启明智显技术分享】“ESP-IDF环境搭建全攻略:告别基于乐鑫方案彩屏开发中的搭建难题”

前言&#xff1a; 【启明智显】专注于HMI&#xff08;人机交互&#xff09;及AIoT&#xff08;人工智能物联网&#xff09;产品和解决方案的提供商&#xff0c;我们深知彩屏显示方案在现代物联网应用中的重要性。为此&#xff0c;我们一直致力于为客户提供彩屏显示方案相关的技…

银行职员向媒体投稿发文章我找到了好方法

作为一名基层银行的媒体联络专员,我的日常工作中有一项至关重要的任务,那就是代表我所在的支行向各大媒体投稿,传播我们的金融服务、产品动态以及社会责任实践。起初,这项看似简单的工作却成了我职业生涯中的一大挑战。传统的邮件投稿方式,不仅耗时费力,而且审核流程严格,稿件从…

springboot3+springsecurity+redis 整合登录认证以及权限校验

1. 架构说明 整体架构如下(提供的对应的模块引入)&#xff0c;围绕着springsecurity中的三大核心展开&#xff1a; ​ 1、Authentication&#xff1a;存储了认证信息&#xff0c;代表当前登录用户 ​ 2、SeucirtyContext&#xff1a;上下文对象&#xff0c;用来获取Authenti…

扩散模型~

推荐&#xff1a;write_own_pipeline.ipynb - Colab (google.com) 基本管道 一直显示NVIDIA有问题&#xff0c;所以就把.to("cuda")去掉了&#xff0c;使用Colab运行的&#xff0c;代码如下&#xff1a; from diffusers import DDPMPipelineddpm DDPMPipeline.fr…

Java实战:验证改进的哥德巴赫猜想

改进的哥德巴赫猜想&#xff08;Improved Goldbach’s Conjecture&#xff09;声称每个大于5的奇数都可以表示为三个素数之和。这个猜想是对原始哥德巴赫猜想的扩展&#xff0c;针对奇数的情况。原始哥德巴赫猜想是指每个大于2的偶数都可以表示为两个素数之和。尽管改进的哥德巴…