机器学习经典算法系列:小白也能看懂的7种分类算法

360影视 国产动漫 2025-03-27 15:04 2

摘要:本文深入浅出地介绍了机器学习领域中7种经典的分类算法,包括朴素贝叶斯、决策树、随机森林、逻辑回归、支持向量机、K近邻法和自适应增强算法。通过生动的比喻、实际的应用场景和算法之间的对比,帮助读者理解每种算法的核心原理、优缺点以及适用场景,为初学者提供了一份清晰易

本文深入浅出地介绍了机器学习领域中7种经典的分类算法,包括朴素贝叶斯、决策树、随机森林、逻辑回归、支持向量机、K近邻法和自适应增强算法。通过生动的比喻、实际的应用场景和算法之间的对比,帮助读者理解每种算法的核心原理、优缺点以及适用场景,为初学者提供了一份清晰易懂的学习指南。

受LLM大模型的影响,传统机器学习算法也在今年开始逐渐有更多客户愿意尝试了;而以前我也对算法这件事充满了向往和好奇,觉得是一门很厉害的技术。于是最近准备恶补一下机器学习算法基础。

机器学习常见的传统模型有分类算法、聚类算法、关联分析和连接分析,每一种算法类型都适用于不同的任务场景,其中也拥有众多具体的算法模型。

以分类算法为例,顾名思义,主要是用来做分类任务的,常见场景有垃圾邮件过滤(例如分析某些垃圾单词,去分析其是垃圾邮件的概率)、情感分析(如客户/读者对于内容的正面/中立/负面情绪)、主题分类(例如一篇新闻该分到哪个主题下)。

而在具体的分类算法类型中,也有决策树、随机森林等好几种算法,适用于不同场景、各有优劣。

那么,本期,我们先从分类算法讲起,主要包含7种常见且经典的分类算法模型:

1. 朴素贝叶斯NB(Naive Bayes):假设所有特征独立的概率计算法

2. 决策树DT(Decision Tree):算出一套规则来画一棵分类树

3. 随机森林RF(Random Forest):随机抽取特征、算出多套规则来画多棵分类树(三个臭皮匠、赛过诸葛亮)

4. 逻辑回归LR(Logistic Regression):如果呈现线性关系,用一条线来区分

5. 支持向量机SVM(Support Vector Machine):如果呈现非线性关系,用一个超平面来区分

6. K近邻法KNN(K-Nearest Neighbors):近朱者赤、近墨者黑,找和你最相似的群体,看看他们是好是坏

7. 自适应增强AdaBoost(Adaptive Boosting):用错题集的方式持续迭代和纠正,以达到最优效果

一、朴素贝叶斯

托马斯·贝叶斯(Thomas Bayes,1702-1761),18世纪英国神学家、数学家、数理统计学家和哲学家,概率论理论创始人,贝叶斯统计的创立者,“归纳地”运用数学概率,“从特殊推论一般、从样本推论全体”的第一人。

先不要被这个名字唬到了,贝叶斯是一个人,他提出了一套贝叶斯概率理论,而朴素英文则是naive(朴素、天真),这是因为其对原始贝叶斯理论做了一层假设——即各个特征(如身高、体重、学历)之间是独立且互相没有关联的,这其实在现实生活中是不现实的,因为身高和体重某种程度上还是具有一定联系,所以称其为naive(朴素、天真),但其大大简化了算法模型的难度,在一定简单的场景下高效且适用。

朴素贝叶斯的原理就是我们上学时候所做的数学题:比如在A和B两个盒子里放了一定已知数量的红球和白球,最后求取出1颗红球属于哪个盒子。

这个公式虽然不是很复杂,但是有点绕,大家感兴趣可以下来自行了解。但是朴素贝叶斯背后隐含的含义就是:通过计算过去特征在不同条件下的概率(比如,在盒子A里红球的概率)、红球本身的概率、选择2个盒子的概率,来计算出当拿出来一颗红球后,该球属于盒子A和盒子B谁的概率更大,更大的那个就被选择作为最终的分类结果。

整体来看,显而易见,因为足够朴素足够naive,所以朴素贝叶斯计算简单、速度快、适合大规模的文本数据;但缺点也同样明显,这种前提假设导致无法挖掘特征背后关联,同时,同义词如果较多,也可能会高估对应的概率(可以考虑通过同义词特征做组合、选择独立和相关性高的特征来做优化)。

二、决策树&随机森林

到了决策树和随机森林就好理解多了,毕竟它是有图像符号、有直观规则可以去看的;其本身就是模拟人类决策过程,所以和我们日常去做一些决策时画的思维导图有点类似。

以下图为例,这就是一个保险客户是否会续保的决策树,每一个节点都是影响分类结果(是否会续保)的特征节点。例如第1个节点是年龄,第2个节点则是婚姻状况。

这张图很直观很好理解,那么,这里最关键的点就在于这棵树是怎么画出来的?

其实是计算机会根据数据集中的每一个特征去计算「不纯度减少量」,选择其中最大的结果作为分裂特征。那么,这个「不纯度减少量」怎么理解呢?其背后含义是——这个特征在数据集中的分布,能够最大程度区分不同的类别,在当下n个特征中,它与目标变量的关系最为显著。

