机器学习神器

更新时间: 2026-06-05 15:25:34

# 1/2预测全家桶

# Project A:员工离职预测

https://www.kaggle.com/c/bi-attrition-predict/ (opens new window)

  • 我们有员工的各种统计信息,以及该员工是否已经离职,统计的信息包括了(工资、出差、工作环境满意度、工作投入度、是否加班、是否升职、工资提升比例等)
  • 现在需要你来通过训练数据得出 员工离职预测,并给出你在测试集上的预测结果。 我们将给出课程上公开的榜单

数据表字段:

# 预测全家桶

常用预测(分类,回归)模型:

  • 分类算法:LR, SVM,KNN
  • 树模型:GBDT, XGBoost,LightGBM,CatBoost,NGBoost

特征工程:好的特征工程是拿分的关键
模型:懂原理,会调参

# 常用预测模型

  • 数据预处理
  • 分类算法:LR, SVM,KNN
  • 树模型:GBDT, XGBoost,LightGBM,CatBoost,NGBoost

# ProjectB:男女声音识别

  • 数据集:3168个录制的声音样本(来自男性和女性演讲者),采集的频率范围是0hz-280hz,已经对数据进行了预处理

  • 一共有21个属性值,请判断该声音是男还是女?

  • 使用Accuracy作为评价标准

  • Step1,数据加载

  • Step2,数据预处理
    分离特征X和Target y
    使用标签编码,male-> 1, female-> 0
    将特征X矩阵进行规范化
    #标准差标准化,处理后的数据符合标准正态分布
    scaler = StandardScaler()

  • Step3,数据集切分,train_test_split

  • Step4,模型训练
    SVM,Linear SVM

  • Step5,模型预测

# 总结

每种模型都有适用的场景

LR优点:

  • 实现简单,广泛的应用于工业问题上;
  • 分类时计算量非常小,速度很快,使用资源低;
  • 方便观测样本概率分数;

LR缺点:

  • 当特征空间很大时,LR的性能不是很好;
  • 容易欠拟合,准确度不太高;
  • 不能很好地处理大量多类特征或变量;
  • 通常只处理二分类问题,多分类需要使用softmax(LR在多分类的推广),且必须线性可分;
  • 对于非线性特征,需要进行转换;

SVM优点:

  • 可以解决高维问题,即大型特征空间;
  • 能够处理非线性特征的相互作用;
  • 需要先对数据进行归一化,因为计算是基于距离的模型,所以SVM和LR都需要对数据进行归一化处理

SVM缺点:

  • 当样本很多时,效率并不是很高;
  • 对非线性问题没有通用解决方案,可能会很难找到合适核函数
  • 对缺失数据敏感;

SVM核的选择是有技巧的,样本数量<特征数,线性核,大于特征数使用非线性核

  • 可以使用LR模型作为预测的Baseline
  • FM衍生模型在推荐系统,尤其是CTR预估中有广泛应用,弥补了LR模型的不足(需要人工组合特征,耗费大量时间和人力)
  • Attention机制,对于Diversity多样性的情况,Attention机制可以提升效率,并且得出更好的结果
  • Tree Ensemble模型,比如GBDT,使用广泛,因为训练模型更可控
    对于LR模型,如果欠拟合,需要增加feature,才能提高准确率。而对于tree-ensemble来说,解决方法是训练更多的决策树tree。Kaggle比赛中使用很多

常用预测模型:

  • 分类算法:LR, SVM,KNN
  • 矩阵分解:FunkSVD,BiasSVD,SVD++
  • FM模型:FM, FFM,DeepFM, NFM,AFM
  • 树模型:GBDT, XGBoost,LightGBM,CatBoost,NGBoost
  • Attention模型:DIN, DIEN, DSIN

# 2/2机器学习神器

# 什么是集成学习

思想,将多个弱分类器按照某种方式组合起来,形成一个强分类器(三个臭皮匠赛过诸葛亮)

  • Bagging,把数据集通过有放回的抽样方式,划分为多个数据集,分别训练多个模型。针对分类问题,按照少数服从多数原则进行投票,针对回归问题,求多个测试结果的平均值
  • Stacking,通常是不同的模型,而且每个分类都用了全部训练数据,得到预测结果y1, y2, ..., yk,然后再训练一个分类器Meta Classifier,将这些预测结果作为输入,得到最终的预测结果
  • Boosting,与Bagging一样,使用的相同的弱学习器,不过是以自适应的方法顺序地学习这些弱学习器,即每个新学习器都依赖于前面的模型,并按照某种确定性的策略将它们组合起来
  • 两个重要的Boosting算法:AdaBoost(自适应提升)和GradientBoosting(梯度提升)
  • AdaBoost,使用前面的学习器用简单的模型去适配数据,然后分析错误。然后会给予错误预测的数据更高权重,然后用后面的学习器去修复
  • Boosting通过把一些列的弱学习器串起来,组成一个强学习器

