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

CatBoost中目标变量统计

CatBoost中的目标变量统计(Target Statistics)是其处理分类特征(Categorical Features)的核心技术之一。目标变量统计是一种特殊的编码方法,通过利用目标值信息生成数值特征,从而替代传统的独热编码或其他处理方法。这种方法对于具有高基数分类特征(如ID或字符串)特别高效。


目标变量统计的原理

目标变量统计编码的关键思想是用分类特征的历史统计信息来替代原始的类别值。例如,对于分类特征 A A A,其编码可以表示为该特征下目标变量 y y y 的均值、加权均值或其他统计量。

在CatBoost中,目标变量统计的计算方式遵循以下原则:

  1. 避免数据泄漏

    • 目标变量的统计值只能使用当前样本之前的数据计算,确保训练过程中不会泄漏测试数据的目标值。
    • 这通过Ordered Target Statistics来实现。
  2. 动态计算方式

    • 每一行的目标统计值根据之前数据的目标值动态计算,而不是直接使用整个数据集的统计值。
  3. 平滑处理

    • 为避免分类特征类别样本量较小时统计值不稳定,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)=Ni1+αj=1i1yj+αμ

其中:

  • A i A_i Ai 是样本 i i i 的分类特征值;
  • y j y_j yj 是样本 j j j 的目标值;
  • μ \mu μ 是目标变量的全局均值;
  • N i − 1 N_{i-1} Ni1 是类别 A i A_i Ai 在样本 1 1 1 i − 1 i-1 i1 中的出现次数;
  • α \alpha α 是平滑参数(控制全局均值对结果的影响)。
2. 分布处理

目标统计值通过逐行处理的方式计算,确保样本 i i i 的值不会用到样本 i i i 本身的目标值,从而避免信息泄漏。

3. 分组计算

对于训练数据集,CatBoost在内部根据数据顺序分组,先计算每组的目标统计,再将这些统计结果应用于模型训练。


Ordered Target Statistics的独特性

CatBoost的“Ordered Target Statistics”相较于其他目标编码方法的主要不同在于:

  1. 动态顺序计算
    • 按照训练数据的时间顺序逐步更新,确保每个样本的目标统计值基于其之前样本计算。
  2. 无信息泄漏
    • 避免了传统目标编码中使用目标变量的整体统计值而导致的未来信息泄漏问题。

具体案例

假设有一个数据集如下:

样本ID分类特征(City)目标变量(点击率)
1New York1
2Los Angeles0
3New York1
4Los Angeles1
5New York0

目标变量统计编码的过程如下:

  1. 第一行:
    • 对于 C i t y = New York City = \text{New York} City=New York,没有历史数据,目标统计值使用初始全局均值 μ \mu μ
  2. 第二行:
    • 对于 C i t y = Los Angeles City = \text{Los Angeles} City=Los Angeles,同样使用全局均值。
  3. 第三行:
    • 对于 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
  4. 以此类推。

目标变量统计的优点

  1. 对高基数分类特征有效

    • 比如用户ID、商品ID,这些特征类别非常多,传统方法(如独热编码)会导致高维稀疏矩阵,而目标统计可以生成紧凑的数值特征。
  2. 避免信息泄漏

    • Ordered Statistics的顺序计算确保每个样本的特征值与目标变量是独立的。
  3. 对模型性能提升显著

    • 目标变量统计利用了目标变量的潜在分布信息,可以提升模型预测精度。

代码实现示例

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 项目目录结构&#xff1a; hello_world ├── Move.toml ├── sources │ └── hello_world.move └── tests└── hello_world…...

数据结构--排序算法

目录 一.排序相关概念二.常见排序算法1.堆排序2.插入排序3.希尔排序4.选择排序5.冒泡排序6.快速排序1.快速排序--递归(未优化)2.快速排序--递归(优化)3.快速排序--非递归 7.归并排序1.归并排序--递归2.归并排序--非递归 一.排序相关概念 排序&#xff1a;使一串记录按照某个关…...

day60 图论章节刷题Part10(Floyd 算法、A * 算法)

Floyd 算法 思路&#xff1a;本题是多源最短路问题&#xff0c;使用Floyd算法求解。Floyd 算法对边的权值正负没有要求&#xff0c;核心思想是动态规划。 我们使用动规五部曲来理解和应用Floyd算法&#xff1a; 1、确定dp数组&#xff08;dp table&#xff09;以及下标的含义…...

