当前位置: 首页 > news >正文

XGB-14:DMatrix的文本输入格式

简要描述XGBoost的文本输入格式。然而,对于具有支持的语言环境(如Python或R)的用户,建议使用该生态系统中的数据解析器。例如,可以使用sklearn.datasets.load_svmlight_file()

基本输入格式

XGBoost目前支持两种文本格式的数据导入:LIBSVMCSV。本文档的其余部分将描述LIBSVM格式(有关CSV格式的描述,请参见此Wikipedia文章)。请注意,XGBoost不理解文件扩展名,也不尝试猜测文件格式,因为关于LIBSVM或CSV文件扩展名的普遍协议不存在。相反,它使用URI格式来指定精确的输入文件类型。例如,如果提供一个csv文件./data.train.csv作为输入,XGBoost将盲目地使用默认的LIBSVM解析器对其进行解析并生成解析器错误。相反,用户需要提供一个形如train.csv?format=csvtrain.csv?format=libsvm的URI。对于外部内存输入,URI的形式应该类似于train.csv?format=csv#dtrain.cache

对于训练或预测,XGBoost接受以下格式的实例文件train.txt

1 101:1.2 102:0.03
0 1:2.1 10001:300 10002:400
0 0:1.3 1:0.3
1 0:0.01 1:0.3
0 0:0.2 1:0.3

每一行表示一个单独的实例,在第一行中,‘1’是实例标签,‘101’和‘102’是特征索引,‘1.2’和‘0.03’是特征值。在二分类情况下,‘1’用于表示正样本,‘0’用于表示负样本。还支持在 [0,1] 范围内的概率值作为标签,以表示该实例为正样本的概率。

附加信息的辅助文件

群组输入格式:

对于排序任务,XGBoost支持群组输入格式。在排序任务中,实例在实际场景中被分类到查询群组中。例如,在学习对网页进行排序的情况下,网页实例按其查询进行分组。XGBoost需要一个文件来指示群组信息。例如,如果实例文件是上面显示的train.txt,则群组文件应命名为train.txt.group,并具有以下格式:

2
3

这意味着数据集包含5个实例,前两个实例属于一组,另外三个实例属于另一组。群组文件中的数字实际上表示实例文件中每组中实例的数量,按照它们在实例文件中的顺序。在配置时,无需指定群组文件的路径。如果实例文件名为xxx,XGBoost将检查同一目录中是否存在名为xxx.group的文件。

实例权重文件

训练数据中的实例可以被赋予权重,以区分它们之间的相对重要性。例如,如果为示例中的train.txt文件提供一个实例权重文件train.txt.weight,如下所示:

1
0.5
0.5
1
0.5

这意味着XGBoost在训练时将更加强调第一个和第四个实例(即正实例)。配置与配置组信息类似。如果实例文件名为xxx,XGBoost将在同一目录中查找名为xxx.weight的文件。如果文件存在,将在训练时提取并使用实例权重。

注意:

如果选择将训练数据保存为二进制缓冲区(使用save_binary()),请注意生成的二进制缓冲区文件将包括实例权重。要更新权重,请使用set_weight()函数。

初始边界文件

XGBoost支持为每个实例提供初始边际预测。例如,如果使用逻辑回归对train.txt文件进行了初始预测,可以创建以下文件train.txt.base_margin

-0.4
1.0
3.4

XGBoost将使用这些值作为初始边际预测并从中提升。关于base_margin的一个重要说明是,它应该是转换之前的边际预测,因此如果使用的是对数损失,需要使用对数变换之前的值。如果正在使用XGBoost预测器,请使用pred_margin=1来输出边际值。

嵌入附加信息到 LIBSVM 文件中

此部分适用于单节点和多节点设置。

查询 ID 列

这对于排名任务非常有用,其中实例被分组成查询组。可以通过在每一行中添加形如 qid:xx 的标记,将每个实例的查询组 ID 嵌入到 LIBSVM 文件中train.txt

1 qid:1 101:1.2 102:0.03
0 qid:1 1:2.1 10001:300 10002:400
0 qid:2 0:1.3 1:0.3
1 qid:2 0:0.01 1:0.3
0 qid:3 0:0.2 1:0.3
1 qid:3 3:-0.1 10:-0.3
0 qid:3 6:0.2 10:0.15

注意以下限制:

  • 不允许仅为某些实例指定查询 ID,而对其他实例不指定。要么每一行都分配查询 ID,要么完全不分配。
  • 行必须按查询 ID 升序排序。例如,不能使一行的查询 ID 比以下任何一行都大。

实例权重

可以通过在 LIBSVM 文件中将每个实例标签与相应的权重一起附加来指定实例权重[label]:[weight],如下例所示train.txt

1:1.0 101:1.2 102:0.03
0:0.5 1:2.1 10001:300 10002:400
0:0.5 0:1.3 1:0.3
1:1.0 0:0.01 1:0.3
0:0.5 0:0.2 1:0.3

其中负实例的权重是正实例权重的一半。

相关文章:

  • Unity3D 使用 Lerp 进行连续运动
  • IOS 设置UIViewController为背景半透明浮层弹窗,查看富文本图片详情
  • Sanctuary AI旗下世界上首个采用Carbon驱动的人形通用机器人Phoenix最新演示视频
  • HarmonyOS | 状态管理(五) | @Observed装饰器和@ObjectLink装饰器
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • 【实战-08】 flink自定义Map中的变量的行为
  • 深入JVM:解析OOM的三大场景,原因及实战解决方案
  • 论文阅读NAM:Normalization-based Attention Module
  • 错误:comparison method violates its general contract
  • 智慧应急:构建全方位、立体化的安全保障网络
  • vue使用gitshot生成gif
  • 【Langchain多Agent实践】一个有推销功能的旅游聊天机器人
  • 如何在Window系统部署BUG管理软件并结合内网穿透实现远程管理本地BUG
  • SpringMVC 学习(二)之第一个 SpringMVC 案例
  • 解释什么是内连接、左连接和右连接,并给出每种连接的SQL示例
  • $translatePartialLoader加载失败及解决方式
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • MD5加密原理解析及OC版原理实现
  • MySQL-事务管理(基础)
  • Otto开发初探——微服务依赖管理新利器
  • supervisor 永不挂掉的进程 安装以及使用
  • Terraform入门 - 3. 变更基础设施
  • 从0实现一个tiny react(三)生命周期
  • 基于游标的分页接口实现
  • 警报:线上事故之CountDownLatch的威力
  • 探索 JS 中的模块化
  • 小程序开发之路(一)
  • - 转 Ext2.0 form使用实例
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​io --- 处理流的核心工具​
  • #{}和${}的区别是什么 -- java面试
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (11)MATLAB PCA+SVM 人脸识别
  • (5)STL算法之复制
  • (6)STL算法之转换
  • (floyd+补集) poj 3275
  • (Java数据结构)ArrayList
  • (Oracle)SQL优化技巧(一):分页查询
  • (层次遍历)104. 二叉树的最大深度
  • (二)斐波那契Fabonacci函数
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (翻译)terry crowley: 写给程序员
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (九)c52学习之旅-定时器
  • (三)Honghu Cloud云架构一定时调度平台
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)jQuery 基础
  • (转)scrum常见工具列表
  • .NET Core Web APi类库如何内嵌运行?
  • .NET Core WebAPI中封装Swagger配置
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .NET单元测试
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • @RequestBody与@ModelAttribute
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码