机器学习模型算法

news2024/11/24 9:13:14

前言

机器学习离不开数据、和模型算法,常用的套路包含数据预处理、模型学习、模型评估、样本预测几个步骤。

  • 数据预处理:从原始raw数据,经过(特征处理+幅度缩放、特征选择、维度约减、采样),输出测试集和训练集;
  • 模型学习:模型选择、交叉验证、结果评估、超参选择;
  • 模型评估:选择符合场景的评估准则
  • 样本预测:新的输入数据预测

机器学习分类

  1. 监督学习(Supervised Learning):训练集有目标label。监督学习可以进一步分为回归(Regression)和分类(Classification)问题。回归任务预测连续值输出(如房价预测),而分类任务则预测离散的类别标签(如垃圾邮件识别)。

  2. 无监督学习(Unsupervised Learning):与监督学习不同,无监督学习的数据没有明确的标签或结果。它的目标是发现数据中的结构、模式或者将数据分为不同的群组(聚类)。常见的无监督学习方法包括聚类(Clustering)、降维(Dimensionality Reduction,如PCA、t-SNE)等。

  3. 半监督学习(Semi-supervised Learning):介于监督学习和无监督学习之间,它利用大量的未标记数据和少量的标记数据来进行学习。目的是利用未标记数据提供的额外信息来提高学习模型的性能,尤其是在标记数据稀缺的情况下。

  4. 强化学习(Reinforcement Learning):算法(智能体)通过与环境交互来学习如何采取行动,以最大化某种累积奖励。强化学习的核心在于学习策略,即在给定状态下选择行动的规则,以达到长期奖励最大化的最终目标。常见的应用包括游戏AI、机器人导航等。

  5. 迁移学习(Transfer Learning):这是一种利用从一个任务中学到的知识来帮助完成另一个相关但不完全相同的任务的方法。迁移学习可以减少对大量标注数据的需求,加速新任务的学习过程。特别是在深度学习领域,预训练的模型(如ImageNet上的CNN模型)经常被用作其他视觉任务的起点。

  6. 元学习(Meta-Learning):也称为“学习如何学习”,旨在使机器学习模型能够从以前的学习经验中快速适应新任务。元学习的关键思想是设计模型架构或训练程序,使得模型能够基于少数几个样本快速调整其参数,适用于快速变化的任务环境或小样本学习场景。

1. 监督学习

1.1回归模型

回归分析是用来预测一个或多个变量(称为自变量、解释变量或特征)如何影响另一个变量(称为因变量、响应变量或目标变量)的方法。根据模型的形式,回归模型可以大致分为两大类:线性模型和非线性模型。

1.1.1 线性回归模型

线性模型的数学推导是

\tilde{y}(x,w) = w_{0}+w_{1}x_{1}+...+w_{n}x_{n}

其中,w = (w_{0},w_{1},...w_{p})是求解线性拟合。

L1正则化
  • 定义:L1正则化是通过向损失函数添加权重参数的绝对值之和来限制模型复杂度。具体形式为:

L2正则化
  • 定义:L2正则化是通过向损失函数添加权重参数的平方和来约束模型的复杂性。具体形式为:

L1&L2正则化

普通最小二乘线性回归 (Ordinary Least Squares Linear Regression - OLS)

目标函数是

Ridge岭回归

在 OLS 的基础上添加了 L2 正则化项 (系数的平方和),缓解多重共线性问题,使模型更稳定。适用于多重共线性问题场景。

Lasso(Least Absolute Shrinkage and Selection Operator Regression) 

在 OLS 的基础上添加了 L1 正则化项 (系数的绝对值之和),可以进行特征选择,将一些系数缩小到 0。适用于存在大量特征,需要进行特征选择时

弹性网络回归 (Elastic Net Regression)

结合了 L1 和 L2 正则化项,既能进行特征选择,又能处理多重共线性问题。适用于同时存在多重共线性问题和需要特征选择的情况。

广义线性模型 (Generalized Linear Models - GLM)

是一种用于描述响应变量与一组解释变量之间关系的高级统计模型。它包括了常见的线性回归、逻辑回归和泊松回归等。GLM的核心是链接函数,它建立了线性预测器和响应变量的期望值之间的联系,适用于具有指数分布族的数据(如正态分布、泊松分布、伽马分布等),可以处理连续或计数型目标变量。(解释性好)

