机器学习常用分类模型特点总结
来源:互联网 发布:贝云cms 编辑:程序博客网 时间:2024/04/28 06:16
总结一下常用的一些分类器特点,不定期补充更新
线性模型
- 分类问题中受限于数据是否线性可分
- 皆可通过核化变为非线性模型,可将模型形式变为
∑ni=1aiyik(x,xi)+b
- Logistic Regression
- model:
- 基于概率模型,以当前样本集数据来拟合真实的样本分布
- feature:
- 对于线性可分的小样本数据集很容易过拟合,因为训练集往往并不是真实样本分布的无偏采样,极大似然估计所得的最优分布可能与真实分布往往差异较大
- linear SVM
- model:
- 对于线性可分数据集,以一个最优超平面划分数据集,并定义离该超平面最近的样本点为支持向量,最大化两个异类支持向量到超平面的距离
- 将损失函数用KKT条件转化为原问题的对偶问题,多以SMO优化算法求解超参数
SMO:
- 选择两个违背KKT条件程度最大的样本对其参数进行优化使得这两个样本满足KKT条件
- 优化选定的两个样本相关的超参(固定其他超参数,
α )- 原问题转化为二次函数最值问题可通过牛顿法解得参数更新公式
- feature:
- 最小化了结构风险,引入了L2正则,使得其在小规模数据集上就有不错的泛化能力
- 使用hinge损失,实现了软间隔分类,获得稀疏解提高训练效率(hinge损失中满足KKT条件且非支持向量的样本不参与计算)
- 软间隔允许了一定的容错性,在少量outlier引起的非线性可分数据中起到较好效果.
非线性模型
- 拟合能力不受数据是否线性可分影响
kernel trick
1.低维空间的数据投射到一个使数据集能线性可分的高维空间
2.在∑ni=1aiyik(x,xi)+b 可以看出其实可以看出是换了种距离度量方式(计算高维空间距离),可以配合度量学习
- feature:
1.计算量往往较大
决策树
1.易于解释以及可视化
2.特征较多时,拟合能力强.
3.高维稀疏数据易过拟合
4.树的拟合能力的控制方式很多(每个树模型都有一堆参数要调)
5.训练速度快
- ID3 model:
- 以信息增益为准则来选择划分属性
- feature:
- 对于离散特征之间特征属性取值的数量差距较大时效果较差,因为这样往往会使ID3选择一些属性种类较多的特征作为划分属性
- 只能处理离散数据
- C4.5 model:
- 引入信息增益率来选择特征用于划分(对属性可取值较少的特征有所偏好)
- 采用一个启发式的方式,先从划分属性中找出信息增益高于平均水平的属性,再选择增益率最高的。两种偏好折中处理。
- feature:
- 增加了对连续属性的处理方式(二分离散化)
- 增加了对缺失值的处理方式(带权重的信息增益率的计算)
- 对于划分属性的贪心式选择以及过深的深度造成的过拟合加入了预剪枝后剪枝处理,后剪枝一般深度比预剪枝深,拟合能力好于预剪枝,但训练时间较长。
- CART model:
- 每次建立子树只生成两个叉,最终就是个二叉树。
- 可分类可回归
- feature:
- 分类树以基尼指数来作为属性划分的依据,计算速度比信息熵快
- 回归树计算特征的各取值下的样本标记集方差之和作为划分依据,以其数据集的平均值作为预测值.是一种粗粒度的回归
- 多变量决策树:
- 如word2vec,doc2vec中的huffman树
集成学习
对于集成学习我们首先从方差偏差角度来看
对集成模型进行偏差方差分解
对于bagging,每个基模型的权重等于1/m且期望近似相等,可知偏差近似相等
所以期望与原模型近似相等,而方差随着模型相关性降低而降低,但也有个极限值.
所以bagging要求强模型,否则偏差过低集成效果反而不好
而对于boosting,集成所得的模型的期望为各模型偏差之和.
1.需要注意模型性能之间不能差异太大否则容易成为一言堂.
2.再从方差角度看可知这正是影响集成效果的一个重要因素(强学习器方差往往很大)
详细请看知乎 https://www.zhihu.com/question/29036379 城东大神的回答
在周志华西瓜书上还有另一种的误差方差分解
集成学习器的泛化误差E=
(
这从另一种角度说明了
1.基学习器之间差异度要大
2.boosting,stacking基学习器,等之间性能要相近,因为boosting往往是高性能被赋予高权重,如果性能差异度过大造成一言堂,集成反而没效果.
- Bagging
- model:
- 对原数据集进行抽样获得子数据集
- feature:
- 提高样本扰动性降低方差
- 子数据集分布有所改变基学习器性能略有降低
- 易并行
- random forest
- model:
- 对特征集进行随机抽样
- feature:
- 训练速度快,且快于bagging
- 通过对特征的随机抽样来降低学习器差异度,从而降低方差
- 易并行
- Adaboost
- model:
- 下一个基学习器对之前的学习器的判错数据进行加大权重进行学习
- 模型之间的权重准确率高的权重大
- feature:
- 有Adaboost不易过拟合一说
请见 https://www.zhihu.com/question/41047671 eyounx大神的回答
- GBDT
- model:
- 其实感觉这东西是把梯度下降应用到了集成之中
损失函数 :Loss(Y,Fm−1(x)+fm(x))
优化策略 :Fm(x)=Fm−1(x)−α∇Loss(Y,Fm−1(x))
先用一棵树拟合梯度,即拟合∇Loss(Y,Fm−1(x)) ,再利用损失函数求最优步长α - 以CART作为基学习器
- 分类中有JS散度作为损失函数
- feature:
- 回归中有Huber损失函数,对异常值不敏感
- 强拟合能力,但基学习器之间相关性比较高
- 带缩减因子
Fm=Fm−1+eta∗fm ,留给后面的学习器更大的学习空间(我感觉好像是放大了梯度信息,便于后面学习)- 从RF,Bagging中获取的行列抽样
- gamma设定结点分裂阈值,结点分裂的收益值小于此值便不再分裂,控制过拟合
- xgboost
- model:
- GBDT 的改版,如果说GBDT是梯度下降,xgboost则是牛顿优化法
损失函数:Loss(Y,Fm−1(x)+fm(x))
优化策略:fm(x)=wq(x)=−Loss′(Y,Fm−1(x))Loss″(Y,Fm−1(x))
损失函数被转化为
- 分裂节点的评分依据变为结点分裂前后的损失函数值之差
- feature:
- 相比于GBDT,利用了二阶导的信息
- 对缺失值自行计算其最优处理方案(归为左树或右树)
- 节点分裂采用并行计算
- 数据量过大时可采用直方图算法(将特征划分为多份,各自计算某份梯度信息)
- 在确定特征的最优分割点时将数据集按特征分组(连续特征先排序),并行计算各块数据集上的梯度信息,加速训练
- 如GBDT上的各种正则化的参数,以及增大基学习器多样性的行列抽样
- lightGBM
- model:
- xgboost的改版,树的生长策略由逐层生长变为选择最优叶子结点(需注意控制树深度)
- feature:
- 变量不需哑变量处理即可计算类别特征,减小了内存开销
- 结点分裂采用直方图算法,且不同于xgboost的是他先将特征映射到K个整数值上,K个整数值作为各直方图索引,计算各直方图的梯度信息,只需要K-1即可便利玩所有特征的各种划分法,加快计算速度
- 如GBDT上的各种正则化的参数,以及增大基学习器多样性的行列抽样
- 直方图算法易于并行优化
- 机器学习常用分类模型特点总结
- 机器学习的分类及各自特点
- 常用机器学习模型能处理数据总结
- 机器学习-分类算法总结
- 机器学习常用模型概览
- 机器学习 --- 分类算法模型评估
- 机器学习分类器模型评价指标
- Spark分类模型--来源Spark机器学习
- 近似因子模型 分类:机器学习
- Python机器学习应用 | 基本分类模型
- 机器学习之分类模型实现
- 常见机器学习模型总结
- 【机器学习】线性模型总结
- 深度学习与文本分类总结第一篇--常用模型总结
- 常用机器学习算法分类概述
- 机器学习常用的分类器比较
- 机器学习-回归及分类问题总结
- 机器学习:贝叶斯总结_4:分类
- SpringBoot下Druid连接池的使用配置
- 《java与模式》-3 设计原则
- Wamp里Apche启动失败
- Storm之——单机环境部署
- 安装angular
- 机器学习常用分类模型特点总结
- java使用selector NIO socket
- js变量和对象的索引
- NOJ(1001)-递归与分治算法-二分查找
- 防止sql注入 xss攻击
- 实验之顺序队列
- 作业
- 关于Mac os gradle 编译时报‘could not download gradle.jar…’的错误问题解决
- TOJ2333 Feel Good