虽然还没有在面试中遇到面试官问这个问题,但是我认为这是一个考察算法工程师基础的很好的一个问题。在这里我从多方位总结一下我的理解,如有错误,欢迎指正。
1. 从机器学习三要素的角度:
1.1 模型
本质上来说,他们都是监督学习,判别模型,直接对数据的分布建模,不尝试挖据隐含变量,这些方面是大体相同的。但是又因为一个是线性模型,一个是非线性模型,因此其具体模型的结构导致了VC维的不同:
其中,Logistic Regression作为线性分类器,它的VC维是d+1,而 GBDT 作为boosting模型,可以无限分裂,具有无限逼近样本VC维的特点,因此其VC维远远大于d+1,这都是由于其线性分类器的特征决定的,归结起来,是Logistic Regression对数据线性可分的假设导致的。
1.2 策略
从 Loss(经验风险最小化) + 正则(结构风险最小化) 的框架开始说起;
从Loss的角度:
因为 Logistic Regression 的输出是 y = 1 的概率,所以在极大似然下,Logistic Regression的Loss是交叉熵,此时,Logistic Regression的准则是最大熵原理,也就是“为了追求最小分类误差,追求最大熵Loss”,本质上是分类器算法,而且对数据的噪声具有高斯假设;
而 GBDT 采用 CART 树作为基分类器,其无论是处理分类还是回归均是将采用回归拟合(将分类问题通过 softmax 转换为回归问题),用当前轮 CART 树拟合前一轮目标函数与实际值的负梯度,本质上是回归算法。
也正是因为 GBDT 采用的 CART 树模型作为基分类器进行负梯度拟合,其是一种对特征样本空间进行划分的策略,不能使用 SGD 等梯度优化算法,而是 CART 树自身的节点分裂策略:均方差(回归