介绍
在为表格数据选择二元分类模型时,我决定快速尝试一种快速的非深度学习模型:梯度提升决策树(gbdt)。本文介绍了使用 bigquery 作为数据源并使用 xgboost 算法进行建模来创建 jupyter notebook 脚本的过程。
完整脚本
对于那些喜欢直接跳入脚本而不进行解释的人,这里是。请调整project_name、dataset_name和Table_name以适合您的项目。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
|
解释
从 bigquery 加载数据
以前,数据以 csv 文件的形式存储在 cloud storage 中,但缓慢的数据加载降低了我们学习过程的效率,促使我们转向 bigquery 以加快数据处理速度。
设置 bigquery 客户端
1 2 |
|
此代码使用 google cloud 凭据初始化 bigquery 客户端,该凭据可以通过环境变量或 google cloud sdk 设置。
查询和加载数据
1 2 3 4 |
|
该函数执行 sql 查询并将结果作为 pandas 中的 dataframe 返回,从而实现高效的数据处理。
使用 xgboost 训练模型
xgboost 是一种利用梯度提升的高性能机器学习算法,广泛用于分类和回归问题。
HTTPs://arxiv.org/pdf/1603.02754
模型初始化
1 2 |
|
这里实例化了xgbclassifier类,使用对数损失作为评估指标。
数据分割
1 2 |
|
该函数将数据拆分为训练集和验证集,这对于测试模型的性能和避免过度拟合至关重要。
参数优化
1 2 3 4 5 6 7 8 9 |
|
gridsearchcv 执行交叉验证以找到模型的最佳参数组合。
模型评估
使用验证数据集上的精度、召回率、f1 分数和对数损失来评估模型的性能。
1 2 3 4 5 6 7 8 9 10 |
|
输出结果
运行笔记本时,您将得到以下输出,显示最佳参数和模型评估指标。
1 2 3 |
|
附加信息
使用google云存储作为数据源
在某些情况下,从 google cloud storage 而不是 bigquery 加载数据可能更合适。以下函数从 cloud storage 读取 csv 文件并将其作为 pandas 中的 dataframe 返回,并且可以与 load_data_from_bigquery 函数互换使用。
1 2 3 4 5 6 7 8 9 |
|
使用示例:
1 2 3 4 5 |
|
使用 lightgbm 训练模型
如果您想使用 lightgbm 而不是 xgboost,只需在同一设置中将 xgbclassifier 替换为 lgbmclassifier 即可。
1 2 |
|
结论
未来的文章将介绍如何使用 bigquery ml (bqml) 进行训练。