Machine Learning: 十大基本机器学习算法

server/2025/3/16 12:26:26/

机器学习算法分类:监督学习、无监督学习、强化学习

基本的机器学习算法

        线性回归、支持向量机(SVM)、最近邻居(KNN)、逻辑回归、决策树、k平均、随机森林、朴素贝叶斯、降维、梯度增强。

机器学习算法大致可以分为三类:

  • 监督学习算法 (Supervised Algorithms):   在监督学习训练过程中,可以由训练数据集学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。该算法要求特定的输入/输出,首先需要决定使用哪种数据作为范例。例如,文字识别应用中一个手写的字符,或一行手写文字。主要算法包括神经网络、支持向量机、最近邻居法、朴素贝叶斯法、决策树等。
  • 无监督学习算法 (Unsupervised Algorithms):    这类算法没有特定的目标输出,算法将数据集分为不同的组。
  • 强化学习算法 (Reinforcement Algorithms):   强化学习普适性强,主要基于决策进行训练,算法根据输出结果(决策)的成功或错误来训练自己,通过大量经验训练优化后的算法将能够给出较好的预测。类似有机体在环境给予的奖励或惩罚的刺激下,逐步形成对刺激的预期,产生能获得最大利益的习惯性行为。

【一句话总结】
         监督学习:跟着老师学(有标准答案)
        无监督学习:自己找规律(无标准答案)
        强化学习:边玩边学(用奖惩调参数)


1. 线性回归算法 Linear Regression

        回归分析(Regression Analysis)是统计学的数据分析方法,目的在于了解两个或多个变量间是否相关、相关方向与强度,并建立数学模型以便观察特定变量来预测其它变量的变化情况。

      线性回归算法(Linear Regression)的建模过程就是使用数据点来寻找最佳拟合线。

2. 支持向量机算法(Support Vector Machine,SVM)

        支持向量机/网络算法(SVM)属于分类型算法。SVM模型将实例表示为空间中的点,将使用一条直线分隔数据点。需要注意的是,支持向量机需要对输入数据进行完全标记,仅直接适用于两类任务,应用将多类任务需要减少到几个二元问题。   尤其在二分类任务中效果显著。

原理:寻找最优超平面,最大化不同类别数据间的间隔。通过核函数(如高斯核)将数据映射到高维空间解决非线性问题。

3. 最近邻居/k-近邻算法 (K-Nearest Neighbors,KNN)

       KNN算法基于一个非常直观的思想:对于一个未知类别的数据点,可以通过查看它在特征空间中距离最近的K个邻居的类别或数值信息,来决定该数据点的类别或预测其值。

曼哈顿距离(街区距离):绝对值和,L1范数

欧氏距离(直线距离):平方和开方, L2范数

算法的主要步骤如下:

1. 计算距离:常用的距离度量方法有欧氏距离、曼哈顿距离等。对于一个待预测的数据点,计算它与训练集中所有数据点的距离。

2. 选择最近邻:根据计算得到的距离,选取距离最小的K个数据点

    ​优点:无需训练,简单直观,适合多分类问题


 最常用的「K 折交叉验证」步骤(以 5 折为例)

  1. 分块:把数据随机分成 5 份(每份叫「折」Fold)。
    (例:奶茶用户数据 1000 条 → 分 5 组,每组 200 条)
  2. 循环训练
    • 第 1 轮:用第 2-5 组(800 条)训练模型,测第 1 组(200 条)→ 得准确率 85%
    • 第 2 轮:用第 1,3-5 组训练,测第 2 组 → 得准确率 88%
    • ……(重复 5 次,每轮换不同的组当测试集)
  3. 汇总结果:5 次准确率的平均分(如 86.6%),作为模型真实水平。
1. k 越小:听「最铁邻居」的,可能踩坑
  • 例子:你选餐厅时,只问最近的 1 个邻居(k=1)。
    → 若邻居是素食者,ta推荐的素菜馆,可能不适合爱吃肉的你(过拟合,被局部噪声带偏)。
  • 优点:捕捉细节(比如小众宝藏店)。
  • 缺点:怕异常值(比如邻居那天心情不好乱推荐)。
  • 适合:数据干净、想保留细节的场景(如手写数字识别)。
