O2O优惠券预测

news2024/11/28 17:47:20

O2O优惠券预测

  • 赛题理解
    • 赛题类型
    • 解题思路
  • 数据探索
    • 理论知识
      • 数据可视化分布
  • 特征工程
    • 赛题特征工程思路
  • 模型训练与验证

赛题理解

赛题类型

本赛题要求提交的结果是预测15 天内用券的概率,这是一个连续值,但是因为用券只有用与不用两种情况,而且评测指标是典型的二分类评测指标AUC,所以这是一个二分类问题

解题思路

在这里插入图片描述
总结来说,解题流程是数据分析 -> 特征工程 -> 训练与验证 -> 模型融合。

数据探索

在这里插入图片描述

理论知识

数据可视化分布

1、箱线图

箱线图(Box-Plot) 是用于显示一组数据分散情况的统计图,因其形状如箱子而得名。

箱线图的绘制过程:首先,找出一组数据的上下边缘、中位数及两个四分位数;然后,连接这两个四分位数,画出箱体;最后,将上下边缘分别与箱体连接,这样中位点就位于箱体中间。

箱线图可以观察数据分布的特征,也可以用于对多组数据分布特征进行比较。

2、直方图和Q-Q图

直方图(Histogram)是用一系列高度不等的纵向条纹或线段来表示数据的分布情况,是一种统计报告图。一般横轴是数据类型,纵轴是统计特征(比如频数)。

Q-Q图( Quantile-Quantile Plot)以散点图的方式,通过绘制两个概率分布对应的分位数对不同分布进行比较。Q-Q图可以用于检验数据是否为正态分布。在Q-Q图上,将数据的分位数作为x轴坐标值,同时将计算出的假定为正态分布时的数据分位数作为y轴坐标值。当实际数据近似为正态分布时,Q-Q图的点会落在一条直线上。

3、分布对比

我们可以通过绘制不同特征项的核密度(Kdeplot)来对比数据分布。由于核密度估计是通过核函数对数据点进行拟合,因此得到的数据分布图比直方图更加平滑。

4、线性关系

使用regplot()函数可以对两个特征项之间的线性回归关系进行可视化展示。

特征工程

赛题特征工程思路

(1)首先可以通过offline训练数据直接提取训练集特征并进行标记(结合“Date_recieved”和“Date”即可判断该优惠券是否使用),通过测试数据提取测试集特征。

(2)在训练集中可以直接提取的特征主要与优惠券相关,包括折扣率、优惠券类型(是否为满减)、满额、减额、距离等。

(3)进一步可以提取统计特征。包括用户统计特征,如用户领取优惠券次数(总数,核销,未核销)、用户消费次数(总数,用券,未用券)、折扣率(最大,最小,平均)等;优惠券统计特征,如核销率、领取次数、消费次数、使用距离(最大,最小,平均)等;商家统计特征,如优惠券被领取次数及使用概率(总数,核销,未核销)、使用距离(最大,最小,平均)、被使用优惠券的折扣率(最大,最小,平均)等;关联统计特征,如用户领取商家的优惠券次数、用户领取商家优惠券后的不核销次数、用户领取商家优惠券后的核销次数、用户领取商家优惠券后的核销率等。

(4)评估穿越。在机器学习中,我们之所以要将样本划分为训练集和测试集,主要就是希望在测试集上做评估,而不是在训练集上做评估,防止发生过拟合,进而使评估结果更加准确。评估穿越,指的就是由于样本划分不当,使测试集中的信息“穿越”到了训练集中, 导致评估结果更偏爱过拟合的模型,致使结果不够准确。为了防止评估穿越,本赛题在滑窗的过程中,要注意预测区间和特征区间一定不能重叠,直接使用全局数据的统计量更是不可取

(5)滑窗。滑窗(滑动窗口)就是指定单位长度的时间序列,然后计算窗口区间的统计指标。这一过程也相当于让一个指定长度的滑块在刻度尺上面滑动,每滑动一个单位即可反馈滑块内的数据。采用滑窗的方法可以得到多份训练数据集,特征的窗口区间越小,得到的训练数据集的数量越多。

