本案例需要使用超参数交叉检验和优化方法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