天猫用户重复购买预测——数据探索

  • 1. 理论
    • 1.1 缺失数据处理
    • 1.2 不均衡样本
    • 1.2.1 随机欠采样
    • 1.2.2 随机过采样
    • 1.2.3 基于聚类的过采样方法
    • 1.2.4 SMOTE算法
    • 1.2.5 基于数据清洗的SMOTE
    • 1.3 数据分布
  • 2. 实战数据探索
    • 2.1 环境Google colab
    • 2.2 导入工具包
    • 2.3 读取数据
    • 2.4 数据集样例查看
    • 2.5 查看数据类型和数据大小
    • 2.6 查看缺失值
    • 2.7 观察数据分布
      • 2.7.1 查看整体数据统计
      • 2.7.2 查看正负样本的分布,并可视化
    • 2.8 探查影响复购的各种影响因素
      • 2.8.1 店铺分析
      • 2.8.2 用户分析
      • 2.8.3 用户性别分析
      • 2.8.4 用户年龄分析

1. 理论

1.1 缺失数据处理

1.2 不均衡样本

1.2.1 随机欠采样

随机欠采样的优点是在平衡数据的同时减小了数据量,加速了训练;
缺点是数据减少会影响模型的特征学习能力和泛化能力。

1.2.2 随机过采样

随机过采样的优点是相对于欠采样,其没有导致数据信息的损失;
缺点是对较少类别的复制增加了过拟合的可能性。

一般而言,采用以上简单方法通常可以解决绝大多数样本分布不均匀的问题。

1.2.3 基于聚类的过采样方法

1.2.4 SMOTE算法

1.2.5 基于数据清洗的SMOTE

1.3 数据分布

  • 伯努利分布

  • 二项分布

  • 泊松分布

  • 正态分布

  • 指数分布

2. 实战数据探索

2.1 环境Google colab

from google.colab import drive
drive.mount('/content/drive')
%cd /content/drive/My Drive
!ls

2.2 导入工具包

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import statsimport warnings
warnings.filterwarnings("ignore")%matplotlib inline

2.3 读取数据

data_path = '比赛/天猫复购预测之挑战Baseline/datasets/' # 数据路径
user_log = pd.read_csv(data_path + 'data_format1/user_log_format1.csv')
user_info = pd.read_csv(data_path + 'data_format1/user_info_format1.csv')
train_data = pd.read_csv(data_path + 'data_format1/train_format1.csv')
test_data = pd.read_csv(data_path + 'data_format1/test_format1.csv')
sample_submission = pd.read_csv(data_path + 'sample_submission.csv')

2.4 数据集样例查看

2.5 查看数据类型和数据大小

2.6 查看缺失值

2.7 观察数据分布

2.7.1 查看整体数据统计

user_info.describe()

user_log.describe()

2.7.2 查看正负样本的分布,并可视化

label_gp = train_data.groupby('label')['user_id'].count()
print('正负样本的数量: \n',label_gp)_,axe = plt.subplot(1,2,figsize=(12,6))
train_data.label.value_counts().plot(kind='pie',autopct='%1.1f%%',shadow = True,explode = [0,0.1],ax= axe[0])
sns.countplot('label',data=train_data,ax=axe[1],)
正负样本的数量: label
0    244912
1     15952
Name: user_id, dtype: int64


从图中可以看出,样本的分布不均衡,需要采取一定的措施处理样本,如采用过采样技术,训练多个模型后求平均或者调整模型的损失函数样本比例的权重等。

2.8 探查影响复购的各种影响因素

2.8.1 店铺分析

  • 分析不同店铺与复购的关系
