机器学习模型和算法学习随记

来源:互联网 发布:php特点 编辑:程序博客网 时间:2024/06/10 12:37

分类

Ensemble Learning 集成学习

XGBoost

  • 论文:XGBoost:

    • a scalable tree boosting system
    • higgs boson discovery with boosted trees
  • tgboost (github.com/wepe/thboost) 轮子,参考

LightGBM

GBDT

Random Forest

  • RF和GBDT
    • 一般,RF整体模型的训练和调参主要关注降低方差,所以可以设定较少的子模型并适当提高子模型的复杂度,并且可以适当降低子模型间的相关度
    • GBDT主要关注降低偏差,所以可以设定较多的子模型并适当降低子模型的复杂度,但降低子模型间的相关度起到作用则较小

Logistic Regression

Deep Neural Network

SVM


问题

  • 集成树算法在数据挖掘比赛中表现比较好
    • 数据特点:
      • 混合类型
      • 缺失值
      • 含离群点
      • 长尾分布

注意:

  • 训练前应对训练集做归一化/标准化,同时对测试集做相同操作

    • scaler = sklearn.preprocessing.StandardScaler().fit(train)
    • scaler.transform(train)
    • scaler.transform(test)
  • 训练集和测试集的划分

    • 训练集数据的数据采样模拟真实的测试环境,少偏差
    • 样本整体分布一致,K-fold的CV即可
    • 样本整体分布不一致,如受时间影响等
      • 使用随机划分的方法常会带来严重的过拟合
      • 如果数据呈现明显的时间序列特征,可采用滑窗法。
  • 常见模型融合(降低模型方差)方法

    • 融合基础:多个有差异性的基本模型
    • 常用方法:
      • 线性加权融合
      • Rank融合 (适合排序评估指标,如AUC)
      • Stacking (相对更健壮?)
      • Blending (stacked ensembling, 比Stacking简单,能防止信息泄露,缺点:只用了数据一部分,可能会对留出集过拟合)
      • 具体参考 Kaggle ensemble guide
      • 模型融合多数时候是有效的,但并非越复杂的模型融合方法带来的结果一定越好!

流程

  • 看评测指标
  • 了解数据

    • 字段
    • 统计工作:多少条,多少用户,时间段等以及 测试集与训练集的交集 用户,时间……
  • 数据划分

    • 如受时间等影响,滑窗法 (获取特征窗(训练),标签窗(验证和预测))
  • 特征工程

    • 特殊特征,如从标签区间提取的

流程目标

  • classifying,数据分类
  • correlating,特征关联
  • converting,特征值转化,将一些非数值之类的特征值转为等效数值类型
  • completing,将缺失的特征值补上
  • correcting,异常检测,抛弃,重点分析?
  • creating,基于现有的特征创造新的特征
  • charting

https://www.kaggle.com/yangxnn/titanic-data-science-solutions

其他

one-hot encoding 独热编码


资料

  • 各种评测指标的实现代码:https://github.com/benhamner/Metrics
  • 模型融合:https://github.com/MLWave/Kaggle-Ensemble-Guide

论文


参考

  • https://tianchi.aliyun.com/video.htm?spm=5176.9876270.0.0.7cb4283aHgVfhe