2. k 越大:听「全班意见」,可能平庸
  • 例子:你问全班 50 个人(k=50),最终选了评分最高的连锁餐厅。
    → 虽然不踩雷,但可能错过你喜欢的特色小店(欠拟合,模糊了个体差异)。
  • 优点:抗噪声(少数差评被稀释)。
  • 缺点:忽略局部特征(比如你家楼下的隐藏好店)。
  • 适合:数据噪声大、想平滑结果的场景(如用户偏好预测)。

4. ​逻辑回归(Logistic Regression)​

原理:通过Sigmoid函数将线性组合映射到[0,1],输出概率值进行二分类,损失函数为交叉熵。参数估计使用最大似然法。

最大似然法:

最大似然法 =「数据侦探」                   核心:根据结果反推最合理的「剧本」(参数)。

最大似然法是一种基于概率模型的参数估计方法,其核心思想是通过观测数据反推最可能生成这些数据的模型参数


5. 决策树算法 Decision Tree

        决策树是通过一系列规则对数据进行分类的过程。它提供一种在什么条件下会得到什么值的类似规则的方法。

        决策树分为分类树和回归树两种,分类树对离散变量做决策树,回归树对连续变量做决策树。

       不同的算法(ID3、C4.5、CART)在特征选择上使用不同的指标,但递归分割数据构建决策树的基本思想是一致的。

  • 信息增益(ID3 算法):

        信息熵:信息熵是用来衡量数据纯度的指标,它表示数据的不确定性程度。

        信息增益:信息增益是指在划分数据集前后信息熵的减少量,它表示使用某个特征进行划分后,数据集的纯度提高了多少。

ID3 算法在构建决策树时,会选择信息增益最大的特征作为当前节点的分割特征。

  • 增益率(C4.5 算法):

   信息增益存在的问题:信息增益倾向于选择取值较多的特征,因为取值较多的特征会将数据集划分成更多的子集,从而使信息熵降低得更多。为了解决这个问题,C4.5 算法引入了增益率。

C4.5 算法在构建决策树时,会选择增益率最大的特征作为当前节点的分割特征。

  • 基尼指数(CART 算法):

基尼指数:基尼指数也是用来衡量数据纯度的指标,它表示从数据集中随机抽取两个样本,其类别不一致的概率。

CART 算法在构建决策树时,会选择基尼指数最小的特征作为当前节点的分割特征。

信息增益、增益率、基尼指数是决策树的 “灵魂指标”,其差异直接导致树结构和性能的分化。

        信息增益、增益率、基尼指数是决策树的 “灵魂指标”,信息增益、增益率、基尼指数是决策树的特征选择方法,与线性回归、SVM、KNN 无关。信息增益等指标仅用于决策树的特征分裂,而线性回归、SVM、KNN 需通过其他方式(如系数、核函数、距离权重)间接关联特征重要性。若要比较它们在 “构建决策树时的性能”,实际是比较【不同决策树算法(ID3/C4.5/CART)】在相同数据集上的表现。

        原理:递归分割数据,选择信息增益(ID3)、增益率(C4.5)或基尼指数(CART)最大的特征作为节点,生成树形结构。

一棵决策树的生成过程主要分为以下3个部分:

  •   特征选择: 是指从训练数据中众多的特征中选择一个特征作为当前节点的分裂标准,如何选择特征有着很多不同量化评估标准标准,从而衍生出不同的决策树算法
  • 决策树生成: 根据选择的特征评估标准,从上至下递归地生成子节点,直到数据集不可分则停止决策树停止生长。 树结构来说,递归结构是最容易理解的方式。
  • 决策树剪枝: 决策树容易过拟合,一般来需要剪枝,缩小树结构规模、缓解过拟合。剪枝技术有预剪枝和后剪枝两种。

注意:对于那些各类别样本数量不一致的数据,在决策树当中信息增益的结果偏向于那些具有更多数值的特征。

6. k-平均算法 K-Means

      k-平均算法(K-Means)是一种无监督学习算法,为聚类问题提供了一种解决方案。