UI架构解说

UI&#xff08;用户界面&#xff0c;User Interface&#xff09; 是指用户与软件或硬件系统进行交互的界面。 它是用户与系统之间的桥梁&#xff0c;允许用户通过视觉元素、交互组件和反馈机制来操作和控制应用程序或设备。 UI 设计的目标是提供直观、易用和愉悦的用户体验&a…...

车机安装第三方软件实现打开软件全屏教程

简介 越来越多的车友实现安装第三方软件了&#xff0c;但是有的车机的状态栏或者导航栏会遮挡安装的第三方软件。这样的话&#xff0c;第三方软件就会显示不全&#xff0c;体验感非常不好。所以&#xff0c;下面我教一下大家如何使用东君应用管家来实现打开第三方软件全屏。 全…...

八大技术架构与演进2

垂直分库架构 当数据量不断增大&#xff0c;大量的数据都存储在一个库中就已经不太够用了&#xff0c;这时候就可以讲不同的数据分类别存储Mycat也支持在大表拆分为小标的情况下进行访问 但是这种做法其实是增加了数据库的运维难度&#xff0c;这种其实也就叫做分布式数据库&…...

ReactPress技术揭秘

ReactPress Github项目地址&#xff1a;https://github.com/fecommunity/reactpress 欢迎Star。 一、引言 ReactPress是一个基于React构建的开源发布平台&#xff0c;它不仅可以帮助用户在支持React和MySQL数据库的服务器上快速搭建自己的博客或网站&#xff0c;还能作为一个…...

Javascript高级—如何实现一个类型判断函数?

实现一个类型判断函数 判断null判断基础类型使用Object.prototype.toString.call(target)来判断引用类型 [!NOTE] 注意&#xff1a; 一定是使用call来调用&#xff0c;不然是判断的Object.prototype的类型 之所以要先判断是否为基本类型是因为&#xff1a;虽然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 给地图添加碰撞体 总结 前言 今天不加班&#xff0c;有空闲时间。争取一天学一课&#xff0c;养成习惯 开发环境 Unity 6windows 11vs studio 2022Unity2022.2 最新教程《勇士传说》入门到进阶&#xff…...

【深圳大学/大学物理实验2】弗兰克-赫兹实验预习题参考

一、单选题 共 13 小题 共 78 分 1. (6分)第一栅极电压UG1、第二栅极电压UG2和减速电压UP的作用分别是&#xff08; &#xff09; 学生答案&#xff1a;C √ A. 使电子加速&#xff0c;消除阴极电子散射&#xff0c;使电子减速 B. 产生并加速电子&#xff0c;使电子加速&…...

vue2.7.14 + vant + vue cli脚手架转vite启动运行问题记录

文章目录 前言方案一&#xff08;借用插件转换&#xff09;启动命令&#xff0c;转换方案一转换遇到的问题 方案二&#xff08;手动调整&#xff09;方案两者对比小结 前言 vue cli 脚手架转成vite启动 简单说说这个项目的一些底层基本结构哈&#xff0c;以及写这篇博客的目的…...

Java基础-内部类与异常处理

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 一、Java 内部类 什么是内部类&#xff1f; 使用内部类的优点 访问局部变量的限制 内部类和继承 内部…...

vue2或vue3的name属性有什么作用?

在 Vue.js&#xff08;无论是 Vue 2 还是 Vue 3&#xff09;中&#xff0c;组件的 name 属性有几个重要的用途。虽然它不是必须的&#xff0c;但在某些情况下非常有用。以下是 name 属性的一些主要作用&#xff1a; 1. 调试工具 Vue Devtools 和其他调试工具会使用组件的 nam…...

【FOC进阶日记】实战篇③ 电机关键数据采集方法

作者 | 量子君 微信公众号 | 极客工作室 【FOC进阶日记】专栏目录 第一章 实战篇① FOC与SVPWM详解 第二章 实战篇② 自发电控制算法 第三章 实战篇③ 电机关键数据采集方法 文章目录 前言一、M法(从路程入手):二、T法(从时间入手)三、M/T测速法:四、实现过程:总结前言…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...