目标:通过baseline代码和进阶代码分析数据、学习特征构建方式,分数初步提高,入门机器学习建模
基础概念入门
GBDT
GBDT (Gradient Boosting Decision Tree) 是机器学习中一个长盛不衰的模型,其主要思想是利用弱分类器(决策树)迭代训练以得到最优模型,该模型具有训练效果好、不易过拟合等优点。
GBDT不仅在工业界应用广泛,通常被用于多分类、点击率预测、搜索排序等任务;在各种数据挖掘竞赛中也是致命武器,据统计Kaggle上的比赛有一半以上的冠军方案都是基于GBDT。
LightGBM
LightGBM(Light Gradient Boosting Machine)是一个实现GBDT算法的框架,支持高效率的并行训练,并且具有更快的训练速度、更低的内存消耗、更好的准确率、支持分布式可以快速处理海量数据等优点。
LightGBM 框架中还包括随机森林和逻辑回归等模型。通常应用于二分类、多分类和排序等场景。
例如:在个性化商品推荐场景中,通常需要做点击预估模型。使用用户过往的行为(点击、曝光未点击、购买等)作为训练数据,来预测用户点击或购买的概率。根据用户行为和用户属性提取一些特征,包括:
-
类别特征(Categorical Feature):字符串类型,如性别(男/女)。
-
物品类型:服饰、玩具和电子等。
-
数值特征(Numrical Feature):整型或浮点型,如用户活跃度或商品价格等。
1.导入模块
本次运行项目用到了lightgbm来增强项目的准确性
!pip install lightgbm==3.3.0
import numpy as np
import pandas as pd
import lightgbm as lgb from sklearn.metrics
import mean_squared_log_error, mean_absolute_error, mean_squared_error
import tqdm
import sys
import os
import gc
import argparse
import warnings
warnings.filterwarnings('ignore')
2.探索性数据分析(EDA)
在AL Studio中搜索数据集 用于模型训练
3.特征工程
这里主要构建了 历史平移特征 和 窗口统计特征;每种特征都是有理可据的,具体说明如下:
-
历史平移特征:通过历史平移获取上个阶段的信息;如下图所示,可以将d-1时间的信息给到d时间,d时间信息给到d+1时间,这样就实现了平移一个单位的特征构建。
-
窗口统计特征:窗口统计可以构建不同的窗口大小,然后基于窗口范围进统计均值、最大值、最小值、中位数、方差的信息,可以反映最近阶段数据的变化情况。如下图所示,可以将d时刻之前的三个时间单位的信息进行统计构建特征给我d时刻。
4.模型训练与测试集预测
这里选择使用Lightgbm模型,也是通常作为数据挖掘比赛的基线模型,在不需要过程调参的情况的也能得到比较稳定的分数。
需要注意修改的地方
model = lgb.train(lgb_params, train_matrix, 50000, valid_sets=[train_matrix, valid_matrix], categorical_feature=[], verbose_eval=500, early_stopping_rounds=500)
修改为:
model = lgb.train(lgb_params, train_matrix, 1000, valid_sets=[train_matrix, valid_matrix], categorical_feature=[], verbose_eval=100, early_stopping_rounds=100)
可以加快运行速度