机器学习25:《数据准备和特征工程-III》采样和分隔

news2024/11/26 23:31:50

目录

1.采样和分割数据

1.1 抽样简介

1.2 过滤 PII(个人身份信息)

2.数据不平衡

2.1 下采样和增加权重

3.数据分割示例

3.1 随机分割可能不是最好的方法

4.分割数据

5.随机化

5.1 实际考虑

5.2 散列的注意事项

6.参考文献


1.采样和分割数据-Sampling and Splitting Data

1.1 采样简介

为机器学习项目收集足够的数据通常很困难。然而,有时数据太多,我们必须选择示例子集进行训练。那么,如何选择子集?以 Google 搜索为例,以什么粒度对大量数据进行采样?你会使用随机查询吗?随机会话?随机用户?

最终,答案取决于问题:我们想要预测什么,我们想要什么特征?

  • 要使用上一个查询的特征,需要在会话级别进行采样,因为会话包含一系列查询。
  • 要使用前几天的用户行为特征,则需要在用户级别进行采样。

1.2 过滤 PII(个人身份信息)

如果数据包含 PII(个人身份信息),可能需要将其从数据中过滤掉。例如,策略可能要求你删除不常见的特征。 这种过滤通常会改变数据分布,丢失尾部的信息(分布中值非常低的部分,远离平均值)。

这种过滤很有用,因为非常罕见的特征很难学习。但重要的是要认识到你的数据集将偏向头部查询。在服务时,你可以预期从尾部提供示例会做得更糟,因为这些示例是从训练数据中过滤掉的。尽管这种偏差无法避免,但在分析过程中请注意这一点。


2.数据不平衡-Imbalanced Data

构成数据集大部分的类称为 多数类。所占比例较小的是 少数群体。那么,什么算不平衡?答案可能从温和到极端,如下表所示。

不平衡程度少数群体比例
温和的数据集的 20-40%
缓和数据集的 1-20%
极端<数据集的1%

为什么要注意不平衡的数据?如果你的分类任务包含不平衡的数据集,则可能需要应用特定的采样技术。举个例子,一个检测欺诈的模型,相关数据集如下图所示:数据集中每 200 笔交易就会发生一次欺诈实例,因此在真实分布中,大约 0.5% 的数据是正的。

由于相对于负面例子来说,正面例子很少,因此训练模型将把大部分时间花在负面例子上,而不能从正面例子中学到足够的东西。例如,如果你的批次大小为 128,则许多批次将没有正例,因此梯度的信息量会较少。

在实践中,如果数据集不平衡,需要首先尝试对真实分布进行训练。如果模型运行良好并且具有概括性,那么自然是最好的结果!反之,则需尝试以下下采样和上加权技术。

2.1 下采样和增加权重

处理不平衡数据的有效方法是对多数类进行下采样和增加权重。让我们首先定义这两个新术语:

  • 下采样:意味着对大多数类示例中不成比例的低子集进行训练。
  • 增加权重:意味着向下采样的类添加一个示例权重,该权重等于下采样的因子。

步骤 1:对多数类别进行下采样。还是以上面介绍的欺诈数据集为例,其中 1 个正例到 200 个负例。下采样 10 倍可将平衡性提高到 1 个正例到 20 个负例 (5%)。虽然得到的训练集仍然是不平衡的,但正例与负例的比例比原来极度不平衡的 比例(0.5%)要好得多。

步骤 2:增加下采样类的权重:将示例权重添加到下采样类。由于我们按 10 倍下采样,因此示例权重应为 10。

在之前的文章中,权重一词指代模型参数(例如神经网络中的连接)。在这里,我们讨论的是 示例权重,这意味着在训练过程中更重要的是计算单个示例。示例权重为 10 意味着模型将该示例视为权重为 1 的示例的 10 倍(计算损失时)。

权重应等于您用于下采样的因子:

\text{ \{example weight\} = \{original example weight\} x \{downsampling factor\} }


