python数据分析:商品数据化运营(中)——基于参数优化的Gradient Boosting的销售预测

本案例需要使用超参数交叉检验和优化方法GridSearchCV以及集成回归方法GradientBoostingRegressor

GridSearchCV与GradientBoostingRegressor

GridSearchCV

GridSearchCV用于系统地遍历多种参数组合,通过交叉验证确定最佳效果参数,其实就是穷举法,遍历所有组合。GridSearchCV,它存在的意义就是自动调参,只要把参数输进去,就能给出最优化的结果和参数。但是这个方法适合于小数据集,一旦数据的量级上去了,很难得出结果。

GradientBoostingRegressor

Gradient Tree Boosting或Gradient Boosted Regression Trees(GBRT)是一个boosting的泛化表示,它使用了不同的loss函数。GBRT是精确、现成的过程,用于解决回归/分类问题。Gradient Tree Boosting模型则用于许多不同的领域:比如:网页搜索Ranking、ecology等。

GBRT的优点是:

  • 天然就可处理不同类型的数据(=各种各样的features)
  • 预测能力强
  • 对空间外的异常点处理很健壮(通过健壮的loss函数)

GBRT的缺点是:

+ 扩展性不好,因为boosting天然就是顺序执行的,很难并行化

sklearn.ensemble通过GBRT提供了分类和回归的功能。

案例数据

以下是本数据集的10个特征变量,包括:

  • limit_infor:是否有限购字样信息提示,1代表有,0代表没有。
  • campaign_type:促销活动类型,分类型变量,值域为[0,6]代表7种不同类型的促销活动,例如单品活动、跨店铺活动、综合性活动、3C大品类活动等。
  • campaign_level:促销活动重要性,分类型变量,值域为[0,1],分别代表促销活动本身的不重要或重要性程度。
  • product_level:产品重要性分级,分类型变量,值域为[1,3],分别代表运营部门对于商品重要性的分级。
  • resource_amount:促销资源位数量,整数型变量,代表每次该商品在参加促销活动时有多少个资源位入口。
  • email_rate:发送电子邮件中包含该商品的比例,浮点型变量,值域[0,1],值越大代表包含该商品的电子邮件越多。
  • price:单品价格,整数型变量,代码商品在不同阶段的实际销售价格。
  • discount_rate:折扣率,浮点型变量,值域[0,1],值越大代表折扣力度越大。
  • hour_resouces:在促销活动中展示的小时数,整数型变量,值越大代表展示的时间越长。
  • campaign_fee:该单品的促销费用,整数型变量,值越大代表用于该单品的综合促销费用越高,这里面包含促销费用、广告费用、优惠券费用等综合摊派的费用。

目标变量:orders,代表该单品在每次活动中形成的订单量。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.model_selection import GridSearchCV
import warnings
# 图像在notebook中显示
%matplotlib inline
# 不显示提示
warnings.filterwarnings('ignore')# 数据载入
df = pd.read_csv('https://raw.githubusercontent.com/ffzs/dataset/master/products_sales.txt')# 数据的简单查看
df.head().T

在这里插入图片描述

# 数据类型的查看
df