print('选取top5 店铺\n店铺\t购买次数')
print(train_data.merchant_id.value_counts().head(5))
train_data_merchant = train_data.copy()
train_data_merchant['TOP5'] = train_data_merchant['merchant_id'].map(lambda x: 1 if x in [4044,3828,4173,1102,4976] else 0)
train_data_merchant = train_data_merchant[train_data_merchant['TOP5'] == 1]
plt.figure(figsize=(8,6))
plt.title('Merchant VS Label')
sax = sns.countplot('merchant_id',hue='label',data=train_data_merchant)
选取top5 店铺
店铺  购买次数
4044    3379
3828    3254
4173    2542
1102    2483
4976    1925
Name: merchant_id, dtype: int64

  • 查看店铺的复购分布
merchant_repeat_buy = [rate for rate in train_data.groupby(['merchant_id'])['label'].mean() if rate <= 1 and rate > 0]
plt.figure(figsize=(8,4))ax = plt.subplot(1,2,1)
sns.distplot(merchant_repeat_buy, fit = stats.norm)
ax = plt.subplot(1,2,2)
res = stats.probplot(merchant_repeat_buy,plot=plt)


可以看出,不同店铺有不同的复购概率,约为0~0.3。

2.8.2 用户分析

user_repeat_buy = [rate for rate in train_data.groupby(['user_id'])['label'].mean()if rate <= 1 and rate > 0
]
plt.figure(figsize=(12,6))ax = plt.subplot(1,2,1)
sns.distplot(user_repeat_buy, fit = stats.norm)
ax = plt.subplot(1,2,2)
res = stats.probplot(user_repeat_buy,plot=plt)


可以看出,近6个月用户的复购概率很小,基本以买一次为主。

2.8.3 用户性别分析

  • 分析用户性别与复购的关系,并可视化
train_data_user_info = train_data.merge(user_info,on=['user_id'],how='left')plt.figure(figsize=(8,8))
plt.title('Gender VS Label')
ax = sns.countplot('gender',hue = 'label',data = train_data_user_info)
for p in ax.patches:height = p.get_height()

  • 查看用户性别复购的分布
repeat_buy = [rate for rate in train_data_user_info.groupby(['gender'])['label'].mean()]
plt.figure(figsize = (8,4))ax = plt.subplot(1,2,1)
sns.distplot(repeat_buy,fit=stats.norm)
ax = plt.subplot(1,2,2)
res = stats.probplot(repeat_buy,plot = plt)


可以看出,男女复购概率不同。

2.8.4 用户年龄分析

  • 分析用户年龄与复购的关系
plt.figure(figsize = (8,8))
plt.title('Age VS Label')
ax = sns.countplot('age_range',hue = 'label',data=train_data_user_info)

  • 查看用户年龄复购分布
repeat_buy = [rate for rate in train_data_user_info.groupby(['age_range'])['label'].mean()]plt.figure(figsize = (8,4))
ax = plt.subplot(1,2,1)
sns.distplot(repeat_buy,fit=stats.norm)
ax = plt.subplot(1,2,2)
res = stats.probplot(repeat_buy,plot=plt)


不同年龄段用户复购概率不同。

