机器学习数据预处理——特征选择

2023-11-03

引言

  在机器学习的训练过程中,总是会碰到样本大、特征多的数据集。而这些数据集里面的数据有些是用处很小甚至完全无用的。如果一组数据中的无用数据占比较大时,一方面会使得模型的训练时间变长,另一方面模型容易出现欠拟合现象;而如果一组数据中作用较小的数据,即在训练中不能较好体现数据集中样本特征的数据,这类数据占比较大时,除了会提升模型训练的时间以外,还容易引起模型的过拟合现象。
  针对这种情况,我们需要对这组数据集进行数据的预处理,其主要的方法有降噪、特征选择以及降维处理,而这次主要讲解如何进行特征选择以及特征选择的一些算法。

基于机器学习的数据不平衡问题处理
机器学习数据预处理——降维

特征选择

  在一个典型的机器学习中,是通过特征来预测样本的值;而当特征过少时,我们往往会通过某些算法来增加特征,但实际上,大多数时候特征的数量总会过多,那里面难免会出现一些对模型训练的无用或多余的特征。例如:对汽车能否卖出进行预测时,若有特征如下——用户群体、汽车编号、汽车舒适度以及中国男女比例,那么显然,中国男女比例就是一个无用特征;再者,同样对与车能否卖出进行预测,若特征变成如下几个——汽车底盘大小,汽车的价格,汽车的舒适度以及汽车的占地面积,在这组特征里,汽车底盘大小和汽车的占地面积有较大的重复性,这便是存在多余特征,选其中一个即可.
  那么对于这些特征,若不加以处理,则容易影响模型的最终训练效果。其处理方法主要有如下几种:

  1. 过滤法(Filter):这种方法首先选定特征,再来进行学习。根据每一个属性的一些指标(如方差等),来确定这个属性的重要程度,然后对所有属性按照重要程度排序,从高到低的选择属性。选定了属性以后,再来进行训练。比如Fisher Score、Laplacian Score等。这种方法其实不大好,因为决定特征选择效果的不是单个的属性,而是属性的集合,比如属性A、B、C,单个来看效果不好,但是它们组合起来效果有可能不错。
  2. 包裹法(Wrapper):这种方法把选定的特征集用分类器进行训练,用训练效果(如准确率等)来作为特征集的评价。比如将启发式搜索、GA等。这种方法和分类器相结合,比较直观,和Filter相比也更加合理。缺点是计算开销较大。
  3. 嵌入法(Embedding):把特征选择的过程作为学习过程的一部分,在学习的过程中进行特征选择,最典型的如决策树算法。

过滤法(Filter)

  过滤式方法先对数据集进行特征选择,然后再训练学习器,特征选择过程与后续学习器无关.这相当于先用特征选择过程对初始特征进行"过滤",再用过滤后的特征来训练模型.

方差过滤法

  方差过滤法是一种十分简单粗暴的方法,给定一个阈值,方差过滤法会将方差低于或等于该阈值的特征筛选掉。我们认为当一组特征的变化小到一定程度时,这组特征对结果的预测所能起到的帮助便是微乎其微的,甚至为0,所以方差过滤法便将这些数据给筛选掉。

步骤

  先求得所有特征的方差值,然后给定一个阈值,最后将小于等于该阈值的特征给筛选掉,留下满足条件的特征组成新的数据集。

优缺点
优点
  1. 计算量较小,只需计算所有特征的方差即可
  2. 可作为第一次特征选择对特征进行过滤,降低后续算法的计算成本
缺点
  1. 比较依赖阈值的选取,如果阈值选取过高,会筛选掉许多有用特征;阈值过低,又会留下较多无用数据
  2. 一些作用较大的数据可能因为数据不平衡等问题出现方差较小的情况,而这些特征容易被方差过滤法给误删了
  3. 只能用于离散型数据,对于连续型数据,应先划分区间,将连续性化成离散型,再进行方差过滤

  由于方差过滤法的缺点较大,所以往往是先采用方差过滤法将一些变化极小或为无变化的特征先行筛选掉,减少一部分数据,然后再采用包裹法或嵌入法进行二次筛选

