当前位置: 首页 > news >正文

机器学习算法常用算法

一.监督学习

决策树

决策树是一种直观观、可解释性强的监督学习算法,因结构类似 “树” 而得名,广泛用于分类和回归任务。其核心是通过对数据特征的逐步划分,将复杂问题拆解为简单子问题,最终得到清晰的决策规则。

决策树由根节点(初始特征)、内部节点(中间特征)、叶节点(最终输出:类别或数值)和分支(特征取值对应的划分规则)组成。

构建决策树

  • 从根节点开始,计算所有特征的 “信息增益”(或基尼系数、MSE),选择最优特征作为当前节点。
  • 按该特征的不同取值,将数据集划分为若干子数据集,每个取值对应一个分支。
  • 对每个子数据集递归执行上述步骤,直至满足停止条件:
    • 子数据集中所有样本属于同一类别(分类)或误差小于阈值(回归);
    • 没有更多特征可划分;
    • 子数据集样本数小于最小阈值(避免过拟合)。

以 “银行贷款审批” 为例,决策树可通过客户的特征(如收入、信用评分、工作年限等)自动生成审批规则,直观且可解释。以下是具体案例:

银行需根据客户的 3 个特征决定是否批准贷款:

  • 特征 1:月收入(高 / 中 / 低,高 = 月收入 > 2 万,中 = 5k~2 万,低 < 5k)
  • 特征 2:信用评分(优 / 良 / 差,优 > 700,良 = 600~700,差 < 600)
  • 特征 3:工作年限(长 / 短,长≥3 年,短 < 3 年)

随机森林

随机森林是一种基于决策树的集成学习方法,依赖带标签的训练数据(即输入特征与对应的输出标签)进行训练,适用于分类和回归等监督学习任务。

背景:由于决策树(DT)会产生过拟合现象,导致泛化能力变弱,美国贝尔实验室大牛采用随机森林(RF)投票机制来改善决策树

随机的含义:
1, 对样本进行随机, 样本的个数是一样的
2, 对特征进行随机,特征数是一样的

随机森林的工作流程:

数据预处理:对原始数据进行清洗和标准化,以确保算法的有效运行。
自助采样:从原始数据集中通过自助采样的方式抽取多个不同的训练数据集。自助采样允许数据集中的样本重复出现,这意味着每个训练集的大小与原始数据集相同,但包含一些重复的样本。
特征随机选择:在每棵树的每个分裂节点上,随机选择一部分特征,而不是考虑所有可能的特征。这一步进一步增加了模型的多样性,并有助于减少过拟合。
决策树构建:使用每个训练数据集构建决策树,直到每个树达到其最大深度或达到其他停止条件。
预测和聚合:对于分类问题,每棵树给出一个预测,最终的预测结果是所有树预测结果的多数投票;对于回归问题,则是所有树预测结果的平均值。

支持向量机

支持向量机(SVM,Support Vector Machine)是一种经典的监督学习算法,核心作用是在特征空间中找到最优的分类超平面,实现对数据的精准分类,同时也可通过扩展用于回归任务。它在小样本、高维数据(如文本分类)中表现尤为出色,是机器学习中的 “经典利器”。

1.当两类样本能被一个超平面完美分隔(线性可分)时,SVM 的目标是找到 “最优超平面”:

  • 分隔性:超平面能将两类样本完全分开(如正类在超平面一侧,负类在另一侧)。

  • 最大间隔:超平面到两侧最近样本的距离(间隔)最大。

    • 直观理解:想象两类样本分布在一条直线两侧,SVM 会找一条 “正中间” 的直线,让这条直线到两边最近的点距离最大 —— 这样即使新样本有轻微扰动,也不容易被误分类,模型更稳定。
    • 支持向量:距离超平面最近的那些样本点(正是这些点决定了超平面的位置,其他样本对超平面无影响),这也是 “支持向量机” 名称的由来。

2.现实中数据往往线性不可分,此时 SVM 通过 “软间隔” 机制允许少量样本被误分类,核心是:

  • 放松 “完全分隔” 的要求,允许部分样本落在间隔内甚至超平面另一侧。
  • 引入 “惩罚系数 C”:C 越大,对误分类样本的惩罚越重,模型越倾向于严格分隔(可能过拟合);C 越小,允许更多误分类,模型更宽松(可能欠拟合)。

3.当数据用线性超平面无法分隔(如样本呈环形分布),SVM 的解决方案是:

  • 低维到高维映射:将原始低维特征空间的数据映射到更高维空间,使原本非线性可分的数据在高维空间中线性可分。例如:二维平面中环形分布的样本,映射到三维空间后可能变成线性可分的。
  • 核函数(Kernel Function):直接在低维空间计算高维空间的内积(避免高维映射的计算爆炸)。常用核函数:
    • 线性核(Linear Kernel):适用于线性可分数据,等价于原始 SVM。
    • 径向基核(RBF Kernel):最常用,能处理大部分非线性数据(通过调节参数 σ 控制映射后的复杂度)。
    • 多项式核(Polynomial Kernel):适用于特征间有多项式关系的数据。