3.数据分割示例

收集数据并根据需要进行采样后,下一步是将数据分为 训练集、 验证集和测试集。

3.1 随机分割可能不是最好的方法

虽然随机分割是解决许多机器学习问题的最佳方法,但它并不总是正确的解决方案。例如,考虑其中示例自然聚集成相似示例的数据集。如图 1 所示,假设用模型对新闻的主题进行分类,采用随机分割就可能会出现问题。

图 1. 新闻报道是聚集的

原因在于新闻故事一般是成群出现的:关于同一主题的多个故事在同一时间发布。因此,如果我们随机分割数据,测试集和训练集可能会包含相同的故事。实际上,这种方式是行不通的,因为所有故事都会同时进入,所以像这样进行分割会导致倾斜。

图 2. 随机拆分会将集群拆分为多个集合,从而导致倾斜

解决这个问题的一个简单方法是根据故事发布的时间(也许是故事发布的日期)来分割我们的数据。这会导致同一天的故事被放置在同一个分组中。

图 3. 按时间分割可以使集群大部分最终位于同一组中

对于数以万计或更多的新闻报道,一定比例的新闻报道可能会在几天内分配。不过问题不大,事实上,这些故事分布在两天的新闻周期中,或者,我们可以丢弃距离截止点一定范围内的数据,以确保没有任何重叠。例如,可以训练四月份的故事,然后使用五月的第二周作为测试集,周间隙防止重叠。


4.分割数据-Splitting Data

正如上面的 “新闻报道主题分类” 所示,纯粹的随机分割并不总是正确的方法。在线系统的一种常见技术是按时间分割数据,这样就可以:

  • 收集 30 天的数据。
  • 使用第 1-29 天的数据进行训练。
  • 评估第 30 天的数据。

对于在线系统,训练数据比服务数据更旧,因此该技术可确保验证集反映训练和服务之间的滞后。然而,基于时间的分割最适合非常大的数据集,例如具有数千万个示例的数据集。在数据较少的项目中,训练、验证和测试之间的分布最终会有很大不同。

想要为数据设计一种合适的分隔方式,首先需要明确数据代表什么(数据的内涵),只有充分了解数据,才能设计出合适的分隔策略。


5.随机化-Randomization

5.1 实际考虑

假设想要添加一个特征来查看它如何影响模型质量。为了公平的实验,除了这个新特征之外,数据集应该是相同的。如果数据不可重现,则无法制作这些数据集。鉴于此,确保数据生成中的任何随机化都可以是确定性的:

  • 为随机数生成器(RNG) 播种。播种可确保 RNG 在每次运行时以相同的顺序输出相同的值,从而重新创建数据集。
  • 使用不变的哈希键。 散列是分割或采样数据的常用方法。我们可以对每个示例进行散列,并使用生成的整数来决定将示例放置在哪个分割中。每次运行数据生成程序时,哈希函数的输入不应更改。例如,如果想按需重新创建哈希值,请勿在哈希值中使用当前时间或随机数。

5.2 散列的注意事项

想象一下,你正在收集搜索查询并使用散列来包含或排除查询。如果哈希键仅使用查询,则在多天的数据中,将始终包含该查询或始终排除它,而总是包含或总是排除查询是不好的,因为:

  • 训练集将看到一组不太多样化的查询。
  • 评估集与训练集没有重叠。

针对上述问题,可以对查询+日期进行散列,如此一来,每天都有不同的散列。

 小结一下,即保证散列独一无二,以确保系统不会与其他系统发生冲突。

6.参考文献

链接-https://developers.google.cn/machine-learning/data-prep/construct/sampling-splitting/sampling

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

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

相关文章

2023,中国电商重回元老时代

中国的历史上不缺“太上皇”&#xff0c;但“太上皇”再度站到台前的很少。公元1457年&#xff0c;被囚禁在南宫的“太上皇”朱祁镇复位&#xff0c;上演了中国历史上少见的南宫复辟。而危机时刻被推举为皇帝的朱祁钰&#xff0c;后来的庙号是代宗&#xff0c;阴阳怪气十足。 …