# Boosting与Bagging:

  • 结构上,Bagging是基分类器并行处理,而Boosting是串行处理
  • 训练集,Bagging的基分类器训练是独立的,而Boosting的训练集是依赖于之前的模型
  • 作用,Bagging的作用是减少variance,而Boosting在于减少bias

对于Bagging,对样本进行重采样,通过重采样得到的子样本集训练模型,最后取平均。因为子样本集的相似性,而且使用相同的弱学习器,因此每个学习器有近似相等的bias和variance,因为每个学习 器相互独立,所以可以显著降低variance,但是无法降低bias

对于Boosting,采用顺序的方式最小化损失函数,所以bias自然是逐步下降,子模型之和不能显著降低variance

# XGBoost算法特点:

  • XGBoost将树模型的复杂度加入到正则项中,从而避免过拟合,泛化性能好
  • 损失函数是用泰勒展开式展开的,用到了一阶导和二阶导,可以加快优化速度
  • 在寻找最佳分割点时,采用近似贪心算法,用来加速计算
  • 不仅支持CART作为基分类器,还支持线性分类器,在使用线性分类器的时候可以使用L1,L2正则化
  • 支持并行计算,XGBoost的并行是基于特征计算的并行,将特征列排序后以block的形式存储在内存中,在后面的迭代中重复使用这个结构。在进行节点分裂时,计算每个特征的增益,选择增益最大的特征作为分割节点,各个特征的增益计算可以使用多线程并行
  • 优点:速度快、效果好、能处理大规模数据、支持自定义损失函数等
  • 缺点:算法参数过多,调参复杂,不适合处理超高维特征数据

# LightGBM

  • 常用的机器学习算法,例如神经网络等算法,都可以以mini-batch的方式训练,训练数据的大小不会受到内存限制
  • GBDT在每一次迭代的时候,都需要遍历整个训练数据多次。如果把整个训练数据装进内存则会限制训练数据的大小;如果不装进内存,反复地读写训练数据又会消耗非常大的时间。对于工业级海量的数据,普通的GBDT算法是不能满足其需求的
  • LightGBM的提出是为了解决GBDT在海量数据遇到的问题,让GBDT可以更好更快地用于工业场景

LightGBM与XGBoost:

  • 模型精度:两个模型相当
  • 训练速度:LightGBM训练速度更快=> 1/10
  • 内存消耗:LightGBM占用内存更小=> 1/6
  • 特征缺失值:两个模型都可以自动处理特征缺失值
  • 分类特征:XGBoost不支持类别特征,需要对其进行OneHot编码,而LightGBM支持分类特征

# CatBoost

  • 俄罗斯科技公司Yandex开源的机器学习库(2017年)
  • https://arxiv.org/pdf/1706.09516.pdf
  • CatBoost= Catgorical+ Boost
  • 高效的处理分类特征(categorical features),首先对分类特征做统计,计算某个分类特征(category)出现的频率,然后加上超参数,生成新的数值型特征(numerical features)
  • 同时使用组合类别特征,丰富了特征维度
  • 采用的基模型是对称决策树,算法的参数少、支持分类变量,通过可以防止过拟合

# 总结

  • LighGBM效率高,在Kaggle比赛中应用多
  • CatBoost对于分类特征多的数据,可以高效的处理,过拟合程度小,效果好
  • XGBoost, LightGBM, CatBoost参数较多,调参需要花大量时间
  • Boosting集成学习包括AdaBoosting和Gradient Boosting
  • Boosting只是集成学习中的一种(Bagging, Stacking)

# 如何防止模型过拟合

# 在模型层面进行优化

  • 正则化技术:
    树模型:调整max_depth(建议5-8)、min_samples_leaf(建议10-20,代表每个叶子节点至少包含的样本数)
    神经网络:添加dropout层(0.2-0.5) + L2正则化
    线性模型:增大L1/L2正则化系数

  • 早停机制: 监控验证集loss,设置patience=10-20个epoch,patience代表允许验证集损失validation loss连续不改善的轮次(epochs)数量

  • 集成方法:
    使用Blending(用70%训练基模型,30%训练元模型)

# Blending集成学习方法

Blending是一种分层集成学习技术,通过以下两步组合多个模型:

  • 基模型(Base Models):用训练集的70%训练多个不同模型(如随机森林、XGBoost、神经网络等)。
  • 元模型(Meta Model):用剩下的30%数据生成基模型的预测结果作为新特征,训练一个次级模型(通常为线性模型)进行最终预测。

神经网络是一种受人脑神经元结构启发的机器学习模型。核心思想是通过大量“神经元”节点的层层连接和非线性变换,自动学习输入特征与输出目标之间的复杂映射关系。