KNN(K 近邻算法)

KNN 属于 “懒惰学习”,核心特点是 **“不训练模型,只存储数据”**:

  • 训练阶段几乎无计算成本,仅需存储所有训练样本,无需像逻辑回归那样拟合参数、像决策树那样拆分节点。
  • 预测阶段才进行核心计算(算距离、找邻居、投票 / 平均),且预测速度随训练数据量增加而变慢(需对比所有样本)。

KNN 算法的核心作用是通过 “找相似邻居” 来分类或回归,本质是用已知样本的信息推断未知样本,比如根据用户的历史消费行为(邻居)判断新用户是否会购买商品。

二.无监督学习

K - 均值(K-Means)聚类算法

K-Means 是机器学习中最经典的无监督聚类算法,核心作用是将无标签的数据自动划分成 K 个 “相似” 的群体(簇),比如根据用户消费习惯划分客户群体、根据图像像素特征聚类相似图片。无法直接用于分类,但可以进行辅助分类任务。

1. 准备阶段:确定 K 值与预处理
  • 确定 K 值:K 是用户预先设定的 “簇的数量”(需根据业务需求或通过肘部法则等方法选择,本例 K=3)。
  • 数据预处理:若特征单位差异大(如消费金额是 0-10000 元,购买频率是 0-30 次 / 月),需先将特征标准化(如缩放到 0-1 范围),避免某一特征在距离计算中占主导。
2. 第 1 步:随机初始化 K 个簇中心

从 1000 个用户样本中,随机选择 3 个样本作为初始的 “簇中心”(即 3 个群体的 “代表”)。例如:初始中心 A(消费 5000 元,频率 15 次)、中心 B(消费 2000 元,频率 5 次)、中心 C(消费 8000 元,频率 25 次)。

3. 第 2 步:计算距离,给每个样本分配簇

对每个用户样本,计算它与 3 个簇中心的 “欧氏距离”(衡量样本与中心的相似度,距离越近越相似),将样本分配到距离最近的簇中。

  • 示例:用户 X(消费 4500 元,频率 14 次),计算得与中心 A 的距离最近,因此将 X 归入 A 簇;用户 Y(消费 1800 元,频率 6 次)与中心 B 距离最近,归入 B 簇。
  • 最终 1000 个用户会被分成 3 个簇(A 簇、B 簇、C 簇)。
4. 第 3 步:更新簇中心(重新计算 “代表”)

对每个簇,计算该簇内所有样本特征的 “平均值”,将这个平均值作为新的簇中心,替代原来的中心。

  • 示例:A 簇有 300 个用户,计算这 300 个用户的平均消费金额(如 4800 元)和平均购买频率(如 14 次),新的 A 簇中心变为(4800,14);同理更新 B 簇和 C 簇的中心。
5. 第 4 步:重复迭代,直到收敛

重复 “第 2 步(分配样本)→第 3 步(更新中心)” 的过程,直到簇中心的位置不再明显变化(或变化小于预设阈值),此时聚类结果稳定,算法停止。

  • 收敛后,3 个簇的中心会稳定在各自群体的 “核心位置”,比如 A 簇(中等消费、中等频率)、B 簇(低消费、低频率)、C 簇(高消费、高频率),对应三类不同的用户群体。

三.集成学习

Boosting(提升法)

Boosting方法是一种迭代的集成学习技术,旨在通过逐步构建弱学习器并关注前一轮学习器的错误来提高整体模型的性能。这种方法的核心思想是,通过一系列简单的模型,如决策树桩,逐步纠正前一轮模型的不足,最终构建出一个强学习器

Boosting方法有几种不同的变体,其中最著名的包括AdaBoost、Gradient Boosting和XGBoost。

AdaBoost(Adaptive Boosting)

  1. 初始时给所有样本相同权重,训练第一棵树。
  2. 提高前一棵树预测错误的样本权重,降低预测正确的样本权重,让下一棵树更关注 “难分样本”。
  3. 每棵树有不同权重,预测错误率低的树权重更高,最终结果是所有树的加权投票(分类)或加权平均(回归)。

Gradient Boosting(梯度提升):对 AdaBoost 的优化,用 “梯度” 定义 “错误”。

  1. 不直接调整样本权重,而是假设前一轮集成模型的预测结果与真实值的 “残差”(差距),是下一棵树需要拟合的目标。
  2. 用 “梯度下降” 的思路,让每棵新树沿着 “减少残差” 的方向优化,本质是拟合 “残差的负梯度”,比 AdaBoost 更灵活、更易优化。

