目录
损失函数 Loss Function 和 目标函数 Object Function
GBDT Gradient Boost Decision Tree
depth-wise 和 leaf-wise 决策树生长策略
预排序(Pre-sorted)和 直方图(Histogram)的决策树算法
过拟合 overfitting 和 欠拟合 underfitting
有监督学习 和 无监督学习
机器学习算法大致可分为 有监督学习 和 无监督学习 ,两者区别如下:
- 有监督学习的目标是找到一个函数,该函数能尽可能准确的反应输入(简单理解为自变量)和输出(简单理解为因变量)之间的关系
- 有监督学习典型的算法包括分类分析classification、回归分析regression
- 有监督学习算法的样本必须是带标签的,同时需区分训练集和测试集(在训练集中寻找规律,在测试集中验证规律)
- 无监督学习目标是推断一组数据中存在的自然结构
- 无监督学习典型的算法包括聚类分析clustering、主成分分析PCA(principal component analysis) (降维dimensionality reduction)
- 无监督学习算法的只需要分析样本本身,预先不需要没有什么标签
集成学习 Ensemble Learning
集成学习通过将多个学习器进行结合,常可获得高于单一的个体学习器的泛化性能
如何产生“好而不同”的个体学习器,是集成学习研究的核心。即个体学习要有一定准确性(要高于“弱学习器”),同时不同个体学习器之间要有差异性
(所谓弱学习器是指泛化能力略优于随机猜测的学习器,比如在二分类问题上的准确度略高于50%)
集成学习按照个体学习器之间的依赖关系可大致分为两类:
- 串行集成方法:个体学习器之间存在强依赖关系。其逻辑是通过给错分样本一个较大的权重来提升性能。目的是有效减少偏差。主要是代表算法是Boosting
- 并行集成方法,个体学习器之间不存在强依赖关系。其逻辑是利用基础模型的独立性,因为通过平均能够较大地降低误差。目的是有效减少方差。代表算法是Bagging
Boosting 和 Bagging
1 样本选择
- Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整
- Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的
2 样例权重
- Boosting:通过提高那些在前一轮被弱分类器分错样例的权值,减小前一轮分对样例的权值,来使得分类器对误分的数据有较好的效果
- Bagging:使用均匀取样,每个样例的权重相等
3 预测函数
- Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重
- Bagging:所有预测函数的权重相等
4 并行计算
- Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果
- Bagging:各个预测函数可以并行生成
5 核心思想
- Bagging算法思想是减少预测方差(variance)
- Boosting算法思想是为了减少预测偏差(bias)
决策树 Decision Tree
决策树是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果。决策树的执行过程是将数据从根节点一步一步的划分到各个叶节点的过程。图示如下:
更多信息可参考 https://segmentfault.com/a/1190000020322548
损失函数 Loss Function 和 目标函数 Object Function
大部分的机器学习本质上都是一个最优化问题,也就是寻找模型参数(优化变量),使得损失函数最小,同时为了避免过拟合,加入正则项,也就是约束要优化的参数。
而一般的最优化问题不容易求解,是因为容易陷入局部最优解,而不能得到全局最优。如果这个最优化问题恰巧是一个凸优化问题,则可以高效地求解出模型最优解,这是因为,根据凸函数的性质,局部最优就是全局最优。凸函数求解问题,可以把凸函数想象成一口锅,来找到这个锅的锅底。
损失函数(Loss Function):用来估量模型的预测值f(x)与真实值Y的不一致程度。如果我们的模型能够让损失函数持续的下降,则说明我们的模型在不停的改进。
目标函数(Object Function):最终需要优化的函数,通常是最小化。一般来说是损失函数+正则化项,也就是经验风险+结构风险。
梯度下降 Gradient Descent
梯度(Gradient):梯度就是目标函数的导数。自变量顺着梯度方向变化时函数值上升得最快。
梯度下降(Gradient Descent):一种优化算法,该算法从任一点开始,沿该点梯度的反方向运动一段距离,再沿新位置的梯度反方向运行一段距离 ...... 如此迭代。解一直朝下坡最陡的方向运动,希望能运动到函数的全局最小点。
梯度下降算法中,为了到达最小值,需要知道两件事:走哪条路(方向)和步子迈多大。在下图的绿点处,如果向上移动,就会远离最小值,向下移动,就会靠近最小值。蓝点处的切线没有绿点处陡,这意味着从蓝点到达最小值所需的步幅比在绿点处要小得多。
梯度迭代 Gradient Boosting
Gradient Boosting是一种Boosting的函数(也可以说是模型)优化方法。它主要的思想是,每一次建立模型是在之前建立模型损失函数的梯度下降方向。通常情况下,损失函数越大,模型越不靠谱。如果模型能够让损失函数持续的下降,则说明模