贝叶斯线性回归(Bayesian Linear Regression)

核心思想是将参数视为随机变量,并利用贝叶斯定理将先验知识与数据结合起来,得到参数的后验概率分布。

  • 优势: 提供参数的不确定性估计,可以进行模型比较和预测区间估计。
  • 劣势: 计算复杂度较高,需要选择合适的先验分布。

除此之外,还有类似分段线性、逐步回归、角回归等,不做详细概述。

1.1.2 非线性回归模型

支持向量回归 (Support Vector Regression - SVR)

使用核函数将数据映射到高维空间,并在高维空间中进行线性回归。对异常值相对不敏感,可以捕捉非线性关系。适用场景: 数据存在非线性关系。

多项式回归(Polynomial Regression)

通过将自变量的高次项纳入模型来捕捉非线性关系。

优点: 易于理解和实现,计算成本相对较低,可以拟合各种形状的曲线。

缺点: 容易过拟合,特别是在高次多项式的情况下。对异常值敏感。在数据点稀疏的区域,预测结果可能不稳定。

决策树回归

通过决策树做回归

KNN 回归

K临近回归模型

神经网络非线性回归

使用多层神经网络,可以捕捉非常复杂的非线性关系。

 回归模型总结

特征OLSRidgeLassoENR多项式回归SVR贝叶斯回归GLM
目标函数残差平方和残差平方和+L2残差平方和+L1残差平方和+L1+L2残差平方和最大间隔后验分布最大似然函数
正则化L2L1L1+L2L2通过先验分布可以有L1、L2、L1+L2
特征选择取决于先验概率
多重共线性敏感鲁棒敏感鲁棒敏感鲁棒鲁棒敏感
异常值敏感敏感鲁棒敏感鲁棒敏感鲁棒鲁棒敏感
输出连续值连续值连续值连续值连续值类别连续值连续值

 1.2 分类问题

算法KNN逻辑回归朴素贝叶斯决策树随机森林GBDTXGBoost支持向量机
原理通过计算待分类样本与已知类别样本的距离,选取最近的K个邻居,根据这K个邻居的类别来决定待分类样本的类别通过Sigmoid函数将线性回归的输出映射到(0,1)之间基于贝叶斯定理和特征条件独立假设的分类方法,计算给定特征下各个类别的概率通过递归地选择最优特征进行划分多颗决策树集成是一种提升方法,新树尝试修正前一棵树的错误,通过迭代地训练决策树来最小化损失函数。GBDT的优化版本,增加了正则化项以防止过拟合寻找一个超平面最大化各类样本之间的间隔,从而实现分类
优点无需训练可直接预测,可用于非线性训练速度快、模型解释性强、输出概率值简单高效,缺失数据不敏感能处理连续和离散值减少过拟合,能评估特征重要性强大的表达能力和高精度,能自动做特征组合高度优化,运行速度快,支持自定义目标函数和评估指标。在高维空间有很好的分类能力,对小样本且特征维度高的数据效果好。
缺点计算量大、噪声敏感、选择合适的K比较难特征敏感、多重共线性特征独立假设不成立容易过拟合,数据敏感训练时间长,解释性差训练时间长,容易过拟合参数更多,调参复杂度较高。计算复杂度高,尤其是核技巧在大规模数据上
适用场景数据量小,维度低,实时性要求不高,如图像分类、识别特征与目标变量之间存在线性关系,例如:信用评分,疾病预测。多分类、数据量小,文本分类,垃圾邮件过滤,情感分析等高维稀疏数据。数据量中等,特征维度不高,需要可解释性强的模型,例如:客户流失预测,风险评估 数据量较大,特征维度较高,需要高精度和鲁棒性的模型,例如:图像分类,目标检测。数据量较大,特征维度较高,需要高精度模型,例如:点击率预测,搜索排序数据量中等,特征维度较高,需要高精度模型,例如:图像分类,文本分类。

2. 无监督学习

2.1 聚类问题