XGBoost(极端梯度提升):Gradient Boosting 的工程化升级版。

  1. 在 Gradient Boosting 基础上,加入了正则化项(控制树的复杂度),有效避免过拟合。
  2. 支持并行计算(不是树的并行训练,而是特征分裂时的并行搜索),训练速度远快于传统 Gradient Boosting。
  3. 能处理缺失值(自动学习缺失值该分到左子树还是右子树),功能更完善

Bagging(汇聚法)

Bagging的核心思想是通过自助采样(bootstrap sampling)从原始数据集中抽取多个小规模的训练数据集。每个小数据集的大小通常与原始数据集相同,但允许有重复的样本。然后,在每个小数据集上独立地训练一个基学习器,这些基学习器通常是相同的模型,例如决策树。由于每个基学习器都是在不同的数据子集上训练的,因此它们之间具有一定的独立性。

Bagging方法通过聚合所有基学习器的预测结果来得到最终的预测。对于分类问题,通常采用投票机制,即选择得票最多的类别作为最终预测结果;对于回归问题,则通常采用平均值,即计算所有基学习器预测结果的平均值作为最终预测。

Stacking(堆叠法)

核心思想是用多个基础模型的预测结果作为新特征,再训练一个 “元模型”(meta-model)来输出最终预测,相当于 “模型的模型”。

Stacking 的流程可以简单分为 “基础模型层” 和 “元模型层”,通过两层模型的组合提升性能,具体步骤如下:

  1. 第一步:训练多个基础模型(Base Models)选择不同类型的基础模型(如随机森林、SVM、逻辑回归、XGBoost 等),用原始训练数据独立训练。核心目的:让每个基础模型从不同角度学习数据模式(比如树模型擅长捕捉非线性关系,线性模型擅长捕捉线性关系),保证多样性。

  2. 第二步:生成 “元特征”(Meta Features)用训练好的基础模型,对训练集进行预测(为了避免过拟合,通常用交叉验证的方式,即每个样本的预测值来自未参与训练它的模型),得到的预测结果作为 “新特征”(元特征)。举例:假设用 3 个基础模型,原始训练集有 1000 个样本,那么元特征就是一个 1000×3 的矩阵(每个样本对应 3 个模型的预测值)。

  3. 第三步:训练元模型(Meta Model)用 “元特征” 作为新的训练数据,原始标签作为目标,训练一个元模型(通常是简单模型,如逻辑回归、线性回归)。核心目的:学习如何最优地组合基础模型的预测结果(比如给表现好的模型更高权重,或捕捉基础模型之间的互补关系)。

  4. 第四步:最终预测对新样本,先让所有基础模型输出预测值(形成元特征),再输入元模型,得到最终结果。

http://www.dtcms.com/a/532272.html

相关文章:

  • Gorm(七)关联的Tag写法
  • 零基础理解k8s
  • *Python基础语法
  • 广东卫视你会怎么做网站化妆品网站的建设方案
  • WPF 静态样式与动态样式的定义及使用详解
  • 有没有专业做盐的网站手机wap网站程序
  • 【线程同步系列6】一个基于VC封装的多线程类CMyThread(类似QT中的QThread类的run方法)
  • python+vue旅游购票管理系统设计(源码+文档+调试+基础修改+答疑)
  • 宠物管理|宠物店管理|基于SSM+vue的宠物店管理系统(源码+数据库+文档)
  • 站内关键词自然排名优化制作图片的免费软件
  • Cline中模型识别任务与clinerules相关性的实现逻辑
  • Linux 进程面试考点:进程状态、通信方式、信号量等关键问题速记
  • 网站建设有哪些类型西昌网站建设公司
  • 风中有朵雨做的云网站观看美容网站开发
  • Java IO 流详解:字符流(Reader/Writer)与字符编码那些事
  • C++新特性—— 智能指针(shared_ptr/unique_ptr/weak_ptr)
  • OpenCV(十四):绘制直线
  • 支持支付宝登录的网站建设wordpress指定分类文章列表
  • Halcon卡尺 Measure_pos原理与实现(C++ 和Python版本,基于OpenCV)
  • 在线课程网站开发任务书邢台 网站建设
  • 专业做英文网站如何看出一个网站优化的是否好
  • PostgreSQL事务隔离级别详解
  • 从底层逻辑到实战落地:服务端与客户端负载均衡器的深度拆解
  • 笔试强训(十三)
  • 基于罗伊适应模型的产后抑郁家庭护理干预研究综述​
  • Bright Data 抓取浏览器API实战:助力高效完成定向大规模数据稳定采集
  • 合肥市做效果图的网站最适合新人的写作网站
  • 关于做视频网站的一些代码南京网站制作公司怎么样
  • 6分钟制作TikTok游戏领域热门短视频分析AI Agent
  • 自由通讯的魔法:Go从零实现UDP/P2P 聊天工具