卡方检验

  卡方检验是特征选择中一种常见的算法。
  卡方检验在特征选择中是用以判别特征之间是否相互独立,即有无多余特征的出现

卡方分布

  定义:若 k k k个独立的随机变量 z 1 , z 2 , ⋯   , z k z_{1},z_{2},\cdots ,z_{k} z1,z2,,zk,且 z i ∼ N ( 0 , 1 ) ( i = 1 , 2 , ⋯   , k ) z_{i}\sim N\left (0,1 \right )\left (i=1,2,\cdots ,k\right ) ziN(0,1)(i=1,2,,k),则这 k k k个随机变量的平方和 Z = z 1 2 + z 2 2 + ⋯ + z k 2 Z=z_{1}^{2}+z_{2}^{2}+\cdots +z_{k}^{2} Z=z12+z22++zk2为服从自由度为 k k k的卡方分布,记为: Z ∼ x 2 ( k ) Z\sim x^{2}\left ( k\right ) Zx2(k)
  卡方分布的期望: E ( x 2 ) = n E\left (x^{2}\right )=n E(x2)=n,方差: D ( x 2 ) = 2 n D\left ( x^{2}\right )=2n D(x2)=2n n n n为分布的自由度

思想

  卡方检验是以 χ 2 \chi ^{2} χ2分布为基础的一种常用假设检验方法,它的无效假设 H 0 H_{0} H0是:观察频数与期望频数没有差别
  该检验的基本思想是:首先假设 H 0 H_{0} H0成立,基于此前提计算出 χ 2 \chi ^{2} χ2值,它表示观察值与理论值之间的偏离程度。根据 χ 2 \chi ^{2} χ2分布及自由度可以确定在 H 0 H_{0} H0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习数据预处理——特征选择 的相关文章