常见的聚类算法有:划分聚类(Partitioning Clustering)、层次聚类(Hierarchical Clustering)、密度聚类(Density-based)、网格聚类(Grid-based)和模型方法聚类(Model-based )。

  • 划分聚类:算法会给出一系列扁平结构的簇,它们之间没有任何显式的结构来表明彼此的关联性。常见算法有 K-Means / K-Medoids、Spectral Clustering(谱聚类)等。
  • 层次聚类:会输出一个具有层次结构的簇集合,因此能够比划分聚类输出的无结构簇集合提供更丰富的信息。层次聚类可以认为是是嵌套的划分聚类,常见算法有 Single-linkage、Complete-linkage、Connectivity-based Clustering等。
  • 密度聚类:基于数据点的密度进行聚类,例如 DBSCAN, OPTICS。
  • 网格聚类:将数据空间划分为网格,然后在网格单元中进行聚类,例如 STING, CLIQUE。
  • 假设数据是由多个概率分布生成的,例如高斯混合模型 (GMM)。

2.1.1 K-Means / K-Medoids

K-means初始化的时候以随机取点作为起始点;迭代过程中,取同一类的所有数据点的重心(或质心)作为新中心点。重复将所有的数据都划分完成。

K-Medoids 重心不是质心,而是数据点,距离计算从平方变成绝对值。

2.1.2 高斯混合模型

它假设数据是由多个高斯分布组成的混合模型生成的,每个高斯分布被称为一个"组件",代表一个聚类。算法的目标是找到这些高斯分布的参数,并确定每个数据点属于哪个分布。

2.1.3 Spectral Clustering(谱聚类)

心思想是将数据点映射到一个低维空间,在这个空间中更容易进行聚类。这个过程主要利用了图的拉普拉斯矩阵的特征向量(谱)

2.1.4 Single-linkage (Hierarchical Clustering)

基于距离度量,将距离最近的两个簇合并,直到所有数据点都属于同一个簇。可以发现任意形状的簇,不需要预先指定簇的数量。对噪声和离群值敏感,容易形成链状簇,计算复杂度较高。

2.1.5 OPTICS (Ordering Points To Identify the Clustering Structure)

基于密度的聚类算法,是 DBSCAN 的改进版本。通过引入核心距离和可达距离的概念,可以发现不同密度的簇。可以发现不同密度和形状的簇,对参数设置相对不敏感,但计算复杂度较高,参数选择仍然需要一定的经验。

2.1.6 CLIQUE (Clustering in QUEst)

基于网格的聚类算法,主要用于高维数据。将数据空间划分为多个单元格,识别密集单元格,并将相邻的密集单元格合并成簇。可以处理高维数据,可以发现不同形状和大小的簇,但对网格大小敏感,对数据分布不均匀的情况效果不好。

算法原理优点缺点适用场景
K-Means划分简单快速对初始值敏感,假设簇为球形球形簇,大小均匀
K-Medoids划分对离群值鲁棒计算复杂度高含噪声和离群值
GMM模型发现任意形状簇,软聚类计算复杂度高,需要指定簇数复杂形状簇,不同大小和密度
Single-linkage层次发现任意形状簇,无需指定簇数对噪声敏感,链状簇发现任意形状簇
OPTICS密度发现不同密度和形状簇计算复杂度高不同密度和形状簇
CLIQUE网格处理高维数据对网格大小敏感高维数据

2.2 降维

高维数据带来更大的计算量和复杂度,而且多维变量的共线性问题,会增加模型的复杂度。因此,需要对数据完成降维「压缩」的同时,尽量减少信息损失。本文主要讲解PCA和t-SNE降维模型。

算法PCAt-SNE
原理

input矩阵X每行进行零均值化;

求协方差矩阵,以及协方差矩阵的特征向量;

将特征向量按照特征值从大到小排列,取前k个组成新的P, 新的input就是PX

计算每对数据点之间的高维距离,并将其转换为相似概率,使用高斯核函数。

在低维空间中初始化数据点的坐标,并计算每对数据点之间的相似概率,使用t-分布核函数。

使用梯度下降算法最小化高维空间和低维空间中相似概率分布之间的KL散度,从而使低维空间中的数据点分布尽可能地反映高维空间中的数据点分布。

优点计算简单高效,可以有效地降低数据维度,去除噪声和冗余信息。保留了数据中大部分的方差信息。能够有效地捕捉数据中的非线性结构
缺点

仅适用于线性数据,对非线性数据降维效果较差。

对异常值敏感。