天猫用户重复购买预测——数据探索相关推荐

  1. 天猫用户重复购买预测赛题——赛题理解 + 数据探索

    天猫用户重复购买预测赛题--赛题理解 + 数据探索 理论知识 1. 赛题信息 2. 评估指标 AUC 3. 查看数据样例 4. 缺失值查看 5. 查看数据分布 6. 探究影响复购的各种因素 理论知识 ...

  2. 天猫用户重复购买预测——特征工程

    天猫用户重复购买预测--特征工程 1.特征工程 1.1 概念 1.2 特征归一化 1.3 类别型特征转换 1.4 高维组合特征的处理 1.5 组合特征 1.6 文本表示模型 2. 赛题特征工程思路 3 ...

  3. 天猫用户重复购买预测之数据分析

    赛题理解 赛题链接 赛题背景: 商家有时会在特定日期,例如Boxing-day,黑色星期五或是双十一(11月11日)开展大型促销活动或者发放优惠券以吸引消费者,然而很多被吸引来的买家都是一次性消费者, ...

  4. 阿里云天池大赛赛题(机器学习)——天猫用户重复购买预测(完整代码)

    目录 赛题背景 全代码 导入包 读取数据(训练数据前10000行,测试数据前100条) 读取全部数据 获取训练和测试数据 切分40%数据用于线下验证 交叉验证:评估估算器性能 F1验证 Shuffle ...

  5. 天池竞赛赛题-特征工程-天猫用户重复购买预测解析

    前言 以下是我为大家准备的几个精品专栏,喜欢的小伙伴可自行订阅,你的支持就是我不断更新的动力哟! MATLAB-30天带你从入门到精通 MATLAB深入理解高级教程(附源码) tableau可视化数据 ...

  6. 天猫用户重复购买预测之特征工程

    特征工程 处理数据 # 全量信息处理,合并数据 all_data = train_data.append(test_data) all_data = all_data.merge(user_info, ...

  7. 【BI学习作业13-淘宝定向广告演化与天猫用户复购预测】

    目录 写在前面的话 1.思考题 1.1电商定向广告和搜索广告有怎样的区别,算法模型是否有差别 1.1.1电商定向广告 1.1.2搜索广告 1.2定向广告都有哪些常见的使用模型,包括Attention机 ...

  8. 二手车价格预测数据探索

    二手车价格预测数据探索 1.赛题理解 [类型]属于回归问题. [数据字段] 训练数据字段: 字段名字 含义 类型 name 汽车编码 int regDate 汽车注册时间 int model 车型编码 ...

  9. 天池大赛——天猫用户复购预测

    从0开始学大数据分析与机器学习,简简单单写下竞赛心得.得分是0.623537,排名629/5602 一.赛题背景 商家有时会在特定的日期(如节礼日甩卖."黑色星期五 "或 &quo ...

最新文章

  1. 2020年ACM Fellows出炉!颜水成、周昆、陈怡然等12位华人当选
  2. TCP/IP详解--第十九章
  3. 【Android 应用开发】Paint 滤镜原理 之 图像结构 ( 图片文件二进制分析 | PNG文件结构 | 数据块结构 | IHDR 数据块详解 )
  4. 2017-2018-1 20155222 201552228 实验五 通讯协议设计
  5. 集群(一)——LVS负载均衡集群
  6. Hybris Storefront里如何给用户绑定手机号
  7. 《Python Cookbook 3rd》笔记(4.12):不同集合上元素的迭代
  8. php 递归实现无限极分类和排序_PHP实现选择排序
  9. 弹射王服务器正在维护中,《弹射王》IOS版合服公告-1.7
  10. php server(),php的$_SERVER参数详解(附实例)
  11. [BZOJ4539][HNOI2016]树(主席树)
  12. 【转载】白话经典算法系列之三 希尔排序的实现
  13. vb6与access数据库交互常见问题——未完待续
  14. Java逻辑思维训练题
  15. 软件收集-建筑工程资料软件
  16. postgresql chm格式手册
  17. iOS14隐私适配:根据不同的场景需求设置不同的定位精确度
  18. 万豪酒店品牌持续拓展中国东南区,温州首家万豪酒店开业
  19. kettle web 版本 (webspoon) 中文部署 kettle 页面编辑 kettleweb 中文
  20. jQuery中的end()方法使用介绍

热门文章

  1. 【从头到脚】前端实现多人视频聊天— WebRTC 实战(多人篇)
  2. 康宁杰瑞任命前默克中国研发中心负责人担任首席医学官
  3. 《电商直播高画质开播指南》正式发布,6步快速搭建一个高清直播间
  4. 几何光学学习笔记(29)-6.4 光亮度
  5. 基于php网吧会员管理系统
  6. npm安装的yarn遇到【yarn : 无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次】
  7. 视频编辑软件中滚动字幕如何能停下来
  8. vba 窗体计时器 出现类型错误
  9. Scala 系列(二)—— 基本数据类型和运算符
  10. 安信可内测离线语音模块VB-01与ESP-C3-12F通信