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测速法:四、实现过程:总结前言…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