在这里插入图片描述
对特征区间的数据集可以提取各种统计特征,对预测区间的数据集可以提取优惠券等数据本身的特征,同时对是否用券进行标记。

(6)穿越特征。就是在训练集上提取的特征,或者外部取得的在目标时间段内的数据。穿越特征在实际应用中意义不大,因为用的是“未来”的数据,在实际过程中是得不到的。但是在比赛过程中,经常对分数有很大提高。以本赛题为例,在提供的预测集中包含了同一个用户在整个7月的优惠券领取情况,这实际上是一种穿越。比如,存在这种情况:某一个用户在7月10日领取了某优惠券,然后在7月12日和7月15日又领取了相同的优惠券,那么7月10日领取的优惠券被核销的可能性就很大了。在加入这部分特征后,AUC可以提升约10个百分点。

说明:不同的比赛对穿越特征的要求不一样,有的比赛绝对不允许使用穿越特征,有的比赛允许。在参加比赛时,如果发现穿越特征,则一定要与主办方确认是否可以使用!

(7)特征方案。正如前面章节所讲,机器学习方案是一个不断迭代的过程,作为机器学习关键环节的特征工程,更是需要不断地迭代、优化。上面我们已
经分析了要提取的特征,在此基础上,按照由浅入深、由简单到复杂的顺序提取了三个版本的特征。

特征V1:直接在训练集、测试集上提取的特征,也就是将给定数据项进行数值化的结果。
特征V2:在特征V1的基础上,增加了滑窗统计特征,包括用户统计特征、优惠券统计特征、商家统计特征、关联统计特征等。

模型训练与验证

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

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

相关文章

IDEA中为Maven配置使用vpn工具连接的网络

IDEA中为Maven配置使用vpn工具连接的网络 在电脑上使用VPN工具连接上特定网络后,发现idea中使用maven工具还是无法访问相关的网络,这时需要在idea中进行相关配置,开启ipv4代理 -Djava.net.preferIPv4Stacktrue maven配置 这时,…

JavaScript基础知识13——运算符:一元运算符,二元运算符

哈喽,大家好,我是雷工。 JavaScript的运算符可以根据所需表达式的个数,分为一元运算符、二元运算符、三元运算符。 一、一元运算符 1、一元运算符:只需要一个表达式就可以运算的运算符。 示例:正负号 一元运算符有两…

Golang 协程 与 Java 线程池的联系

Golang 协程 与 Java 线程池的联系 引言Java 线程池缺陷Golang 协程实现思路0.x 版本1.0 版本1.1 版本Goroutine 抢占式执行基于信号的抢占式调度 队列轮转系统调用工作量窃取GOMAXPROCS设置对性能的影响 小结 引言 如何理解Golang的协程,我觉得可以用一句话概括: …

【大数据】Hive SQL语言(学习笔记)

