机器学习模型概要


线性模型

原理:通过样本特征的线性组合来训练模型进行预测

线性分类模型:对线性模型生成的结果进行判别–使用判别函数,如指示函数或根据阈值进行正负样本的判定。

适用情景: 回归问题,分类问题:二分类问题,多分类问题可采用argmax方式选取可能性最大的类别标签(比如用softmax函数生成)

优缺点: 简单,难以处理复杂问题、非线性问题

Logistic回归

概要:处理二分类问题的线性模型

原理:使用sigmoid激活函数将线性函数值压缩到(0, 1)区间内(容易求导y’ = y*(1-y)),交叉熵作为损失函数,可使用梯度下降方法进行训练。

适用情景: 二分类问题,多分类问题就是一对多

优缺点:计算代价不高,易于理解和实现。 容易欠拟合,分类精度可能不高

softmax回归

概要:logistic 回归的一般形式,多项多分类的Logistic回归

原理:采用softmax函数计算所有类别概率,交叉熵最为损失函数,梯度更新策略优化

适用情景:简单的多分类问题

优缺点: 权重向量冗余,减去同样一个向量结果相同,需要正则化来约束参数

感知机模型(MLP)

概要:感知机是一个二类分类的线性分类器,是支持向量机和神经网络的基础。

原理:它假设数据是线性可分的,目标是通过梯度下降法,极小化损失函数,最后找到一个分割超平面,可以将数据划分成两个类别。

决策函数:指示函数

损失函数:误分类点到分类超平面S的总距离。

训练方法:梯度下降方法

支持向量机(SVM)

概要:找到分割超平面对数据进行二分类