解释性较差,主成分难以解释其业务含义。

计算复杂度高,运行时间较长,尤其对于大规模数据集。参数敏感,
场景

提取数据中的主要特征,用于后续的机器学习模型训练。

减少数据存储空间和计算时间。

t-SNE 可以将不同簇的数据点在低维空间中清晰地分开,主要用于可视化

3. 强化学习

3.1 基于value值的强化学习

  • Q-learning: 学习一个动作值函数 Q(s, a),表示在状态 s 下执行动作 a 的预期累积奖励。

    • 优点: 概念简单,实现容易。
    • 缺点: 在高维状态和动作空间中容易遇到维度灾难;对环境变化敏感;容易过估计动作值。
    • 场景: 离散动作空间的控制问题,例如游戏AI、机器人控制。

3.2 基于policy策略的强化学习

  • SARSA: 一种on-policy算法,学习策略的同时评估策略。

    • 优点: 比Q-learning更稳定,尤其在探索策略不佳的情况下。
    • 缺点: 学习速度可能比Q-learning慢。
    • 场景: 与Q-learning类似,但更适用于需要谨慎探索的环境。

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

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

相关文章

Java 16Java 17(LTS版本)新特性概述

一、Java 16 发布于2021年3月16日。Java 16主要特性有: JEP 338:Vector API (Incubator) 向量 API(第一轮孵化) JEP 387:Elastic Metaspace 弹性元空间 JEP 389:Foreign Linker API (Incubator) 外部链接…

鸿蒙OpenHarmony

开源鸿蒙系统编译指南 Ubuntu编译环境配置第一步:Shell 改 Bash第二步:安装Git和安装pip3工具第三步:远程仓配置第四步:拉取代码第五步:安装编译环境第六步:本地编译源码 Windows开发环境配置第一步&#x…

生信初学者教程(二十四):筛选交集特征

文章目录 介绍加载R包导入数据重叠的重要特征重要特征的韦恩图输出结果总结介绍 在数据分析和机器学习项目中,特征选择是一个至关重要的步骤,它有助于识别数据集中与目标变量最相关的特征。当通过不同的机器学习方法筛选出重要特征时,对这些特征取交集以识别核心特征,是一种…

【重学 MySQL】五十、添加数据

【重学 MySQL】五十、添加数据 使用INSERT INTO语句添加数据基本语法示例插入多行数据注意事项 使用LOAD DATA INFILE语句批量添加数据其他插入数据的方式注意事项 在MySQL中,添加数据是数据库操作中的基本操作之一。 使用INSERT INTO语句添加数据 使用 INSERT IN…

资源《Arduino UNO R3 proteus 仿真工程》说明。

资源链接: Arduino UNO R3 proteus 仿真工程 1.文件明细: 2.文件内容说明 包含:AD工程、原理图、PCB。 3.内容展示 4.简述 该文件为proteus工程,用于Arduino uno r3仿真。 因为软件自动运行,所以最小系统上没有…

全网最适合入门的面向对象编程教程:55 Python字符串与序列化-字节序列类型和可变字节字符串

全网最适合入门的面向对象编程教程:55 Python 字符串与序列化-字节序列类型和可变字节字符串 摘要: 在 Python 中,字符编码是将字符映射为字节的过程,而字节序列(bytes)则是存储这些字节的实际数据结构&am…

论文笔记:iCaRL: Incremental Classifier and Representation Learning

1. Contribution 提出了一种新的训练策略,iCaRL:允许以增量方式学习:只需要同时存在一小部分类别的训练数据,新类别可以逐步添加。同时学习分类器和数据表示:iCaRL能够同时学习强大的分类器和数据表示,这与…

OpenGL ES MVP/变换投影矩阵(8)

OpenGL ES MVP/变换投影矩阵(8) 简述 通过前面几节的学习,目前我们已经可以渲染自己想要的图像,也可以通过纹理加载图片进行渲染。接下来我们来学习一下MVP,这里的MVP不是Android应用开发里的框架MVP,而是Model,View…

电场能量磁场能量相等,注意电场能量公式也没有复数形式(和坡印廷类似)

下面是电场能量密度和磁场能量密度的公式,注意这可不是坡印廷定理。且电场能量密度没有复数表达式,即不是把E和D换成复数形式就行的。注意,一个矢量可以转化为复数形式,两个矢量做运算不能转化为两个复数形式的矢量做运算&#xf…

