O2O优惠券预测

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.rhkb.cn/news/161105.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMware 配置记录

VMware 配置笔记 CentOS 7.9 镜像下载 官网太慢,建议在阿里云镜像站去CentOS配置页找标准版下载。 选标准版即可,各版本区别: DVD:标准版,包含常用软件,体积为 4.4 G;Everything&#xff1a…

接口加密解决方案:Python的各种加密实现!

01、前言 在现代软件开发中,接口测试已经成为了不可或缺的一部分。随着互联网的普及,越来越多的应用程序都采用了接口作为数据传输的方式。接口测试的目的是确保接口的正确性、稳定性和安全性,从而保障系统的正常运行。 在接口测试中&…

JavaFx学习问题2--音频、视频播放失败情况

文章目录 一、路径注意事项:① 用相对路径的时候别忘了前面的斜杠② uri问题 二、播放不了的问题① 获取的媒体文件路径本身就是不对的② 必须是uri③ 特殊情况 额外收获: 一、路径注意事项: 完整代码如下: import javafx.application.Application; im…

分布式链路追踪如何跨线程

背景 我们希望实现全链路信息,但是代码中一般都会异步的线程处理。 解决思路 我们可以对以前的 Runable 和 Callable 进行增强。 可以使用 ali 已经存在的实现方式。 TransmittableThreadLocal (TTL) 解决异步执行时上下文传递的问题 核心的实现思路如下&#…

时间复杂度为 O(n^2) 的排序算法

大家好,我是 方圆。对于小规模数据,我们可以选用时间复杂度为 O(n2) 的排序算法,因为时间复杂度并不代表实际代码的执行时间,而且它也省去了低阶、系数和常数,仅代表的增长趋势,所以在小规模数据情况下&…

PyTorch 深度学习之循环神经网络(基础篇)Basic RNN(十一)

0.Revision: DNN dense 重义层 全连接 RNN处理带有序列的数据 1. What is RNNs? linear layer 1.1 What is RNN? tanh (-1, 1) 1.2 RNN Cell in PyTorch 1.3 How to use RNNCell *先把维度搞清楚 多了一个序列的维度 2. How to use RNN 2.1 How to use RNN - numLayers…

基于变电站自动化系统中的安全措施分析及应用

摘要:阐述变电运行中的问题,电气自动化系统与安全运行措施,包括自动控制设备的投入,电气自动 化与计算机技术相、设备数据的采集与处理、自动化系统的升级、人工智能技术的应用。 关键词:自动控制;数据采…

铜死亡+多组机器学习+WGCNA+分型

今天给同学们分享一篇铜死亡多组机器学习WGCNA分型的生信文章“Machine learning screening for Parkinsons disease-related cuproptosis-related typing development and validation and exploration of personalized drugs for cuproptosis genes”,这篇文章于20…

zabbix内置宏、自动发现与注册

一、zabbix内置宏 1、概念: 在Zabbix中,内置宏是一种特殊的变量,通常用在 Trigger 名称和表达式中,引用有关监控对象的信息。 2、种类: {HOST.NAME} 主机名 {HOST.IP} 主机 IP 地址 {TRIGGER.DESCRIPTION} 触…

Leetcode刷题详解——将x减到0的最小操作数

1. 题目链接:1658. 将 x 减到 0 的最小操作数 2. 题目描述: 给你一个整数数组 nums 和一个整数 x 。每一次操作时,你应当移除数组 nums 最左边或最右边的元素,然后从 x 中减去该元素的值。请注意,需要 修改 数组以供接下来的操作…

017 基于Spring Boot的食堂管理系统

基于Spring Boot的食堂管理系统 项目介绍 本项目是基于Java的管理系统。采用前后端分离开发。前端基于bootstrap框架实现,后端使用Java语言开发,技术栈包括但不限于SpringBoot、MyBatis、MySQL、Maven等,开发工具为IDEA。 功能介绍 主页 …

TX Text Control .NET Server for ASP.NET 32.0 Crack

TX Text Control .NET Server for ASP.NET 是VISUAL STUDIO 2022、ASP.NET CORE .NET 6 和 .NET 7 支持,将文档处理集成到 Web 应用程序中,为您的 ASP.NET Core、ASP.NET 和 Angular 应用程序添加强大的文档处理功能。 客户端用户界面 文档编辑器 将功能…

C语言,指针的一些运算

若创建一个数组:int arr[10] 0; 用指针变量来储存数组首元素的地址:int* p arr,这里arr是数组名,表示首元素地址。 若p p 1或者p之后p本来指向数组首元素地址,就变成了指向第二个元素的地址,p n即指向第n 1个地…

C++对象模型(12)-- 构造函数语义学:构造函数

1、默认构造函数生成规则 编译器不一定会为类生成默认构造函数,但在下列情况下,编译器会生成默认构造函数。 (1)该类没有任何构造函数,但包含一个类类型的成员变量,且成员变量所属的类有默认构造函数。 …

idea使用debug无法启动,使用run可以启动

1、将调试断点清除 使用快捷键ctrl shift F8,将勾选的选项去除即可 2、Error running SampleApplication: Command line is too long. Shorten command line for SampleApplication or also for Spring Boot default configuration,报这种错误&#x…

uni-app集成使用SQLite

一、打开uni-app中SQLite 二、封装sqlite.js module.exports {dbName: chat, // 数据库名称dbPath: _doc/chat.db, // 数据库地址,推荐以下划线为开头 _doc/xxx.db/*** Description: 创建数据库 或 有该数据库就打开* author: ZXL* createTime: 2023-10-12 09:23:10* Copyr…

SQ4840EY-T1_GE3具有低导通电阻和低电压降 汽车级 N沟道功率MOSFET

SQ4840EY-T1_GE3是一款高性能的车规级电子IC芯片,它具有多种功能和特点,适用于各种电子设备和应用领域。采用了先进的工艺技术,具有高性能和稳定的特点。它采用了先进的封装技术,能够在广泛的温度范围内正常工作,适应各…

【Java基础面试十四】、 封装的目的是什么,为什么要有封装?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官: 封装的目的是什么&…

docker搭建nginx+php-fpm

docker run --name nginx -p 8898:80 -d nginx:1.20.2-alpine# 将容器nginx.conf文件复制到宿主机 docker cp nginx:/etc/nginx/nginx.conf /usr/local/nginx/conf/nginx.conf# 将容器conf.d文件夹下内容复制到宿主机 docker cp nginx:/etc/nginx/conf.d /usr/local/nginx/conf…

【Python-Django】基于TF-IDF算法的医疗推荐系统复现过程

复现步骤 step1: 修改原templates路径,删除,将setting.py中的路径置空 step2: 注册app python manage.py startapp [app名称]在app目录下创建static和templates目录 step3: 将项目中的资源文化进行拷贝 step4&#…