K-Means 算法把 n 个点(可以是样本的一次观察或一个实例)划分到 k 个集群(cluster),使得每个点都属于离他最近的均值(即聚类中心,centroid)对应的集群。重复上述过程一直持续到重心不改变。

原理:通过迭代优化,将数据划分为K个簇,使簇内样本距离质心最近。目标是最小化簇内平方误差。

7. 随机森林算法 Random Forest

        随机森林算法(Random Forest)的名称由 1995 年由贝尔实验室提出的random decision forests 而来,正如它的名字所说的那样,随机森林可以看作一个决策树的集合。
随机森林中每棵决策树估计一个分类,这个过程称为“投票(vote)”
。理想情况下,我们根据每棵决策树的每个投票,选择最多投票的分类。

原理集成多棵决策树,通过Bagging(有放回抽样)和随机特征选择降低方差,最终投票或平均结果。

8. 朴素贝叶斯算法 Naive Bayes        

        朴素贝叶斯的核心思想基于贝叶斯定理,通过计算后验概率来进行分类。其“朴素”之处在于假设特征之间是条件独立的,这一假设虽然在实际应用中并不总是成立,但在许多情况下,朴素贝叶斯依然能够取得令人满意的分类效果。这使得朴素贝叶斯成为许多实际应用中的首选模型,尤其是在处理高维数据和大规模数据集时,展现出其独特的优势。

        贝叶斯学派(Bayesian)在概率模型的参数估计中,认为参数是未观察到的随机变量,并且可以为其假设一个先验分布(prior distribution)。然后,基于观测到的数据,通过贝叶斯定理计算参数的后验分布(posterior distribution)。这一过程体现了贝叶斯统计的核心思想:将先验知识与观测数据结合,更新对参数的信念。

        朴素贝叶斯是一种超级 “单纯” 的分类算法,核心思想就像 “看菜下饭”—— 通过统计 “特征组合” 出现的概率来判断类别。


 为什么叫 “朴素”?

        因为它做了一个 “天真” 的假设:所有特征之间完全独立(比如西瓜的 “表皮” 和 “重量” 互不影响)。虽然现实中特征可能相关(比如重的西瓜可能更成熟,表皮更光滑),但这个假设让计算变得超级简单,而且在文本分类(如垃圾邮件过滤)等场景中效果惊人。

        朴素贝叶斯就像一个 “统计小能手”,先数清楚每个类别里各个特征出现的次数,再假设特征之间互不干扰,最后用 “概率投票” 决定新样本的类别 —— 简单粗暴,但好用!


9. 降维算法 Dimensional Reduction

        在机器学习和统计学领域,降维是指在限定条件下,降低随机变量个数,得到一组“不相关”主变量的过程,并可进一步细分为特征选择和特征提取两大方法。

        一些数据集可能包含许多难以处理的变量。特别是资源丰富的情况下,系统中的数据将非常详细。在这种情况下,数据集可能包含数千个变量,其中大多数变量也可能是不必要的。在这种情况下,几乎不可能确定对我们的预测影响最大的变量。此时,我们需要使用降维算法,降维的过程中也可能需要用到其他算法例如借用随机森林,决策树来识别最重要的变量。

原理:减少特征数量,保留主要信息。线性方法如PCA(主成分分析)通过方差最大化投影。

特点

  • 优点:降低计算成本,去除噪声,可视化高维数据
  • 缺点:可能丢失部分信息(如PCA对非线性关系失效)
  • 应用:图像压缩、数据预处理,用于特征工程阶段

10. 梯度增强算法 Gradient Boosting

        梯度增强算法(Gradient Boosting)使用多个弱算法来创建更强大的精确算法。它与使用单个估计量不同,而是使用多个估计量创建一个更稳定和更健壮的算法

原理:迭代训练弱学习器(通常为决策树),每轮拟合残差的负梯度,逐步减少损失函数(如MSE、交叉熵)。XGBoost、LightGBM为其优化版本。

​ GBDT(Gradient Boosting Decision Tree),全名叫梯度提升决策树,使用的是Boosting的思想。 ​