例如,以上图为例,通过计算年龄、婚姻状况等特征和目标变量(是否续保)的关系,通过计算发现——年龄是最显著影响续保结果的1个特征,这时候就会将其作为第一个节点,同时选择使得分裂后子集纯度最高的阈值(即这里按照年龄

随后,循环这个过程,这棵树就出来了。

在这个过程中,决策树是应用了全量特征和全量训练集中的数据;而接下来我们要讲的随机森林和决策树核心逻辑类似,但区别则在于——多棵树+样本随机+特征随机。

随机森林的实现方式则是多次先随机且有放回的抽取N条训练集中的数据来训练、再随机地从M个特征中指定m个特征子集作为特征,从而最终生成多棵树——应用多个弱分类器(因为每个都是随机且部分的)来组成一个强分类器。

这样的好处就是不用单棵决策树来做预测,增加了预测准确率,不容易过拟合(即模型过度适应当前数据集呈现出来的特征,看起来当前预测很优秀,但缺乏了泛化能力;一旦拿到实际生产环境做预测,就无法准确应用了)。

整体而言,决策树适合小规模、低维度且对模型可解释性要求较高的场景,而随机森林则更适合处理大规模、高维度且需要高准确性和抗过拟合能力的场景。

三、逻辑回归&支持向量机

逻辑回归和支持向量机SVM则是一组按照边界去进行分类的方式,逻辑回归支持将符合线性关系的数据通过线性边界进行划分、而向量机不仅能支持线性可分的数据,还能支持通过几何边界(超平面)对线性不可分的数据进行分类划分。

我们先来看逻辑回归:如左图所示,如果能够应用一条线将数据清晰的划分为2类,那么则可以应用逻辑回归进行建模(例如,当房子面积为50时,房价为100万;而当房子面积为100时,房价为200万);而像右侧,则无法应用一条不封闭的线来进行区分、而需要一个圆,此时就无法应用逻辑回归进行处理,而要用到支持向量机SVM。

那么,支持向量机会如何去区分这个圆呢?

对于非线形数据,对应的处理方式则可以用到核技巧——先是使用一个变换将原空间的数据映射到新空间(例如更高维甚至无穷维的空间),然后在新空间里用线性方法从训练数据中学习得到模型。

形象但不精确一点的解释就是:在一堆点中找出一个「核」拎出来,原本平面的数据就变成了立体的数据,这样就可以找到一个超平面去将2个数据区分开来了。

其中,离这个超平面最近的向量则叫做——支持向量,相当于2堵将2个类别的数据隔开的墙壁;而支持向量机的核心思路就是想要各类样本点到超平面的距离达到最远,也就是找到最大间隔超平面。

总结而言,二者都相对更多应用于二分类场景(即只分成2类)中,但由于数据特征是否呈现线性关系来进行建模的区分。

逻辑回归因为简单好搭建、解释性更强,所以经常会在需要多次调优的算法建模中当作基线baseline、从而可以和后续调优后的算法效果进行对照;而支持向量机整体能够支持处理复杂决策边界和精度要求高的场景,但在实际操作过程中需要配置一些会影响结果的超参数,导致分类在一定程度上具有不可解释性。

四、K近邻法

前面已经把最经典和稍显复杂的5种类型讲完了,这里我们就简单来讲一讲什么叫做K近邻法。

K近邻法本质上其实和我们古话中的「近朱者赤、近墨者黑」的原理一样。假设有一组特征,基于样本之间的相似性,找出它最近的K个邻居,看这些邻居中分类最多的是什么,则这组特征最终就被分类为什么。

比如,有一个人身高165、体重100斤,而假设原始数据集中有3组数据「164cm、99斤、女」「162cm、100斤、女」「180cm、100斤、男」「180cm、180斤、男」,那么与其最相邻的3组数据则是「164cm、99斤、女」「162cm、100斤、女」「180cm、100斤、男」,这里男1女2,因此,判断这个人为女生。

如上图所示,待分类的数据中,找出了2个绿色和1个红色的结果,那么,则该类型就被判断为绿色。但是K近邻法的难度就在于到底该圈几个邻居,如上图所示,如果圈3个,为绿色居多;如果圈7个,则变成了红色居多。

K近邻法在理论上比较成熟,同时也是最简单的机器学习算法之一。它整体简单,适用于数据分布均匀、特征空间连续、快速构建的场景,但因为其仅仅通过相邻分类的结果来做判断、未提供明确的决策规则或概率输出,故可解释性相对较差。

五、自适应增强

最后一种则是Adaboost自适应增强算法,这是一种和前面6种都不太一样的思路:它不是直接正面去做分类和计算,而是迭代式思维+逆向思维——通过先快速应用一些基础模型(如1层深度的决策树)搭建一个弱学习器(指比胡乱分类效果好那么一丢丢的效果),再不断让模型刷错题本(一出错就回过头来调高误分类的权重)来优化下一次的弱学习器,从而组合成一个强学习器(分类效果相对较准),提升最终的分类效果。

如上图所示,要对红白蓝3个数据进行分类,第1次,红色正确,白蓝错误;第二次,降低红色权重,提升白蓝权重(作为错题本),再次进入第2个弱学习器中学习,得到了白色错误、蓝色正确;那么,第三次,自然就是提升白色权重,降低红蓝权重,最终达到3个都分类正确。

Adaboost的原理比较好理解,其实现也较为简单和灵活,但其对错误数据加权重的方式也可能会让算法给异常数据和噪声给予更高的权重,导致模型表现不佳。

总结和对比

学完7种模型,估计大家已经和我一样有点眼花缭乱了,那这里我们再汇总做一下对照和总结:

若追求高准确性,选择支持向量机、随机森林、自适应增强;若需要高解释性,选择逻辑回归、决策树;若计算资源有限,选择朴素贝叶斯、逻辑回归;若需要兼顾速度和准确性,选择随机森林。当然,这并不是绝对,最终在实践过程中既要结合实际场景和数据来做选择,也可以选择多个相对合适的场景来进行效果对比,最终选择合适模型。

来源:人人都是产品经理

相关推荐