php://input文件包含

实验目的 通过本实验&#xff0c;了解php封装伪协议&#xff0c;掌握php://input文件包含的用法 实验环境 操作机&#xff1a;kali 靶机&#xff1a;Windows 实验地址&#xff1a;http://靶机ip/exp/include2/input/input2/ 工具&#xff1a;burpsuite 用户名&#xff1a…

好用的屏幕录制工具--Bandicam(班迪录屏)

最近准备录个电脑的音频&#xff0c;找了好多个软件&#xff0c;除了收费就是功能有限&#xff0c;经过好一番折腾试用&#xff0c;发现了2个介面友好功能强大的录屏、录音软件&#xff1a; ① Bandicam(班迪录屏)&#xff08;强烈推荐&#xff09; ② 数据蛙录屏 Bandicam(班迪…

【PC】CPU与GPU

文章目录 CPU与主板CPU是什么主板是什么功能 GPU与显卡GPU是什么显卡是什么功能 CPU与GPU的关系 ALU&#xff1a; 算术单元&#xff08;Arithmetic Unit&#xff09;&#xff1a;算术单元执行基本的算术运算&#xff0c;如加法、减法、乘法和除法。它能够对整数、浮点数和定点数…

适合成长型企业的4个 CRM 工作流程

如果你在繁琐的任务上花费太多的时间并难以让你的业务井井有条&#xff0c;CRM工作流程自动化可能会解决你的问题。 CRM&#xff08;客户关系管理系统&#xff09;是自动化工作流程最有效的工具之一&#xff0c;因为它可以帮助你从一个地方完成关键工作流程。CRM工作流程使你能…

软件测试技能,JMeter压力测试教程,获取post请求x-www-form-urlencoded格式的数据(二十四)

一、前言 post请求的参数有一些是json格式&#xff0c;也有一些是x-www-form-urlencoded格式&#xff0c;前面讲签名的时候获取到post请求的是json格式 本篇继续讲x-www-form-urlencoded格式的请求body如何获取到 二、x-www-form-urlencoded 在请求头部添加Content-Type类型…

CodeForces..移位密码器.[简单].[字符比较]

题目描述&#xff1a; 题目解读&#xff1a; 对字符串 a 进行加密后得到j加密字符串 s 。 加密规则为&#xff1a; 在字符串 a 的每个字符之后&#xff0c;添加任意(可能为零)数量的小写字母&#xff0c;与字符本身不同。 在每次这样的添加之后&#xff0c;我们将原字符添加…

【来不及刷题之】42、括号生成(递归)

常规的方法是用回溯来写这个题&#xff0c;但是回溯理解起来实在是有一点困难&#xff0c;下面这个思路是直接用递归来生成&#xff0c;首先要明确的是&#xff0c;在已经生成的字符串中&#xff0c;左括号的数量一定要大于等于右括号的数量&#xff0c;否则就不合法&#xff0…

ADSCOPE加入中国广告协会!

近日&#xff0c;经协会批准&#xff0c;上海倍孜网络技术有限公司正式加入中国广告协会&#xff0c;成为会员单位。上海倍孜将在中广协的组织和引导下&#xff0c;依托自身在行业深耕多年的优势&#xff0c;为中国数字营销领域贡献力量。 中国广告协会&#xff08;中广协&…

看完就会,从抓包到接口测试的全过程解析

一、为什么抓包 从功能测试角度 通过抓包查看隐藏字段 Web 表单中会有很多隐藏的字段&#xff0c;这些隐藏字段一般都有一些特殊的用途&#xff0c;比如收集用户的数据&#xff0c;预防 CRSF 攻击&#xff0c;防网络爬虫&#xff0c;以及一些其他用途。这些隐藏字段在界面上…

react—Hook(2)