什么是SPI机制

什么是SPI机制 SPI机制是Java平台提供的一种强大的动态扩展机制,能够让程序在运行时灵活地加载和使用服务提供者的实现类。我们这里带大家简单的了解一下SPI机制是如何工作的 SPI(Service Provider Interface,服务提供者接口)机制…

JavaScript while循环语句

While语句包括一个循环条件和一段代码块&#xff0c;只要条件为真&#xff0c;就不断循环执行代码块。 while(条件){语句;} var i0;while(i<100){console.log(i);i1;} 注意&#xff1a;所有的for循环都可以改写为while循环

Spring Boot 和 MyBatis-Plus凑一块儿了,这份教程你得看

一、引言 MyBatis-Plus 是 MyBatis 的增强版&#xff0c;提供了 CRUD 接口、分页插件、性能分析插件等特性&#xff0c;简化了开发过程。本文将详细介绍如何在 Spring Boot 项目中集成 MyBatis-Plus。 支持的数据看也越来越多&#xff0c;值得去搞一下&#xff0c;写了一个小例…

《PMI-PBA认证与商业分析实战精析》第5章 需求启发与分析

第5章 需求启发与分析 本章主要内容&#xff1a; 需求启发 需求分析 模型化与优化需求 记录、确认、核实和批准需求 本章涵盖的考试重点&#xff1a; 需求启发的四项活动 需求启发的八项技术 启发提问的四种类型问题 启发原型的类型 访谈的四种分类 观察技术的四种类…

华三资源

华三华三官方网站华三公司官网新华三 - 融绘数字未来&#xff0c;共享美好生活华三华三文档中心华三文档资源文档中心-新华三集团-H3C华三华三 ICT百科华三 ICT知识百科H3C ICT知识百科-新华三集团-H3C华三华三文档高级查找高级文档搜索新华三 - 融绘数字未来&#xff0c;共享美…

已解决:Could not find artifact xxx

已解决&#xff1a;Could not find artifact xxx 文章目录 写在前面问题描述报错原因分析 解决思路解决办法1. 检查依赖声明的正确性2. 检查远程仓库配置3. 检查网络连接4. 清理本地缓存并强制更新5. 手动上传依赖到私有仓库6. 检查本地仓库是否已被损坏 总结 写在前面 在使用…

V2V迁移:vsphere至openstack

预检查 检测待迁移实例是否已安装并配置virtio相关的块设备驱动、网卡驱动&#xff0c;linux包括kernel、initramfs&#xff0c;windows包括磁盘控制器、网卡。 Linux 系统检查 Virtio 驱动 Windows 系统检查 Virtio 驱动 环境 1、下载安装ovftool 2、安装qemu-kvm&#x…

数据结构-二叉树介绍及其在Java中遍历算法实现

一、二叉树介绍 1、二叉树(Binary tree)的定义 二叉树(binary tree)是树形结构的一个重要类型,是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。二叉树的递归定义为:二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右…

Angular基础学习(入门 --> 入坑)

目录 一、Angular 环境搭建 二、创建Angular新项目 三、数据绑定 四、ngFor循环、ngIf、ngSwitch、[ngClass]、[ngStyle]、管道、事件、双向数据绑定--MVVM 五、DOM 操作 &#xff08;ViewChild&#xff09; 六、组件通讯 七、生命周期 八、Rxjs 异步数据流 九、Http …

SuperMap iClient for MapLibreGL 根据SQL条件过滤显示动态图层

查阅发现iClient 有子图层控制类 LayerStatus 可实现&#xff1a;子图层显示参数类。此类存储了各个子图层的名称、是否可见的状态、SQL 过滤条件等参数。 API详情&#xff1a;http://support.supermap.com.cn:8090/iserver/iClient/forJavaScript/docs/maplibregl/LayerStatus…

java_整型

1.整数类型 2.整型细节 Java各整数类型有固定的范围和字段长度&#xff0c;不受具体OS【操作系统】的影响&#xff0c;以保证Java程序的可移植性 Java的整型常量&#xff08;具体值&#xff09;默认为int型&#xff0c;声明long型常量后需加"l"或"L" pu…