随机推荐

  • Open3D Ransac拟合分割多个球体

    目录 一 算法原理 二 代码实现 三 结果展示 四 测试数据 一 算法原理 算法的核心原理还是RANSAC拟合球面 具体理论可参考 Open3D RANSAC三维点云球面拟合 只是对代码稍加修改使其适用于分割点云数据中的多个球体 二 代码实
  • 回归平方和 ESS,残差平方和 RSS,总体平方和 TSS

    https zhidao baidu com question 565190261749684764 html 回归平方和 ESS 残差平方和 RSS 总体平方和 TSS 总变差 TSS 被解释变量Y的观测值与其平均值的离差平方和 总平方和
  • 5.12 数据结构——哈夫曼编码

    在远程通讯中 要将待传字符转换成二进制的字符串 假设要传输的字符为 ABACCDA 若编码为 A 00 B 01 C 10 D 11 那么要传输的字符的编码为 00010010101100 若将编码设计为长度不等的二进制编码 即让待传字符串
  • 基于深度学习的人脸表情识别(一)

    第一篇博客就不用Markdown 什么鬼 来写了 今天主要是被老板一通说 然后说两月看10篇paper 算了 还是丫丫自己先多码码论文吧 再加之这几天有开博的想法 就索性一起开了 顺道总结下最近看的一篇中文的 Facial Expressi
  • 【CPU】常见术语解释

    interrupt service routine ISR 中断服务程序 中断 指当CPU正在处理某件事情时 外部发生的某一事件 如一个电平的变化 一个脉冲沿的发生或 定时器计数溢出等 请求CPU迅速去处理 于是CPU暂时中止当前的工作 转
  • 【机器学习基础】Python机器学习入门指南(全)

    前言 机器学习 作为人工智能领域的核心组成 是计算机程序学习数据经验以优化自身算法 并产生相应的 智能化的 建议与决策的过程 一个经典的机器学习的定义是 A computer program is said to learn from ex
  • 计算机转换汉子英语,中英文切换(电脑怎么切换拼音打字)

    在打字时需要输入英文怎么切换 用搜狗等各类拼音法的话 不用切换就可自由地 中英 非常简单 没有人不知道吧 方法是 汉字状态时 按回车键就是英文字母 此时按空格键是汉字 谁能告诉我小键盘旁边 也就是全角和半角的旁边的中文和英文符号 切换的 c
  • vue-element-admin/template登录Request failed with status code 405

    问题 vue element admin vue admin template 登录不上 报错Request failed with status code 405 解决 main js的开发配置production修改为开发模式 deve
  • opencv 识别长方形_使用OpenCV检测图像中的矩形

    本文实例为大家分享了OpenCV检测图像中矩形的具体代码 供大家参考 具体内容如下 前言 1 OpenCV没有内置的矩形检测的函数 如果想检测矩形 要自己去实现 2 我这里使用的OpenCV版本是3 30 矩形检测 1 得到原始图像之后 代
  • shell基础语法

    1 变量 语法 变量名 变量值 PS 两边不能有空格 1 使用变量 变量名 ex Name wendy 声明变量 echo Name 或 echo Name 输出变量 ps 花括号可选 2 只读变量 readonly 变量 3 删除变量 u
  • maven明明本地仓库有依赖包,还会远程下载的问题

    我今天在无网的环境下 打算进行maven编译打包 可是明明有本地仓库 也配置了本地仓库 但是还是会从远程下载 然后再各大网友的帮助下 百度 谷歌 查询到主要的原因是在本地仓库的每个依赖包都存在 remote repositories文件 直
  • layui多文件上传与下载示例

    第一次写文件上传 不知道怎么下手 幸好有万能layui 方便了很多 HTML div class layui body header span class layui body header title 产品文件上传 span div di
  • 对话用友网络副总裁、用友大易创始合伙人石磊:新的人力资源红利时代已经到来

    数科星球原创 作者丨苑晶 编辑丨十里香 在这个日新月异的科技时代 无论是企业还是个人 拥抱先进的技术工具以及前沿的思维成为建立差异化优势 取得长期价值的不二法门 在真实的场景中 企业内部的管理状况更为复杂 2023年 在全行业跑步奔向增长之
  • 用python编写一个弹球游戏

    用python编写一个简单的弹球游戏 这是学习python时用来练习的一个项目 作为笔记 最终是实现一个简单的弹球游戏 效果图如下 源代码 无限命版的弹球游戏python代码 from tkinter import 来源于python的标准
  • “互联网+”定义及相关概念解析

    来源 中国互联网技术联盟 2015年5月 6月 7月 国家密集性的发布了三大重型文件 中国制造2025 大众创业万众创新政策措施意见 互联网 行动指导意见 随后 中国互联网技术联盟邀请专家委员会对此专门进行了闭门研讨和解读梳理 并将梳理成果
  • 有关res://ieframe.dll/dnserrordiagoff_webOC.htm# http://www.51hainuo.cn

    有关这个 res ieframe dll dnserrordiagoff webOC htm http www 51hainuo cn 大部分的人应该会觉得是dns错误或者dns解析本机不正常 然后就去找杀毒软件来杀毒 网上我搜索的到的很多
  • html水平导航和垂直导航,简单却实用的CSS水平和垂直导航栏【演示/源码】

    说到CSS导航栏 各种漂亮炫酷的样式都应有尽有 不过本文要介绍的是简单却又很实用的导航栏 分为水平导航栏和垂直导航栏两种样式 适合初学者学习使用 以及一些对设计要求不高的网页使用 简单却实用的CSS水平和垂直导航栏 概述 这个简单的教程将教
  • IOException parsing XML document from class path resource [applicationContent.xml]; nested exception

    Spring报错问题 IOException parsing XML document from class path resource applicationContent xml nested exception is java io
  • 深度学习算法优化系列

    1 前言 这是Google在CVPR 2018上发表的一篇int8量化的论文 题目为 Quantization and Training of Neural Networks for Efficient Integer Arithmetic
  • 机器学习数据预处理——特征选择

    引言 在机器学习的训练过程中 总是会碰到样本大 特征多的数据集 而这些数据集里面的数据有些是用处很小甚至完全无用的 如果一组数据中的无用数据占比较大时 一方面会使得模型的训练时间变长 另一方面模型容易出现欠拟合现象 而如果一组数据中作用较小