6. useMemo—似计算属性 useMemo和useCallback的作用十分类似&#xff0c;只不过它允许记住任何类型的变量&#xff08;useCallback只记住函数&#xff09;。当改变其他变量时&#xff0c;普通函数都会运行&#xff0c;它返回的结果并没有改变。这个时候就可以使用useMemo将函…

MFC 单文档模式

Doc类利用自带框架存数据 void CCADDoc::Serialize(CArchive& ar) {if (ar.IsStoring()){// TODO: 在此添加存储代码//保存数据到文件ar << m_nShapeCount;for (int i 0; i < m_arrShapes.GetSize(); i){CShape* pShape NULL;pShape (CShape*)m_arrShapes[i];…

如何在大背景下降本增效,构建超大规模存储架构?

在日新月异的大数据服务不断涌现的今天&#xff0c;我们可以看到作为数据基础底座的存储服务面临了越来越多的复杂环境和需求的挑战。无论是离线大数据存储&#xff0c;还是在线 KV 类存储&#xff0c;都服务了越来越多的数据应用场景。存储业务形态的多样化&#xff0c;催生了…

linux centos8下安装redis6.2.12

一.下载安装包并解压 Download | Redis 解压操作 tar -zxvf redis-6.2.12.tar.gz 二.进入到redis-6.2.12中 cd redis-6.2.12 三.预编译make到本地 四.创建文件: mkdir -p /opt/redis,最后将redis安装到opt/redis目录中去 五.安装到指定目录: make install PREFIX/opt/redis…

Android 支持 lhdc

LHDC全称Low-Latency Hi-Definition Audio Codec&#xff0c;是一种高音质蓝牙编解码方案&#xff0c;由台湾厂商 Savitech 盛微先进科技开发。先看下介绍 这块不涉及音频&#xff0c;只有蓝牙&#xff0c;因为音频的codec是由台湾厂商 Savitech 盛微先进科技开发的&#xff0…

信息化项目生命周期类型的特点与管理方法论

目录 一、预测型生命周期 二、迭代型生命周期 三、增量型生命周期 四、适应型生命周期 五、混合型生命周期 六、各生命周期之间的差异点 七、项目管理五大过程组 八、适应型项目中过程组之间的关系 九、项目管理十大知识领域 十、项目管理八大绩效域 十一、价值交付系统 一、预…

立体记录留住精彩瞬间,推荐录屏软件给你

在如今数字化时代&#xff0c;电脑录屏软件成为越来越多人必备的工具之一。不论是教学、演示、游戏录制还是内容创作&#xff0c;录屏软件能够帮助我们捕捉屏幕上的活动并将其保存为高质量的视频文件。然而&#xff0c;在众多的选择中&#xff0c;我们该如何寻找一款适合自己需…

C#核心知识回顾——10.List、Dictionary、数据结构

1.List List<int> list new List<int>(); List<String> strings new List<String>();//增list.Add(0);list.Add(1);List<int> ints new List<int>();ints.Add(0);list.AddRange(ints);//插入list.Insert(0, 1);// 位置0插入1//删//1.移…

Impala3.4源码阅读笔记(五)统计信息

前言 本文为笔者个人阅读Apache Impala源码时的笔记&#xff0c;仅代表我个人对代码的理解&#xff0c;个人水平有限&#xff0c;文章可能存在理解错误、遗漏或者过时之处。如果有任何错误或者有更好的见解&#xff0c;欢迎指正。 基本信息 在Impala中&#xff0c;Stats记录…

【Vuejs】1732- 详细聊一聊 Vue3 依赖注入

&#x1f449; 「相关文章」 深入浅出 Vue3 自定义指令详细聊一聊 Vue3 动态组件6 个你必须明白 Vue3 的 ref 和 reactive 问题初中级前端必须掌握的 10 个 Vue 优化技巧分享 15 个 Vue3 全家桶开发的避坑经验 在 Vue.js 中&#xff0c;依赖注入[1]&#xff08;DI&#xff09;是…