特征选择与类不平衡处理
特征选择与类不平衡处理技术
一、特征选择方法
1. 过滤法(Filter Methods)
原理:
基于统计学方法或特征本身的分布特性独立于模型进行特征筛选,通过计算特征与目标变量的相关性或特征的发散性进行排序选择。
典型方法:
-
卡方检验:
原理:评估特征与标签的独立性,卡方值越大表示特征与标签相关性越强。
步骤:- 计算每个特征的卡方统计量 χ 2 = Σ ( 实际频数 − 理论频数 ) 2 理论频数 χ² = Σ\frac{(实际频数-理论频数)^2}{理论频数} χ2=Σ理论频数(实际频数−理论频数)2
- 按卡方值从高到低排序,选择Top-K特征。
-
方差过滤:
原理:移除方差接近0的特征(认为其区分度低)。
步骤:- 计算各特征的方差
- 设定阈值,删除方差低于阈值的特征(如
sklearn.VarianceThreshold
)。
2. 包裹法(Wrapper Methods)
原理:
将特征选择视为搜索问题,通过模型的性能反馈迭代选择最优特征子集,与特定学习器耦合。
典型方法:
-
递归特征消除(RFE):
原理:反复训练模型并剔除权重最低的特征,直至达到目标特征数。
步骤:- 训练基模型(如SVM、逻辑回归)
- 根据特征重要性排序
- 移除最不重要特征,重复直至剩余指定特征数。
-
遗传算法:
原理:模拟生物进化过程,通过交叉、变异等操作优化特征子集。
步骤:- 初始化种群(随机特征子集)
- 计算适应度(模型性能)
- 选择、交叉、变异生成新种群
- 迭代至收敛。
3. 嵌入法(Embedded Methods)
原理:
在模型训练过程中自动完成特征选择,通过正则化或特征重要性评估实现。
典型方法:
-
L1正则化(LASSO):
原理:通过L1惩罚项使部分特征的系数归零,实现特征稀疏化。
步骤:- 定义损失函数(如 L = Σ ( y i − y ^ i ) 2 + λ Σ ∣ w j ∣ L = Σ(y_i - ŷ_i)^2 + λΣ|w_j| L=Σ(yi−y^i)2+λΣ∣wj∣)
- 优化求解,保留非零系数对应的特征。
-
树模型特征重要性:
原理:基于特征在树节点分裂中的贡献度(如基尼指数、信息增益)评估重要性。
步骤:- 训练随机森林/XGBoost
- 提取
feature_importances_
属性 - 按重要性阈值筛选特征。
二、类不平衡处理方法
1. 过采样(Oversampling)
SMOTE(Synthetic Minority Oversampling)
原理:在少数类样本的K近邻之间线性插值生成新样本,避免简单复制导致的过拟合。
步骤:
- 对每个少数类样本 x i x_i xi,计算其K近邻(欧氏距离)
- 随机选择近邻 x j x_j xj,生成新样本:
x n e w = x i + r a n d ( 0 , 1 ) × ( x j − x i ) x_{new} = x_i + rand(0,1) × (x_j - x_i) xnew=xi+rand(0,1)×(xj−xi) - 重复直至类别平衡。
改进方法:
- Borderline-SMOTE:仅对边界样本过采样
- ADASYN:根据样本密度自适应调整生成数量。
2. 欠采样(Undersampling)
随机欠采样:
原理:随机删除多数类样本以平衡类别分布。
步骤:
- 计算少数类样本数 N m i n N_{min} Nmin
- 从多数类中随机抽取 N m i n N_{min} Nmin个样本。
聚类欠采样(如K-Means):
原理:对多数类聚类后从每个簇中选取代表性样本。
步骤:
- 将多数类聚类为K个簇(K=少数类样本数)
- 从每个簇中随机抽取1个样本与少数类合并。
3. 调整类别权重
Focal Loss
原理:通过调节因子γ和类别平衡因子α,降低易分类样本的损失权重,聚焦难分类样本。
公式:
F L ( p t ) = − α t ( 1 − p t ) γ log ( p t ) FL(p_t) = -α_t(1-p_t)^γ \log(p_t) FL(pt)=−αt(1−pt)γlog(pt)
- α α α:平衡正负样本权重(如正样本α=0.75,负样本α=0.25)
- γ γ γ:调节难易样本权重(γ=2时效果最佳)。
步骤:
- 在交叉熵损失基础上引入α和γ参数
- 训练时动态调整样本权重。
三、评估方法
1. AUC-ROC曲线
原理:
- 横轴(FPR)= FP/(FP+TN),纵轴(TPR)= TP/(TP+FN)
- AUC值表示模型区分正负类的能力,AUC=1为完美分类,AUC=0.5为随机猜测。
步骤:
- 按预测概率降序排列样本
- 遍历阈值计算TPR/FPR
- 绘制ROC曲线,使用梯形法则计算AUC。
2. PR曲线
原理:
- 横轴(Recall)= TP/(TP+FN),纵轴(Precision)= TP/(TP+FP)
- 适用于类别高度不平衡场景,AUPR越接近1模型越好。
步骤:
- 按预测概率降序排列样本
- 遍历阈值计算Precision/Recall
- 绘制PR曲线,计算AUPR。
相关文章:
特征选择与类不平衡处理
特征选择与类不平衡处理技术 一、特征选择方法 1. 过滤法(Filter Methods) 原理: 基于统计学方法或特征本身的分布特性独立于模型进行特征筛选,通过计算特征与目标变量的相关性或特征的发散性进行排序选择。 典型方法…...
24、ASP.NET⻚⾯之间传递值的⼏种⽅式
1. QueryString(查询字符串) 描述:通过 URL 参数传递数据,例如 Page2.aspx?id123。 适用场景:简单、非敏感数据,页面跳转时使用。 2. Session(会话) 描述:在服务器端…...
【扩展卡尔曼滤波器实际运用案例】
扩展卡尔曼滤波器 算法描述实际案例 算法描述 考虑离散时间非线性动态系统 { x k 1 f k ( x k , w k ) z k h k ( x k , v k ) \left\{\begin{matrix} x_{k1}f_{k}(x_k,w_k)\\ z_{k}h_{k}(x_k,v_k) \end{matrix}\right. {xk1fk(xk,wk)zkhk(xk,vk) 其中是…...
Centos9 安装 nginx 及配置
1. 安装nginx 安装依赖软件,安装之前可以看一下是否已经安装过以下软件,dnf list installed | grep zlib dnf install gcc-c dnf install zlib dnf install pcre pcre-devel dnf install openssl openssl-devel下载nginx,这里是下载到opt文…...
总结设计测试用例的万能公式
现在有⼀款产品,要求我们对“⻔锁”设计测试⽤例,假如你是测试⼈员,你会怎么设计呢? 1 常规思考逆向思维发散性思维 设计测试⽤例的原则⼆: 1.测试⽤例的编写不仅应当根据有效和预料到的输⼊情况,⽽且也…...
Android RK356X TVSettings USB调试开关
Android RK356X TVSettings USB调试开关 平台概述操作-打开USB调试实现源码补充说明 平台 RK3568 Android 11 概述 RK3568 是瑞芯微(Rockchip)推出的一款高性能处理器,支持 USB OTG(On-The-Go)和 USB Host 功能。US…...
python生成动态库在c++中调用
一.Windows下生成动态库.pyd 在setup.py的同目录下使用python setup.py build_ext --inplace 二.在vscode的c中使用.pyd文件(动态库) 1)配置python的环境 python -c "import sys; print(sys.executable)" #确定python安装位置 2…...
大模型数据味蕾论
大模型数据味蕾论 大模型的成长路径:从婴儿到专家预训练数据的"四维口味"模型从文本到模型:数据处理的关键步骤"大模型数据味蕾论"结语 AI大模型就像一位厨师,预训练数据就是这位厨师的味蕾。 没有经过训练的味蕾&#x…...
网络编程4
day4 一、Modbus 1.分类 (1).Modbus RTU: 运行在串口上的协议,采用二进制表现形式以及紧凑型数据结构,通信效率高,应用广泛。(2).Modbus ASCII: 运行在串口上的协议,采用ASCII码传输,并且利用特殊字符作为其字节的开始…...
neo4j-community-3.5.5-unix.tar.gz安装
从官网找了下包,哎,奈何访问不了github,那就找镜像吧,哎,也是不通。 # docker search neo4j Error response from daemon: Get "https://index.docker.io/v1/search?qneo4j&n25": dial tcp 202.160.128.40:443: i…...
高防IP能抵御哪些类型的网络攻击?
高防IP(High Defense IP)是一种专门针对网络攻击设计的防护服务,主要通过流量清洗、协议分析、行为检测等技术抵御多种网络攻击。以下是其能防御的主要攻击类型及原理: 一、常见防御的攻击类型 DDoS攻击(分…...
动态监控进程
1.介绍: top和ps命令很相似,它们都是用来显示正在执行的进程,top和ps最大的不同之处,在于top在执行中可以更新正在执行的进程. 2.基本语法: top [选项] 选项说明 ⭐️僵死进程:内存没有释放,但是进程已经停止工作了,需要及时清理 交互操作说明 应用案…...
你学会了些什么220622?--搭建UI自动化
jenkins访问地址:http://192.168.82.129:8080/ 账号密码:admin/a123456a ***** 什么是UI自动化** 使用工具或者脚本对需要测试的软件的前端界面在预设的条件下,在已有的测试数据下运行系统或者应用程序,并获取其前端页面UI显示的…...
深入理解自监督学习(Self-Supervised Learning):理论与实践
📌 友情提示: 本文内容由银河易创AI(https://ai.eaigx.com)创作平台的gpt-4o-mini模型生成,旨在提供技术参考与灵感启发。文中观点或代码示例需结合实际情况验证,建议读者通过官方文档或实践进一步确认其准…...
时序逻辑入门指南:LTL、CTL与PTL的概念介绍与应用场景
引言 在计算机科学和形式化方法中,**时序逻辑(Temporal Logic)**是描述系统动态行为的核心工具,它允许我们形式化地表达“时间”相关的性质,例如“某事件最终会发生”或“系统始终满足安全条件”。其中,LTL(线性时序逻辑)、**CTL(计算树逻辑)和PTL(命题时序逻辑)*…...
Spring Boot 整合 JavaFX 核心知识点详解
1. 架构设计与集成模式 1.1 Spring Boot 与 JavaFX 的分层架构设计 Spring Boot 与 JavaFX 的整合需要精心设计的分层架构,以充分利用两个框架的优势。 标准分层架构 ┌────────────────────────────────────────────────…...
进程与线程:02 多进程图像
多进程图像的起源与核心地位 上节课我们开启了对操作系统核心概念——多进程图像的学习,探讨了其产生的原因。操作系统的核心职责之一是管理CPU,CPU作为实现取指执行的硬件自动化部件,只有执行取指操作(即取出并执行程序指令 &am…...
基于SIMMECHANICS的单自由度磁悬浮隔振器PID控制系统simulink建模与仿真
目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 单自由度磁悬浮减振器工作原理简介 4.2 SIMMECHANICS工具箱 5.完整工程文件 1.课题概述 基于SIMMECHANICS的单自由度磁悬浮隔振器PID控制系统simulink建模与仿真。其中,SIMMECHANICS是M…...
FreeRTOS互斥信号量解决优先级翻转实战教程
FreeRTOS互斥信号量解决优先级翻转实战教程 大家好!今天我们来深入探讨FreeRTOS中的优先级翻转问题,并通过互斥信号量来解决这个问题。上一篇文章我们已经了解了优先级翻转的现象,今天我们将动手实践,通过代码对比来直观感受互斥…...
Spark-SQL 四(实验)
用idea实验hive的常用代码 将数据放到项目的目录下 代码实现 运行结果: 实验 统计有效数据条数及用户数量最多的前二十个地址 将数据放到Spark-SQL/input目录下 代码实现: 运行结果:...
前端技术未来的发展趋势分析
以下是关于前端技术未来发展趋势的深度分析,结合行业动态和技术演进方向,从多个维度展开: 一、核心发展趋势 1. 框架融合与性能极致化 趋势:React/Vue/Solid 等框架在编译时优化(如React Forget编译器)和…...
字节扣子空间开启内测!附免费邀请码!
3月初,当Manus作为首个通用智能体横空出世时,整个科技圈都沸腾了。 当时我就预言过:这种创新产品要真正普及,还得看大厂动作(毕竟创业公司的资源有限啊)。 这不,字节跳动最近就悄悄放出了大招—…...
高并发场景下的淘宝 API 开发实践:商品数据实时采集与性能优化
在电商行业竞争激烈的当下,实时获取海量商品数据成为企业把握市场动态、制定精准策略的关键。然而,高并发场景下对淘宝 API 的调用极易引发性能瓶颈与稳定性问题。本文将围绕高并发场景下淘宝 API 开发,深入讲解商品数据实时采集的技术要点&a…...
如何将Qt程序打包成应用程序?
1、使用release模式,编译项目 2、新建一个文件夹(不要有中文路径),将刚才编译生成的可执行文件(.exe)放入新建的文件夹下。 可执行文件通常生成在项目目录下的构建文件夹中,如 build-项目名-套…...
AI重塑网络安全:机遇与威胁并存的“双刃剑”时代
一、引言 人工智能(AI)技术的迅猛发展,正在深刻改变网络安全行业的格局。从ChatGPT生成钓鱼邮件到AI驱动的漏洞挖掘,从零信任架构的普及到安全大模型的实战应用,AI既是攻击者的“新武器”,也是防御者的“新…...
c++基础·列表初始化
目录 一、列表初始化的核心优势 二、基础数据类型与数组初始化 1. 基础类型初始化 2. 数组初始化 三、类与结构体初始化 1. 构造函数匹配规则 2. 注意事项 四、标准容器初始化 五、聚合类型(Aggregate Types)初始化 1. 聚合类型定义 2. 初始化…...
颠覆传统!毫秒级响应的跨平台文件同步革命,远程访问如本地操作般丝滑
文章目录 前言1. 安装Docker2. Go File使用演示3. 安装cpolar内网穿透4. 配置Go File公网地址5. 配置Go File固定公网地址 前言 在这个信息爆炸的时代,谁不曾遭遇过类似的窘境呢?试想,当你正于办公室中埋首案牍时,手机突然弹出一…...
目标检测中的损失函数(二) | BIoU RIoU α-IoU
BIoU来自发表在2018年CVPR上的文章:《Improving Object Localization With Fitness NMS and Bounded IoU Loss》 论文针对现有目标检测方法只关注“足够好”的定位,而非“最优”的框,提出了一种考虑定位质量的NMS策略和BIoU loss。 这里不赘…...
RS232 串行通信:C++ 实现指南
文章目录 一、RS232 简介1. 电气特性2. 传输速率3. 传输距离 二、在 C 中实现 RS232 通信1. Windows 平台(1)打开串行端口(2)配置串行通信参数(3)发送数据(4)接收数据(5&…...
电控---SWD协议
SWD协议是烧录调试常用的协议,本文对SWD协议进行了,覆盖物理层、协议层、寄存器结构、信号时序、安全特性、实际应用及最新发展趋势的讲解。 一、物理层架构与信号特性 1. 引脚定义与电气规范 核心引脚: SWDIO(双向数据线&…...
Linux系统下docker 安装 redis
docker安装最新版的redis 一、docker拉取最新版redis镜像 拉取镜像若没有指定版本,代表拉取最新版本 二、查询redis镜像 三、挂载配置文件 在docker容器内修改redis配置文件不方便,所以挂载配置文件,这样可以在外边修改redis配置 3.1 创建…...
第 2 篇:初探时间序列 - 可视化与基本概念
第 2 篇:初探时间序列 - 可视化与基本概念 (图片来源: Luke Chesser on Unsplash) 在上一篇《你好,时间序列!》中,我们了解了什么是时间序列数据以及学习它的重要性。现在,是时候卷起袖子,真正开始接触和探…...
适配器模式:化解接口不兼容的桥梁设计
适配器模式:化解接口不兼容的桥梁设计 一、模式核心:让不兼容的接口协同工作 在软件开发中,经常会遇到接口不兼容的情况:如旧系统提供的接口无法被新系统直接调用,或第三方库的接口与当前系统设计不匹配。适配器模式…...
科大讯飞Q1营收46.6亿同比增长27.7%,扣非净利同比增长48.3%
4月21日盘后,AI龙头科大讯飞(002230.SZ)发布2024年报,公司全年实现营业收入233.43亿元,同比增长18.79%,同期归母净利润为5.6亿元。 公司核心赛道业务保持快速增长,消费者、教育、汽车、医疗业务…...
基于大模型的血栓性外痔全流程风险预测与治疗管理研究报告
目录 一、引言 1.1 研究背景与目的 1.2 研究意义 二、血栓性外痔概述 2.1 定义与发病机制 2.2 临床表现与诊断方法 2.3 现有治疗手段综述 三、大模型在血栓性外痔预测中的应用原理 3.1 大模型技术简介 3.2 模型构建与训练数据来源 3.3 模型预测血栓性外痔的工作流程…...
Transformer系列(三):编码器—解码器架构
Transformer架构 一、多头自注意力 (Multi-head self-attention)将矩阵维度从d降到d/k的优点 二、层归一化 (Lary Norm)三、残差连接 (Residual Connections)Add and Norm 四、注意力对数几率缩放 (Attention logit scaling)五、T…...
C++入门小馆: 深入string类(二)
嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的pa…...
MCU开发学习记录10 - 高级定时器学习与实践(HAL库)—PWM互补输出、死区控制、刹车控制 - STM32CubeMX
本文将介绍高级定时器的概念(只讲解高级定时器特有功能)、相关函数以及STM32CubeMX生成定时器的配置函数以及对生成定时器的配置函数进行分析(包括结构体配置、相关寄存器配置)。针对于高级定时器实践:实现输出PWM互补…...
pytest基础-new
规范 1、首先创建 py 文件命名以 test_ 开始或者以 _test 结尾 2、若是新建类,测试类需要以 Test_开头 3、测试用例(方法)需要以 test_开头 assert 断言 assert xx:判断 xx 为真 assert not xx:判断 xx 不为真 asse…...
利用Qt创建一个模拟问答系统
界面: 添加了聊天显示区域(QTextEdit) 添加了发送按钮和清空对话按钮 优化了布局和窗口大小添加了时间戳显示 2、功能: 支持实时对话可以清空对话历史 支持按回车发送消息 添加了简单的关键词匹配响应系统 交互体验&#x…...
CCF CSP 第37次(2025.03)(1_数值积分_C++)
CCF CSP 第37次(2025.03)(1_数值积分_C) 解题思路:思路一: 代码实现代码实现(思路一): 时间限制: 1.0 秒 空间限制: 512 MiB 原题链接 解题思路…...
使用 Flutter 遇坑小计
前言 首先, 谷哥很贴心地为国内用户准备了一份使用手册 不过很遗憾 就算你照着它的手册来了, 还是会在后续使用中遇到其它的坑 今天我踩了, 保不齐明天就是其他人(lol) running gradle task ‘assembledebug’ stuck 首先去确定下当下Android Studio(或者说你目前的Flutter项…...
C语言中的双链表和单链表详细解释与实现
C语言中的双链表详细解释与实现 双链表(Doubly Linked List)是一种常见的数据结构,它比单链表更灵活,因为每个节点都包含指向前驱和后继节点的指针。 双链表的基本结构 节点定义 c 复制 下载 typedef struct Node {int dat…...
CSS零基础入门笔记:狂神版
前言 本笔记是学习狂神的java教程,建议配合视频,学习体验更佳。 【狂神说Java】HTML5完整教学通俗易懂_哔哩哔哩_bilibili 第1-2章:Java零基础入门笔记:(1-2)入门(简介、基础知识)-CSDN博客 第3章&…...
使用python调用deepseek 多轮对话,详细讲解
以下代码实现在python中与deepseek实现多轮对话。 Messages参数是对话历史和上下文的核心载体。 数据结构: • 必须是包含消息对象的数组 • 每个消息对象必须包含: o role:发言者身份(system/user/assistant) o con…...
requestAnimationFrame是什么?【前端】
亲爱的读者,希望今天的你好心情~ 目录 requestAnimationFrame是什么?目的?举个栗子: requestAnimationFrame是什么? requestAnimationFrame 是一种用于优化动画性能的 JavaScript API。它允许你在浏览器的下一次重绘之…...
SQL Server基础
二. SQL Server数据库 1. 数据库简介 数据库本质是写成磁盘文件,在硬盘中存储用处 存储大量数据,方便检索和访问保持数据信息的一致、完整共享和安全通过组合分析,产生新的有用信息 数据库发展史 萌芽阶段:文件系统,…...
Vue-组件的懒加载,按需加载
在Vue项目中实现组件的懒加载(也称为按需加载或代码分割),可以大大提升应用的加载速度和性能。懒加载主要通过Webpack的代码分割功能实现,特别是使用动态导入(import()语法)。 为什么要使用懒加载…...
Docker 镜像、容器和 Docker Compose的区别
前言:Docker 的镜像、容器和 Docker Compose 是容器化技术的核心组件,以下是对它们的详细解析及使用场景说明。 1、Docker 镜像(Image) 定义: 镜像是只读模板,包含运行应用程序所需的代码、…...
批量创建同名文件夹并整理文件至对应文件夹
在我们的日常工作和生活中,创建文件几乎是必不可少的一部分。随着时间的推移,电脑中积累了大量的文件,管理这些文件成为一项繁琐且耗时的任务。尤其当我们需要按照一定规则对文件进行整理时,很多人会感到困惑。例如,领…...