【机器学习3】有监督学习经典分类算法
1 支持向量机
在现实世界的机器学习领域, SVM涵盖了各个方面的知识, 也是面试题目中常见的基础模型。

SVM的分类结果仅依赖于支持向量,对于任意线性可分的两组点,它
们在SVM分类的超平面上的投影都是线性不可分的。
2逻辑回归
2.1逻辑回归与线性回归
逻辑回归处理的是分类问题, 线性回归处理的是回归问题, 这是两者的最本质的区别。 逻辑回归中给定自变量和超参数后, 得到因变量的期望, 并基于此期望来处理预测分类问题。 逻辑回归与线性回归最大的区别, 即逻辑回归中的因变量为离散的,而线性回归中的因变量是连续的。 并且在自变量x与超参数θ确定的情况下, 逻辑回归可以看作广义线性模型(Generalized Linear Models)在因变量y服从二元分布时的一个特殊情况; 而使用最小二乘法求解线性回归时, 我们认为因变量y服从正态分布。
逻辑回归和线性回归的相同之处二者都使用了极大似然估计来对训练样本进行建模,另外, 二者在求解超参数的过程中, 都可以使用梯度下降的方法。
2.2 逻辑回归处理多标签的分类
如果一个样本只对应于一个标签, 我们可以假设每个样本属于不同标签的概率服从于几何分布, 使用多项逻辑回归(Softmax Regression)来进行分类:

一般来说, 多项逻辑回归具有参数冗余的特点, 即同时加减一个向量后预测结果不变。 特别地, 当类别数为2时:

利用参数冗余的特点, 我们将所有参数减去θ1, 式子变为:

整理后的式子与逻辑回归一致。 因此, 多项逻辑回归实际上是二分类逻辑回归在多标签分类下的一种拓展。
当存在样本可能属于多个标签的情况时, 我们可以训练k个二分类的逻辑回归分类器。 第i个分类器用以区分每个样本是否可以归为第i类, 训练该分类器时, 需要把标签重新整理为“第i类标签”与“非第i类标签”两类。
3决策树
决策树的生成包含了特征选择、 树的构造、 树的剪枝三个过程。将决策树应用集成学习的思想可以得到随机森林、 梯度提升决策树等模型。
3.1几种常用的决策树对比
常用的决策树算法有ID3、 C4.5、 CART
3.1.1 ID3最大信息增益
对于样本集合D, 类别数为K, 数据集D的经验熵表示为:

其中Ck是样本集合D中属于第k类的样本子集, |Ck|表示该子集的元素个数, |D|表示样本集合的元素个数。
计算某个特征A对于数据集D的经验条件熵H(D|A)为:

Di表示D中特征A取第i个值的样本子集, Dik表示Di中属于第k类的样本子集。
信息增益g(D,A)可以表示为二者之差, 可得:

3.1.2 C4.5最大信息增益比
特征A对于数据集D的信息增益比定义为:


3.1.3 CART最大基尼指数( Gini)
Gini描述的是数据的纯度, 与信息熵含义类似。

CART在每一次迭代中选择基尼指数最小的特征及其对应的切分点进行分类。但与ID3、 C4.5不同的是, CART是一颗二叉树, 采用二元切割法, 每一步将数据按特征A的取值切成两份, 分别进入左右子树。 特征A的Gini指数定义为:

通过对比三种决策树的构造准则, 我们不难总结三者之间的差异。
| 区别 | ID3 | C4.5 | CART |
|---|---|---|---|
| 评价标准 | 信息增益 | 信息增益比 | 基尼指数 |
| 样本类型 | 离散型变量 | 连续型变量 | 连续型变量 |
| 应用角度 | 分类 | 分类 | 分类/回归 |
| 缺失值 | 对样本特征缺失值敏感 | 对缺失值进行不同方式的处理 | 对缺失值进行不同方式的处理 |
| 实现 | 在每个结点上产生出多叉分支,每个特征在层级之间不会复用 | 在每个结点上产生出多叉分支,每个特征在层级之间不会复用 | 每个结点只会产生两个分支,且每个特征可以被重复使用 |
| 优化过程 | 通过剪枝来权衡树的准确性与泛化能力 | 通过剪枝来权衡树的准确性与泛化能力 | 直接利用全部数据发现所有可能的树结构进行对比 |
3.2不同剪枝方法的区别和联系
一棵完全生长的决策树会面临一个很严重的问题, 即过拟合。 需要对决策树进行剪枝, 剪掉一些枝叶, 提升模型的泛化能力。决策树的剪枝通常有两种方法, 预剪枝(Pre-Pruning) 和后剪枝(PostPruning)
3.2.1 预剪枝
预剪枝, 即在生成决策树的过程中提前停止树的增长。
预剪枝的核心思想是在树中结点进行扩展之前, 先计算当前的划分是否能带来模型泛化能力的提升, 如果不能, 则不再继续生长子树。 预剪枝对于何时停止决策树的生长有以下几种方法。