一、DDL数据定义语言 1、建库 1)数据库结构 默认的数据库叫做default,存储于HDFS的:/user/hive/warehouse 用户自己创建的数据库存储位置:/user/hive/warehouse/database_name.db 2)创建数据库 create (database|…

c#设计模式-行为型模式 之 备忘录模式

🚀简介 备忘录模式(Memento Pattern)是一种行为型设计模式,它保存一个对象的某个状态,以便在适当的时候恢复对象。所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象…

Android 14 正式发布,已经在 AOSP 中上线

本心、输入输出、结果 文章目录 Android 14 正式发布,已经在 AOSP 中上线前言总结主要更新内容机型支持优化性能的数据体现字体放大、多媒体支持加强Android 14 增加了对 10 位高动态范围 (HDR) 图像的支持提供了新的图形和尺寸管理用户体验 与隐私安全弘扬爱国精神Android 14…

Vue3 + Nodejs 实战 ,文件上传项目--实现拖拽上传

目录 1.拖拽上传的剖析 input的file默认拖动 让其他的盒子成为拖拽对象 2.处理文件的上传 处理数据 上传文件的函数 兼顾点击事件 渲染已处理过的文件 测试效果 3.总结 博客主页:専心_前端,javascript,mysql-CSDN博客 系列专栏:vue3nodejs 实战-…

【JVM】JVM的内存区域划分

JVM的内存区域划分 堆Java虚拟机栈程序计数器方法区运行时常量池 堆 程序中创建的所有对象都保存在堆中 Java虚拟机栈 Java虚拟机栈的生命周期和线程相同,描述的是Java方法执行的内存模型,每个方法在执行的时候都会同时创建一个栈帧用于存储局部变量表,操作栈,动态链接,方法…

C语言 —— 结构体

生活中有许多复杂对象是无法用基本数据类型来描述的, 于是为了描述复杂对象, C语言就会使用到结构体. 1. 结构体的声明与定义 1.1 结构的基础知识 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。 1.2 结构的声明与定义 struct tag {…

vue3后台管理框架之基础配置

配置vite.config.js import { defineConfig } from viteimport vue from @vitejs/plugin-vueexport default defineConfig(({ command, mode }) => {//const env = loadEnv(mode, process.cwd(), ) //获取环境变量return {// 打包devbase: ./,// 开发环境server: {port: 50…

Spring framework Day11:策略模式中注入所有实现类

前言 什么是策略模式? 策略模式(Strategy Pattern)是一种面向对象设计模式,它定义了算法族(一组相似的算法),并且将每个算法都封装起来,使得它们可以互相替换。策略模式让算法的变…

LeetCode【17】电话号码的字母组合

题目: 思路: 参考:https://blog.csdn.net/weixin_46429290/article/details/121888154 和上一个题《子集》的思路一样,先画出树结构,看树的深度(遍历层级),树的宽度(横向…

压力山大题

找不到工作的面试者总结 提示:写文章的时候,我还在找工作!!! 文章目录 找不到工作的面试者总结前言一、JAVA面死题1. OOP是什么2. 重载与重写的区别3. java基本类型4. String、StringBuffer、StringBuilder的区别 二、…

2022最新版-李宏毅机器学习深度学习课程-P23 为什么用了验证集结果还是过拟合

用了验证集还有可能会过拟合 这个片段可以从理论上证明这一点 以上整个挑选模型的过程也可以想象为一种训练。 把三个模型导出的最小损失公式看成一个集合,现在要做的就是在这个集合中找到某个h(此处可以视为训练),使得在验证集…

边写代码边学习之Pycaret

PyCaret 简介 PyCaret 是一个用于简化 Python 机器学习工作流程的开源库。它提供了一个高级、低代码的接口,用于自动化机器学习流程的各个方面,使数据科学家和分析师更容易构建和部署机器学习模型。PyCaret 的一些关键特点和用途包括: 1. 自…

第六章 查找

第六章 查找 基本概念静态查找表顺序表上的查找有序表上的查找索引顺序表上的查找 二叉排序树散列表常见散列法散列表的实现 小试牛刀 基本概念 查找表是由同一类型的数据元素构成的集合,它是一种以查找为“核心”,同时包括其他运算的非常灵活的数据结构…

Android Studio SDK manager加载packages不全

打开Android Studio里的SDK manager,发现除了已安装的,其他的都不显示。 解决方法: 设置代理: 方便复制> http://mirrors.neusoft.edu.cn/ 重启Android Studio

小主机折腾记17

8月9月10月基本在出差,流水账如下 1.由于出差,租了个公寓,所以买了个r2s,卖家已经安装部署好openwrt,风扇以及无线网卡 着重研究了风扇的脚本以及无线网卡的设置 风扇可以完美设置,但是无线网卡效果差强人意…

k8s-11 网络策略

添加网络策略 限制pod流量 控制的对象是具有appmyapp-v1标签的pod 此时访问svc是不通的 给测试pod添加指定标签后,可以访问 重启一下 限制namespace流量 给namespace添加指定标签 同时限制namespace和pod 给test命令空间中的pod添加指定标签后才能访问 限制集群…

k8s-13 存储之secret

Secret 对象类型用来保存敏感信息,例如密码、OAuth 令牌和 ssh key。 敏感信息放在 secret 中比放在 Pod 的定义或者容器镜像中来说更加安全和灵活 。 Pod 可以用两种方式使用 secret:作为 volume 中的文件被挂载到 pod 中的一个或者多个容器里 当 kubelet 为 pod 拉…