CatBoost中目标变量统计
CatBoost中的目标变量统计(Target Statistics)是其处理分类特征(Categorical Features)的核心技术之一。目标变量统计是一种特殊的编码方法,通过利用目标值信息生成数值特征,从而替代传统的独热编码或其他处理方法。这种方法对于具有高基数分类特征(如ID或字符串)特别高效。
目标变量统计的原理
目标变量统计编码的关键思想是用分类特征的历史统计信息来替代原始的类别值。例如,对于分类特征 A A A,其编码可以表示为该特征下目标变量 y y y 的均值、加权均值或其他统计量。
在CatBoost中,目标变量统计的计算方式遵循以下原则:
-
避免数据泄漏
- 目标变量的统计值只能使用当前样本之前的数据计算,确保训练过程中不会泄漏测试数据的目标值。
- 这通过Ordered Target Statistics来实现。
-
动态计算方式
- 每一行的目标统计值根据之前数据的目标值动态计算,而不是直接使用整个数据集的统计值。
-
平滑处理
- 为避免分类特征类别样本量较小时统计值不稳定,CatBoost对统计结果进行了平滑处理。
- 一种常见的平滑方式是将类别均值与全局目标均值按权重组合。
计算目标变量统计的过程
1. 公式表达
目标变量统计编码通常采用以下形式计算:
S ( A i ) = ∑ j = 1 i − 1 y j + α ⋅ μ N i − 1 + α S(A_i) = \frac{\sum_{j=1}^{i-1} y_j + \alpha \cdot \mu}{N_{i-1} + \alpha} S(Ai)=Ni−1+α∑j=1i−1yj+α⋅μ
其中:
- A i A_i Ai 是样本 i i i 的分类特征值;
- y j y_j yj 是样本 j j j 的目标值;
- μ \mu μ 是目标变量的全局均值;
- N i − 1 N_{i-1} Ni−1 是类别 A i A_i Ai 在样本 1 1 1 到 i − 1 i-1 i−1 中的出现次数;
- α \alpha α 是平滑参数(控制全局均值对结果的影响)。
2. 分布处理
目标统计值通过逐行处理的方式计算,确保样本 i i i 的值不会用到样本 i i i 本身的目标值,从而避免信息泄漏。
3. 分组计算
对于训练数据集,CatBoost在内部根据数据顺序分组,先计算每组的目标统计,再将这些统计结果应用于模型训练。
Ordered Target Statistics的独特性
CatBoost的“Ordered Target Statistics”相较于其他目标编码方法的主要不同在于:
- 动态顺序计算
- 按照训练数据的时间顺序逐步更新,确保每个样本的目标统计值基于其之前样本计算。
- 无信息泄漏
- 避免了传统目标编码中使用目标变量的整体统计值而导致的未来信息泄漏问题。
具体案例
假设有一个数据集如下:
| 样本ID | 分类特征(City) | 目标变量(点击率) |
|---|---|---|
| 1 | New York | 1 |
| 2 | Los Angeles | 0 |
| 3 | New York | 1 |
| 4 | Los Angeles | 1 |
| 5 | New York | 0 |
目标变量统计编码的过程如下:
- 第一行:
- 对于 C i t y = New York City = \text{New York} City=New York,没有历史数据,目标统计值使用初始全局均值 μ \mu μ。
- 第二行:
- 对于 C i t y = Los Angeles City = \text{Los Angeles} City=Los Angeles,同样使用全局均值。
- 第三行:
- 对于 C i t y = New York City = \text{New York} City=New York,基于前两行计算:
S ( New York ) = 1 1 = 1 S(\text{New York}) = \frac{1}{1} = 1 S(New York)=11=1
- 对于 C i t y = New York City = \text{New York} City=New York,基于前两行计算:
- 以此类推。
目标变量统计的优点
-
对高基数分类特征有效
- 比如用户ID、商品ID,这些特征类别非常多,传统方法(如独热编码)会导致高维稀疏矩阵,而目标统计可以生成紧凑的数值特征。
-
避免信息泄漏
- Ordered Statistics的顺序计算确保每个样本的特征值与目标变量是独立的。
-
对模型性能提升显著
- 目标变量统计利用了目标变量的潜在分布信息,可以提升模型预测精度。
代码实现示例
from catboost import CatBoostClassifier, Pool# 示例数据
data = {'City': ['New York', 'Los Angeles', 'New York', 'Los Angeles', 'New York'],'Clicked': [1, 0, 1, 1, 0]
}# 数据池
train_data = Pool(data=data['City'], label=data['Clicked'], cat_features=[0])# 初始化模型
model = CatBoostClassifier(iterations=10, depth=2, learning_rate=0.1)# 训练模型
model.fit(train_data)# 查看目标变量统计
print(model.get_feature_importance(prettified=True))
此代码中,CatBoost会自动对City特征进行目标统计编码,无需用户显式指定。
相关文章:
CatBoost中目标变量统计
CatBoost中的目标变量统计(Target Statistics)是其处理分类特征(Categorical Features)的核心技术之一。目标变量统计是一种特殊的编码方法,通过利用目标值信息生成数值特征,从而替代传统的独热编码或其他处…...
WSL与Ubuntu系统--使用Linux
WSL与Ubuntu系统--使用Linux 前言基础教学视频卸载链接网络配置方法1方法2 正式安装步骤步骤1 基本命令修改网络配置Ubuntu系统的导出与导入文件操作给Ubuntu创造界面--也就是在装一个有界面的UbuntuHyper-v与windows主机文件共享 前言 需要链接梯子,并且梯子十分稳…...
操作系统离散存储练习题
1. (简答题)分页存储管理系统具有快表,内存访问时间为2ns,检索快表时间为0.5ns,快表命中率为80%,求有效访问时间 -分析:首先访问缓存(快表),如果没有找到访问内存(页表&…...
性能高于Transformer模型1.7-2倍,彩云科技发布基于DCFormer架构通用大模型云锦天章
2017年,谷歌发布《Attention Is All You Need》论文,首次提出Transformer架构,掀开了人工智能自然语言处理(NLP)领域发展的全新篇章。Transformer架构作为神经网络学习中最重要的架构,成为后来席卷全球的一…...
PHP反序列化_3-漏洞利用
1. 信息收集与分析 确定目标应用程序:首先需要找到存在反序列化漏洞的 PHP 应用程序。这可能是一个网站、Web 服务、内部系统等。可以通过网络扫描、漏洞报告、安全评估等方式来发现潜在的目标。分析应用程序逻辑:了解目标应用程序的功能和业务逻辑&…...
2.初始sui move
vscode安装move插件 查看sui 客户端版本号 sui client --version 创建新项目 sui move new <项目名> sui move new hello_world 项目目录结构: hello_world ├── Move.toml ├── sources │ └── hello_world.move └── tests└── hello_world…...
数据结构--排序算法
目录 一.排序相关概念二.常见排序算法1.堆排序2.插入排序3.希尔排序4.选择排序5.冒泡排序6.快速排序1.快速排序--递归(未优化)2.快速排序--递归(优化)3.快速排序--非递归 7.归并排序1.归并排序--递归2.归并排序--非递归 一.排序相关概念 排序:使一串记录按照某个关…...
day60 图论章节刷题Part10(Floyd 算法、A * 算法)
Floyd 算法 思路:本题是多源最短路问题,使用Floyd算法求解。Floyd 算法对边的权值正负没有要求,核心思想是动态规划。 我们使用动规五部曲来理解和应用Floyd算法: 1、确定dp数组(dp table)以及下标的含义…...
UI架构解说
UI(用户界面,User Interface) 是指用户与软件或硬件系统进行交互的界面。 它是用户与系统之间的桥梁,允许用户通过视觉元素、交互组件和反馈机制来操作和控制应用程序或设备。 UI 设计的目标是提供直观、易用和愉悦的用户体验&a…...
车机安装第三方软件实现打开软件全屏教程
简介 越来越多的车友实现安装第三方软件了,但是有的车机的状态栏或者导航栏会遮挡安装的第三方软件。这样的话,第三方软件就会显示不全,体验感非常不好。所以,下面我教一下大家如何使用东君应用管家来实现打开第三方软件全屏。 全…...
八大技术架构与演进2
垂直分库架构 当数据量不断增大,大量的数据都存储在一个库中就已经不太够用了,这时候就可以讲不同的数据分类别存储Mycat也支持在大表拆分为小标的情况下进行访问 但是这种做法其实是增加了数据库的运维难度,这种其实也就叫做分布式数据库&…...
ReactPress技术揭秘
ReactPress Github项目地址:https://github.com/fecommunity/reactpress 欢迎Star。 一、引言 ReactPress是一个基于React构建的开源发布平台,它不仅可以帮助用户在支持React和MySQL数据库的服务器上快速搭建自己的博客或网站,还能作为一个…...
Javascript高级—如何实现一个类型判断函数?
实现一个类型判断函数 判断null判断基础类型使用Object.prototype.toString.call(target)来判断引用类型 [!NOTE] 注意: 一定是使用call来调用,不然是判断的Object.prototype的类型 之所以要先判断是否为基本类型是因为:虽然Object.prototyp…...
asitop macOS 终端 性能监控
macOS 终端 性能监控 安装 pip python3 -m ensurepip# pip3 --version pip 21.2.4安装 asitop pip3 install asitop运行 sudo asitop参考 asitopgithub asitopHow to Install pip on Mac...
Unity学习笔记(4):人物和基本组件
文章目录 前言开发环境新增角色添加组件RigidBody 2D全局项目设置Edit 给地图添加碰撞体 总结 前言 今天不加班,有空闲时间。争取一天学一课,养成习惯 开发环境 Unity 6windows 11vs studio 2022Unity2022.2 最新教程《勇士传说》入门到进阶ÿ…...
【深圳大学/大学物理实验2】弗兰克-赫兹实验预习题参考
一、单选题 共 13 小题 共 78 分 1. (6分)第一栅极电压UG1、第二栅极电压UG2和减速电压UP的作用分别是( ) 学生答案:C √ A. 使电子加速,消除阴极电子散射,使电子减速 B. 产生并加速电子,使电子加速&…...
vue2.7.14 + vant + vue cli脚手架转vite启动运行问题记录
文章目录 前言方案一(借用插件转换)启动命令,转换方案一转换遇到的问题 方案二(手动调整)方案两者对比小结 前言 vue cli 脚手架转成vite启动 简单说说这个项目的一些底层基本结构哈,以及写这篇博客的目的…...
Java基础-内部类与异常处理
(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 一、Java 内部类 什么是内部类? 使用内部类的优点 访问局部变量的限制 内部类和继承 内部…...
vue2或vue3的name属性有什么作用?
在 Vue.js(无论是 Vue 2 还是 Vue 3)中,组件的 name 属性有几个重要的用途。虽然它不是必须的,但在某些情况下非常有用。以下是 name 属性的一些主要作用: 1. 调试工具 Vue Devtools 和其他调试工具会使用组件的 nam…...
【FOC进阶日记】实战篇③ 电机关键数据采集方法
作者 | 量子君 微信公众号 | 极客工作室 【FOC进阶日记】专栏目录 第一章 实战篇① FOC与SVPWM详解 第二章 实战篇② 自发电控制算法 第三章 实战篇③ 电机关键数据采集方法 文章目录 前言一、M法(从路程入手):二、T法(从时间入手)三、M/T测速法:四、实现过程:总结前言…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...
Yii2项目自动向GitLab上报Bug
Yii2 项目自动上报Bug 原理 yii2在程序报错时, 会执行指定action, 通过重写ErrorAction, 实现Bug自动提交至GitLab的issue 步骤 配置SiteController中的actions方法 public function actions(){return [error > [class > app\helpers\web\ErrorAction,],];}重写Error…...
从0开始学习R语言--Day17--Cox回归
Cox回归 在用医疗数据作分析时,最常见的是去预测某类病的患者的死亡率或预测他们的结局。但是我们得到的病人数据,往往会有很多的协变量,即使我们通过计算来减少指标对结果的影响,我们的数据中依然会有很多的协变量,且…...