3.2.2后剪枝
后剪枝, 是在已生成的过拟合决策树上进行剪枝, 得到简化版的剪枝决策树。
后剪枝的核心思想是让算法生成一棵完全生长的决策树, 然后从最底层向上计算是否剪枝。剪枝过程将子树删除, 用一个叶子结点替代, 该结点的类别同样按照多数投票的原则进行判断。
常见的后剪枝方法包括错误率降低剪枝(Reduced Error Pruning, REP) 、 悲
观剪枝(Pessimistic Error Pruning, PEP) 、 代价复杂度剪枝(Cost Complexity Pruning, CCP) 、 最小误差剪枝(Minimum Error Pruning, MEP) 、 CVP(Critical Value Pruning) 、 OPP(Optimal Pruning) 等方法
相关文章:
【机器学习3】有监督学习经典分类算法
1 支持向量机 在现实世界的机器学习领域, SVM涵盖了各个方面的知识, 也是面试题目中常见的基础模型。 SVM的分类结果仅依赖于支持向量,对于任意线性可分的两组点,它 们在SVM分类的超平面上的投影都是线性不可分的。 2逻辑回归 …...
lv11 嵌入式开发 计算机硬件基础 1
目录 1 导学 1.1回顾及导学 1.2 嵌入式系统分层 1.3 linux底层开发 2 ARM体系结构与接口技术课程导学 3 计算机基础 3.1 计算机的进制 3.2 计算机组成 3.3 总线 4 多级存储结构与地址空间 4.1 多级存储概念 4.2 地址空间 5 CPU工作原理 6 练习 1 导学 1.1回顾及导…...
【Linux】vim
文章目录 一、vim是什么?二 、命令模式三、插入模式四、底行模式五、vim配置 一、vim是什么? Vim是一个强大的文本编辑器,它是Vi的增强版,支持多种语法高亮、插件扩展、多模式操作等功能。Vim有三种基本的工作模式:命…...
cstring函数
string 1.char str[]类型 fgets(s,10000,stdin) cin.getline(cin,10000) strlen(str) sizeof 求静态数组长度 2.string类型 getline(cin,a) cin.getline(cin,10000) str.lenth() str.size() cin 遇到空格就停止 3.gets 函数 char str[20]; gets(str); 4.puts 函…...
【owt】p2p client mfc 工程梳理
1年前构建的,已经搞不清楚了。所以梳理下,争取能用较新的webrtc版本做测试。最早肯定用这个测试跑通过 【owt】p2p Signaling Server 运行、与OWT-P2P-MFC 交互过程及信令分析官方的mfc客户端 估计是构造了多个不同的webrc版本的客户端...
pandas教程:Hierarchical Indexing 分层索引、排序和统计
文章目录 Chapter 8 Data Wrangling: Join, Combine, and Reshape(数据加工:加入, 结合, 变型)8.1 Hierarchical Indexing(分层索引)1 Reordering and Sorting Levels(重排序和层级排序)2 Summa…...
Redis 扩展 RedisBloom 插件,解决缓存击穿、穿透
文章目录 一、概述二、编译准备2.1 升级 make2.2 安装 Python3 三、编译 RedisBloom四、测试 RedisBloom五、应用场景5.1 缓存击穿5.2 缓存穿透5.3 原理总结 六、存在的问题 如果您对Redis的了解不够深入请关注本栏目,本栏目包括Redis安装,Redis配置文件…...
VBA技术资料MF80:选择文件及文件夹
我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到…...
网络层:控制平面
路由选择算法 路由选择算法就是为了在端到端的数据传输中,选择路径上路由器的最好的路径。通常,一条好的路径指具有最低开销的路径。最低开销路径是指源和目的地之间具有最低开销的一条路。 根据集中式还是分散式来划分 集中式路由选择算法:…...
Ubuntu 系统内核 kernel panic
Ubuntu 系统内核 kernel panic 不能进入系统:报错end kernel panic -not syncing: attemped to kill init! exit code 0x00000100 系统启动的时候,按下‘e’键进入grub编辑界面,编辑grub菜单,选择“kernel /vmlinuz-XXXXro root…...
【flink】RowData copy/clone方式
说明:一般用户常用的是GenericRowData。flink内部则多使用BinaryRowData。 方法一、循环解决(不推荐): 代码较为复杂需要根据RowType获取到内部fields的logicalType,再使用RowData.createFieldGetter方法创建fieldGetters。 public static …...
网页图标工具
工具地址...
掌动智能:功能测试及拨测主要功能
在企业中对于功能测试及拨测而言,用户只需提供应用包和产品文档,由资深测试专家设计并执行测试,覆盖核心场景,包含特定业务流程以及行业通用特殊场景,支持需求定制。 执行过程严格监控,依据应用功能和业务需…...
第11章 Java集合(二)
目录 内容说明 章节内容 一、Set接口 二、HashSet集合 三、LinkedHashSet集合 四、TreeSet集合...
Transformer和ELMo模型、word2vec、独热编码(one-hot编码)之间的关系
下面简要概述了Transformer和ELMo模型、word2vec、独热编码(one-hot编码)之间的关系: 独热编码(One-hot Encoding)是一种最基本的词表示方法,将词表示为高维稀疏向量。它与ELMo、word2vec和Transformer的关…...
您与1秒钟测量两千个尺寸之间仅差一台智能测径仪!
随着产线的发展,自动化程度越来越高,生产速度越来越快,人们对产品的品质要求越来越高,对检测也提出了更高的要求。传统的检测与测量手段已经很难满足测量效率要求,业内迫切需要一种新型高效率的测量设备。 产线多种多样…...
k8s之service五种负载均衡byte的区别
1,什么是Service? 1.1 Service的概念 在k8s中,service 是一个固定接入层,客户端可以通过访问 service 的 ip 和端口访问到 service 关联的后端pod,这个 service 工作依赖于在 kubernetes 集群之上部署的一个附件&a…...
Unity项目转微信小游戏保姆教程,繁杂问题解决,及微信小游戏平台简单性能测试
前言 借着某人需求,做了一波简单的技术调研:将Unity项目转换为微信小游戏。 本文主要内容:Unity转换小游戏的步骤,遇到问题的解决方法,以及简单的性能测试对比 微信小游戏的限制 微信小游戏对程序包体大小有严格限制…...
json字符串转为开闭区间
1.需求背景 1.1 前端页面展示 1.2 前后端约定交互json 按照页面每一行的从左到右 * 示例 [{"leftSymbol":">","leftNum":100,"relation":"无","rightSymbol":null,"rightNum":0}, {"left…...
STM32 IIC 实验
1. 可以选择I2C1,也可以选择I2C2,或者同时选择,同时运行 配置时钟信号 为节约空间,选择这两个,然后选择GENERATE CODE 二、HAL_I2C_Mem_Write I2C_HandleTypeDef *hi2c:I2C设备句柄 uint16_t DevAddress&am…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