原理: 数据集中支持向量到分割超平面的距离尽可能长,距离为2/||w||,||w||=(1+w21/2(注意:w为一次方程系数,||w||表示支持向量到直线的距离),目标函数最小化1/2 *||w||2,构造拉格朗日函数,对偶函数,满足KKT条件; 可以使用和函数将原始特征空间映射到更高维空间; 软间隔在目标函数中引入松弛变量;激活函数为sgn函数 ;

支持向量:在线性可分的情况下,训练数据集的样本点中与分离超平面距离最近的数据点称为支持向量。满足
y i ( x i ∗ W + b ) = 1 y_i(x_i*W+b)=1 yi(xiW+b)=1 ( x i ∗ W + b ) = + ( − ) 1 (x_i*W+b)=+(-)1 (xiW+b)=+()1,因为 y i y_i yi标签为1或-1.

损失函数:max(0, 1 − y i ( x i ∗ W + b ) 1-y_i(x_i*W+b) 1yi(xiW+b)),采用二次规划、SMO(序列最小优化)等优化。

深入理解:软间隔,硬间隔的处理,首推公式,对偶原理。

树模型

基础:Boosting 是集成学习中非常重要的一类算法,其基本原理是串行生成一系列弱学习器(weak learner),这些弱学习器直接通过组合到一起构成最终的模型。Boosting 算法可以用于解决分类和回归问题,主要的算法包括 AdaBoost 和 Gradient Boosting。

Gradient Boosting 的基本思想:串行地生成多个弱学习器,每个弱学习器的目标是拟合先前累加模型的损失函数的负梯度, 使加上该弱学习器后的累积模型损失往负梯度的方向减少。

GBDT

GBDT(Gradient Boosting Decision Tree)是弱学习器使用 CART 回归树的一种 Gradient Boosting

理论基础:决策树本身是一种不稳定的学习器(训练数据的一点波动可能给结果带来较大的影响),从统计学的角度单棵决策树的方差比较大。而在集成学习中,弱学习器间方差越大,弱学习器本身泛化性能越好,则集成学习模型的泛化性能就越好。因此使用决策树作为弱学习器通常比使用较稳定的弱学习器(如线性回归等)泛化性能更好。

XGBoost

: 仍采用boosting思想,分块并行(训练前对每个特征进行排序并存储为block结构,后面查找分割点时重复使用,支持并行–特征维度,寻找每个block最佳分位点)

候选分位点:每个特征采用常数个分位点作为候选分割点

CPU cache命中优化:使用缓存预取方法,读取每个block中样本梯度信息并存入连续缓冲区

Block处理优化:block预先放入内存,按列进行压缩;划分到不同硬盘提高吞吐

防止过拟合:正则项(叶子节点个数+叶子节点权重的L2正则化),列抽样:训练时只用一部分特征 子采样:每轮计算随机抽取部分样本 系数衰减:学习率/步长,方便学习参数

其他优化:二阶泰勒展开:更为精准的逼近真实的损失函数, 损失函数可自定义(支持一二阶可导即可)

处理缺失值:直接略过,划分到右子节点

停止生长条件:新引入分裂的增益Gain<0时,放弃当前分裂。 树达到最大深度时停止分裂;叶子节点包含样本数量太少,停止分裂。

XGBoost与GBDT的区别

基分类器:传统GBDT以CART树作为基分类器, xgboost还支持线性分类器(相当于逻辑斯蒂回归或线性回归)

导数:传统GBDT优化时只用到一阶导数信息,xgboost对代价函数进行了二阶泰勒展开,同时用到了一阶二阶导数,支持自定义代价函数(可一阶二阶求导就行)

正则化:有添加正则项,列抽样,系数衰减的正则化方法。

并行:不是树粒度的并行,而是特征粒度上的

可并行的近似直方图算法:不需要枚举所有可能的分割点,用可并行的近似直方图算法

RF与GBDT的区别

相同点:都是由多棵树组成,最终结果由多棵树一起决定

不同点:

集成学习:RF属于bagging方法,GBDT属于boosting思想

偏差-方差权衡:RF不断降低模型方差,GBDT不断降低模型偏差

训练样本:RF每次迭代样本是全部训练集中有放回抽样形成的,GBDT每次使用全部样本

并行性:RF可并行生成,GBDT只能顺序生成

最终结果:RF由多棵树进行多数表决(回归是取平均),GBDT是加权融合

数据敏感性:RF对异常值不敏感,GBDT敏感

泛化能力:RF不易过拟合,GBDT更容易过拟合

LR和GBDT的区别

LR是线性模型,可解释性强,容易并行化,学习能力有限,需要大量人工特征方程

GBDT是非线性模型,特征组合强,表达能力强,树之间无法并行训练,容易过拟合

高维稀疏特征场景下,LR效果一般比GBDT效果好; 系数条件下,因为两者都存在过拟合问题,但LR对过大权重(有效权重)的惩罚会很大,而树模型可能通过某个节点就能区别数据,这样所带来的惩罚是很小的

XGBoost和LightGBM的区别

树生长策略:XGBoost采用level-wise的分裂策略,LGB采用leaf-wise贪婪的分裂策略(选取分裂收益最大的节点,容易过拟合,需要对最大深度做限制)

分割点查找算法:XGB使用特征预排序算法,LGB采用基于直方图的切分点算法

​ 优势:LGB减少内存占用,计算效率提高,可利用直方图做差加速,一个结点的直方图==父节点的直方图-兄弟节点的直方图; XGB的近似直方图(是所有feature共享一个直方图,每个样本权重是二阶导,每一层都要构建一个直方图),LGB是每个特征都有一个直方图只需要构建一次就可以了

支持离散变量:LGB可直接处理类别型变量(不需要实现对类别型变量进行编码)

缓存命中率:XGB使用block结构,取梯度通过索引获取,梯度获取顺序按大小排序,导致非连续的内存空间,CPUcache缓存命中率低; LGB基于直方图分裂特征,梯度信息存在于一个个bin中,访问梯度连续,命中率高

并行策略不同:LGB特征并行(每个worker留有一份完整数据集),每个worker仅在特征子集上寻找最佳切分点,woker之间相互通信,最佳切分点进行全局广播,每个worker进行切分,通信成本降低。XGB每个worker仅有部分列数据,垂直切分,wrker间下相互通信,在具有最佳切分点的worker上进行节点分裂,再由这个节点广播被切分到左右节点的样本索引号

数据并行:LGB现对数据水平切分,每个worker建立局部直方图,然后合并成全局,想用直方图相减凡是,先计算样本量少的,再相减得到另一节点的。 XGB中数据并行也是水平切分,不同在于根据全局直方图进行各个worker上的节点分裂时会单独计算子节点的样本索引,因此效率贼慢

投票并行:LGB在数据量和纬度都很大时,选取投票并行,每个worker找到本地一些优秀特征,进行全局投票,根据投票结果,选top-n特征进行直方图合并,在寻找全局最优分割点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值