基于 LightGBM 训练二分类模型。使用的数据集是 adult
🚀 本仓库的亮点:
- 使用 Optuna 做超参数寻优
- 使用 Treelite 做推理加速
- 使用 Graphviz 做决策树模型可视化
- 使用
scale_pos_weight
参数,解决样本不均衡问题 - 对标签概率生成标签的阈值寻优 (
y_pred -> y
),详见util.gen_threshold
- 编写 自适应学习率衰减函数 提高 AUC,详见
util.AdaptiveLearningRate
- 编写一站式评估函数,可一次性输出多种指标,包括 accuracy, precision, recall, f1_score, auc, cross-entropy loss, confusion matrix,详见
util.eval_binary
✨ 感谢 Kimi 在学习过程中提供的无私帮助~
Note:
requirements.txt
文件列出了当前依赖的部分库版本。如果你在运行过程中遇到了错误,可以尝试执行以下命令,使用指定库版本:
pip install -r requirements.txt
- 导入数据
- 统计描述
describe()
方法info()
方法- 统计各字段枚举值数量
- 查看字段下所有枚举值
- 查看空值个数
- 可视化
- 标号的值的比例
- 小提琴图 (Violin Plot)
- 预处理
- 标签编码
- 更好的编码方式?
- 初次训练
- 使用
lgb.LGBMClassifier
进行训练 - 使用原生 API 进行训练
- 使用
- 简单评估
- 模型存储与导入
- 模型存储
- 模型导入
- 特征选择
- 计算特征的重要程度
- 多次实验求均值
- 简单的例子
- 稍微复杂的例子:随机森林
- 导入数据
- one-hot 编码
- 训练
- 评估
- 超参数微调
- 使用微调后的超参数训练
- LightGMB 超参数微调
- 单次训练
- 超参数寻优
- 使用微调后的超参数训练
- 学习率衰减
- 指数衰减
- 自适应衰减
- 基础模型
- N 折交叉验证
- 超参寻优:N 折交叉验证
- 使用微调后的超参数训练
- 阈值选择 (
y_pred -> y
)- 使用
np.rint
- 尝试:考虑原标号的分布
- 训练标号的分布情况
- 预测标号的概率密度函数 (PDF)
- 预测标号的概率分布函数 (CDF)
- 当 CDF =
训练数据 0 标号比例
时反推阈值
- 使用 optuna 寻优
- 使用
- 评估
- 混淆矩阵
- 准确率
- 精确率和召回率
f1
值log_loss
交叉熵损失- ROC 曲线 与 AUC
- 一站式评估函数
- 导入模型和数据
- 使用 Treelite 加速推理
- 推理速度
- 推理准度
- 通用函数
- 模型训练
- 模型部署
- 离线部署
- 在线部署
- 创建可交互的可视化界面
- 将决策树存成 PNG / PDF