1.1 Boosting思想

        Boosting方法训练   基分类器   时采用串行的方式,各个  基分类器  之间有依赖。它的基本思路是将  基分类器  层层叠加,每一层在训练的时候,对前一层  基分类器  分错的样本,给予更高的权重。测试时,根据各层分类器的结果的加权得到最终结果。

        Bagging与Boosting的串行训练方式不同,Bagging方法在训练过程中,各基分类器之间无强依赖,可以进行并行训练。

1.2 GBDT原来是这么回事

        GBDT的原理很简单,就是所有弱分类器的结果相加等于预测值,然后下一个弱分类器去拟合误差函数对预测值的残差(这个残差就是预测值与真实值之间的误差)。当然了,它里面的弱分类器的表现形式就是各棵树。

        在 GBDT 里,当我们训练完足够多的决策树后,把每棵树的预测结果累加起来,再加上最初的基础预测值,就得到了一个非常接近真实值的预测结果。

 面试常问: 

  • 「随机森林和 GBDT 的区别???」—— 前者是并行投票的「佛系树群」,后者是串行纠错的「卷王树群」
  •   每个算法配一个简笔画小场景,比如 KNN 画 5 个小人围着新用户,SVM 画一条宽线隔开猫猫狗狗

http://www.ppmy.cn/server/175421.html

相关文章

华为重拳出击!华为重拳出击!华为重拳出击!

大家好,我是小程程。 华为出了一个大瓜哦! 华为多名产品线负责人被开除 据财新网 3 月 10 日报道,华为最近发了一则内部通报: 华为称,经审计发现,(ICT 产品与解决方案,半导体业务部、…

基于微信小程序开发的宠物领养平台——代码解读

项目前端 一、项目的技术架构概况 一句话概括:该项目是基于微信小程序开发的宠物领养平台,采用原生小程序框架进行用户界面的构建,使用 wx.request 进行 API 请求,并通过 getApp() 和本地存储来管理全局状态和用户信息。 一&am…

当AI学会“察言观色“:多模态情绪识别的魔幻现实主义之旅

引言:AI读脸时代的荒诞与真实 2025年的某个深夜,程序员小李开发的"情绪识别AI"把老板的假笑误判为"愤怒",导致全员收到《关于禁止皮笑肉不笑的通知》。这场乌龙揭开了单模态识别的遮羞布——原来AI和人一样&#xff0c…

Express.js 是一个轻量级、灵活且功能强大的 Node.js Web 应用框架

Express.js 是一个轻量级、灵活且功能强大的 Node.js Web 应用框架,广泛用于构建 Web 应用程序和 API。它以其简洁的语法和模块化设计而闻名,非常适合快速开发后端服务。以下是关于 Express.js 的详细介绍以及如何高效使用它的指南。 1. Express.js 的核…

2025 职业革命:AI 重构就业图谱的生存法则

一、技术迭代下的产业剧变 2025 年的春天,全球科技界正在见证人工智能的第三次浪潮。根据麦肯锡最新发布的《全球就业趋势报告》,大模型技术已渗透至 83% 的行业领域。以医疗行业为例,IBM Watson 的诊断准确率已达 98.7%,超越资深…

【论文阅读】AlexNet——深度学习奠基作之一

原文链接 Step 1 1. titleabstract 第一句:告诉我干了什么事情 我们训练了一个很大很深的卷积神经网络,用来对120w个图片作分类,这里面有1000个类 第二句:结果 在测试集上面,top-1 error37.5%,top-517.0…

MobileNet家族:从v1到v4的架构演进与发展历程

MobileNet 是一个专为移动设备和嵌入式系统设计的轻量化卷积神经网络(CNN)家族,旨在在资源受限的环境中实现高效的图像分类、对象检测和语义分割等任务。自 2017 年首次推出以来,MobileNet 经历了从 v1 到 v4 的多次迭代&#xff…

用Deepseek写一个 HTML 和 JavaScript 实现一个简单的飞机游戏

大家好!今天我将分享如何使用 HTML 和 JavaScript 编写一个简单的飞机游戏。这个游戏的核心功能包括:控制飞机移动、发射子弹、敌机生成、碰撞检测和得分统计。代码简洁易懂,适合初学者学习和实践。 游戏功能概述 玩家控制:使用键…