test/test.md
2025-06-10 06:57:18 +00:00

30 KiB
Raw Blame History

回归

  • 最小二乘解: min_\theta \| y_{N \times 1}-X_{N\times d} \theta_{d\times 1} \|

$$ \hat \theta=(X^T X)^{-1} X^T y \ Cov(\hat\theta)= \frac{\sigma^2}{X^TX}= \sigma^2 \sum \frac{\alpha_i\alpha_i^T}{ \lambda_i} \ Var(\hat\theta_i)=\frac{\sigma^2}{RSS_i} = \frac{\sigma^2}{TSS_i} /(1-R_i^2) $$
这里RSS和R2为剩余特征对第i个特征回归

  • 最小二乘同时也是 CCA dim y = 1 时的特殊情形
  • R-sqauredTSS=ESS+RSS, R^2=1-\frac{RSS}{TSS}=\frac{ESS}{TSS} ,增加额外的特征R-Squared一定不减
  • 对于高维 regression 我们定义Adjusted R-Squared: 1-\frac{RSS/(N-d)}{TSS/(N-1)} 有可能会负,且一定小于 R-squared。如果增加更多无意义的变量Adjusted R-squared 会下降R-squared和Adjusted R-squared 之间的差距会越来越大。
  • 对无截距项的R-squared, 如果依然按照有截距项的定义,不再保证[0,1]
  • 不再保证[0,1]的问题也会出现在 out of sample 上
  • 注意当特征个数大于样本个数的时候 X^T X 就会退化MLR能够完美拟合即残差为 0, 最优解不唯一
  • 当 X 本身不满秩即特征之间存在相关性时,也会退化。但最优预测依然唯一存在,只是最优解不再唯一。
  • 重复数据 (XT , XT )T 和数乘 λX 对系数估计和 y 预测没有影响。估计的方差会变小,所以T检验会变大R-Squared没有影响F 检验会被影响,主要是由于样本个数变化引起的 degree 变化。
  • 增加线性相关的特征,不会影响系数估计和 y 的预测,因此也不会影响 R-Squared。会改变F检验的值主要也是因为特征数目的改变引起 degree变化。
  • 增加线性相关的特征变量估计方差增加而减小T检验的值这个可以从 VIF中可以看出。整体的MSE也会因此变大。这也可以用来解释多重共线性时单个系数会不显著。
  • 较大的系数估计方差往往对应较大的系数即特征对输入变化非常敏感,使得估计不稳定,也就会带来过拟合的风险。
  • 增加额外的特征R-Squared一定不减。特征 v2 与 y 无关但与 v1 相关,增加 v2 可以使拟合变得更好(增大 R-squared也被解释成 v2 抑制了 v1 与 y 无关的部分,使得整体的拟合更加好。
  • 局部的比例A比B高但是整体比例B却比A高。隐藏变量的存在使得局部相关性和整体的相关性相反。
  • 增加新的变量后原来变量与新增变量越相关方差就会变得越大。因此整体的MSE也会因此变大。这也可以用来解释多重共线性时单个系数会不显著相关性增大了方差减小了 t 检验值)。
  • $$ \hat y=X(X^TX)^{-1}X^Ty=:Hy \ \hat y - y=:e=(I-H) \epsilon $$
  • $$ \frac{RSS}{\sigma^2} \sim \chi^2_{N-d} \ \frac{ESS}{\sigma^2} \sim \chi^2_{d-1}((Xθ)^T (H \frac{1}{N} J)(Xθ))\ J := ones(N,N)\ \frac{TSS}{\sigma^2} \sim \chi^2_{N-1}((Xθ)^T (I \frac{1}{N} J)(Xθ))
 
- F检验  $ F= \frac{ESS/d-1}{RSS/N-d} = \sim F_{d-1,N-d} $ 
- T检验  $ T_i = \frac{\hat\theta_i}{\sqrt{\hat\sigma^2 c_{ii}}} \sim t_{N-d} $ ,这里 $ c_{ii}=  (X^T X)^{1} $ 的对角线上第 i 个元素,  $ \hat\sigma^2=RSS/(N-d) $ 。  p-value 越小或者 Ti 越大说明特征 xi 可以有效预测 y。 T 检验不显著的原因可能是特征本身与 y 无关或者特征过多把单个特征的解释性稀释了。
- 增加线性相关的特征,不会影响系数估计和 y 的预测,因此也不会影响 R-Squared
- 加入线性相关的特征会改变 F 检验的值,主要因为特征数目的改变引起 degree 变化
- 多重共线性主要会影响:
   - 参数估计的方差增大,方差增大会导致:两个特征相关性高夹角很小,所以任一特征向量的微小变动都会引起它们张成的线性子空间大幅变动,而使得 y 的投影变化很大
   - 难以区分每个特征的重要性比如原本相似重要性的三个特征对某特征x3加入多重共线性使其变成会给你错误判断x1, x2不重要这与PCA类似
   - 变量的显著性 T 检验失去意义
- 多重共线性的检测方法:
   - F 检验很显著(或者 R-Squared很大但是每个特征的T检验不显著
   - 定义容忍度 (Tolerance) 和方差扩大因子 (Variance Inflation Factor, VIF)
    $$ T_i:= 1-R_i^2 , V_i=1/T_i $$  容忍度越小或者 VIF 越大,说明该特征的多重共线性就越严重。一般 10 以上的 VIF 被认为严重多重共线性5 以下则不需要处理;中间视情况而定。
   - 回归系数的正负号与预期的相反;
- 解决多重共线性问题的方法包括:
   - 手动删除高相关的特征;
   - 增加样本容量;
   - Ridge, LASSO
   - PCR
   - 逐步回归 (Stepwise Regression): 利用加进线性相关的特征对拟合并没有太多改善。选择每个特征1维回归F检验最大作为第一变量然后选择第2,3...变量
- LASSO和RIDGE中较大的正则系数给出较小的参数的先验方差, 以防止过拟合
- LASSO求解:
   - 次梯度法。但并不能得到真正的稀疏解,只会使解的部分数值尽可能小;而近端梯度和坐标下降能得到。
   - 坐标梯度下降
   - 近端梯度下降
   - 修正 LARS。 但LARS 是给出不同 λ 的一系列 LASSO 的解,不能给出指定 λ 的解。
- LASSO 的一些性质:
   - 在正交的假设下LASSO 的解是在 OLS 解的基础上套上了 soft thresholding function。可解释 LASSO 的稀疏性
   - LASSO 系数不像 Ridge 按比例缩小而是按绝对数值减少,因此可以达到 0
   - 当 LASSO 面对一组互相关的特征时它们只会选择其中一项特征。因此除去稀疏性Ridge往往比LASSO拥有较小的偏差而更好
   -  $ \lambda \geq 2 \| X^T y \|_{\infty} $ 时所有的系数都会等于0
- Ridge 的一些性质:
   - 样本矩阵正交时Ridge 的解与 OLS 的解差因子 $ \lambda+1 $ 
   - Ridge 是有偏估计
   - Ridge 是对 OLS 解的压缩 $ \hat \| \theta(\lambda)\|  \leq  \| \theta\| $ 。但单个系数也有可能随着 k 的增加而增加
   - Ridge 能够降低 OLS 的 MSE. 但当 λ 选取不恰当时MSE 也有可能高于 OLS 即虽然正则项降低了方差,但增加了更多的偏差。
   - 当 Ridge 面对一组互相关的特征时,它会趋于给相关特征分配相似的系数。
   - X 的列向量间相关性不高时,改变 λ 的值并不能显著的改善 MSE
   - Ridge 系数只是按比例缩小而不会真的达到 0. 因此 Ridge 没有 LASSO 那样的稀疏性来做特征选择。
- 内核岭回归 (Kernel Ridge Regression, KRR)预测y可以写成与x相关的只有內积项的公式可以使用 SVM 中的核技巧代替内积
- Reduce Multicollinearity 通过拓展矩阵ridge等价于OLS
- 通过X 的紧奇异值分解  $$ \hat y_{ridge}=U diag(\frac{\lambda_i}{\lambda_i+\lambda})U^Ty\\
\hat y_{OLS}=U I U^Ty\\
\hat y_{PCR}=U  diag(I_k, 0) U^Ty $$  OLS 可以看做 λ = 0 的情形PCR 则可以看做前 k 个λ为0, 其余的主成分无穷. ridge为PCR的smoothingridge偏向于惩罚小的主成分。
- λ 的选取:
 - 岭迹法 (ridge trace): 使得绝大多数参数估计的系数都有符合实际意义的绝对值和符号;或所有系数作为 λ 的函数相对稳定。
 - 使得所有 VIF ≤ 10.
 - 给定一个常数c > 1, 我们选取λ, s.t. RSS(λ) < cRSS.
-  ridge LASSO 都sensitive to the outliersridge对大系数的惩罚更重一点所以对outliers 更敏感Ridge 的主要作用是除去多重共线性而不是降低方差
-  较大的系数估计方差往往对应较大的系数;正则化是参数估计 bias 和 variance 的权衡,正则化系数越大,参数估计的 variance 就小而 bias 就越大;
- L2 正则有 Weight Decay 特点,但不会达到 0, 因此不会有 L1 的稀疏性。
- 从梯度更新公式可以看出L2权重按比例缩小L1权重减去的是一个绝对数值
- L1 的梯度下降方法:
   - 次梯度法
   - 近端梯度下降(Proximal Gradient Descent, PGD)。在OLS的梯度下降走一步基础上 $ \leq $ 阙值的分量归为0
   - 坐标下降
- Best subset selection也就是L0 正则求解方法Forward-Stepwise Selection从没有特征开始逐项选择拟合最好的特征Backward-Stepwise Selection: 从全特征开始,逐项剔除拟合最差的特征
- 弹性网 (Elastic Net):约束形状与 1 < p < 2 的范数约束形状十分相似,我们可以近似的看成一个介于 Ridge 和 LASSO 之间的Lp 正则
- 弹性网不会像 LASSO 那样只选择其中一个,而是趋于把相关特征分配相似的系数,从而解决的 LASSO 丢失信息的问题。
- 当样本矩阵正交时:
 - L0 $ \hat \theta_i I_{\theta_i \geq \sqrt{\lambda} } $ 
 - L1:  $ \hat \theta_i (1-\frac{\lambda}{|\hat \theta_i |})^+ $ 
 - L2:  $ \frac{1}{1+\lambda}  \hat \theta_i $ 
 - Elastic Net:  $ \frac{1}{1+\lambda_2}  \hat \theta_i^{LASSO} $ 
- LASSO 像是L2和L0的结合压缩 OLS 系数的同时让一部分系数为 0.
- 弹性网像是L2和l1的结合在LASSO的基础上再进行压缩。
- LARS算法的工作原理可以简要概述为以下几个步骤
   - 初始化:所有回归系数初始化为零。
   - 选择变量:在每一步,选择当前与残差最相关的变量,将其加入到活跃集合中。
   - 计算方向:沿着这个方向向前移动,使得新的残差与所有在活跃集合中的变量等角度相关。
   - 更新系数:逐步增加选择变量的系数,直到另一个变量与残差同样相关,或某个变量的系数变为零。
   - 重复步骤:重复选择变量和更新系数的步骤,直到满足停止条件(如达到预定的变量数或误差标准)。
- PLSR: 同时考虑 x 的方差y 的方差以及 x, y 之间的相关性。
- CCA: 只考虑了 x, y 之间的相关性。Special case dim y = 1 : Linear regression
- PCA: 只考虑了 x 的方差。
- 高斯过程回归:非参数的贝叶斯回归方法,通过高斯过程先验对数据进行建模,进而预测新的数据点的输出的分布。可提供有意义的置信区间和后验样本以及预测值,而内核岭回归仅提供预测。
- 逻辑斯蒂回归 (Logistic regression):  $$ P(Y=1|X=x)=\frac{1}{1+e^{-x^T \theta}}:=logistic(x^T \theta) $$ 
- logistic 函数类似一个概率分布 (CDF)
- 标签imbalance不会影响逻辑斯蒂回归的齐次项系数只会影响截距。所以适当调整阙值imbalance 并不会影响预测。
- 逻辑斯蒂回归在样本线性可分时表现很差。因为当 ||θ|| → ∞ 时logistic 函数会成为在 0 点跳跃的阶梯函数。会使参数趋于无穷大来最大化似然函数。可加入 L1, L2 正则来避免过拟合。
- 二阶的牛顿法求解逻辑斯蒂回归等价于求多个加权最小二乘解因此被称为Iteratively Reweighted Least Squares (IRLS)
- 广义线性模型 (Generalized linear model, GLM)logistic函数换成任意一个函数。
- 特别的probit(正态分布的CDF) 函数时候为probit 回归。logistic比probit有更粗的 tail. 因此当样本中有 outliers 或者取值跨度很大时logistic更加robust
- 多类别逻辑回归:(up to a const.)  $$ P(Y=k|X=x)=\frac{e^{x^T \theta_k}}{\sum\limits_{i=1}^K e^{x^T \theta_i}} $$ Softmax 可以看做最值指标函数的smoothing。MLE等价于交叉熵损失函数。(i为样本 k为类) $$ \sum_i \sum_k 1_{y_i=k} \log P(Y=k|X=x_i) $$ 
- 分位回归: $ \min\limits_{\theta} \sum\limits_{y_i > x^T \theta}  (y_i - x^T \theta) \tau   +  \sum\limits_{y_i < x^T \theta}  ( x^T \theta  - y_i) (1-\tau) $ 
 - 能够更加全面的描述响应变量条件分布的全貌。
 - 对离群点则表现的更加稳健
 - 对误差项不要求很强的假设,因此对非正态而言更加稳健。

### 感知机
- 分类函数 $ f(x)=sign(w^T x+b) $  
-  Loss函数  $ \sum\limits_{x_i 误分点} - y_i (w^T x+b) $  
-  使用随机梯度下降法 (stochastic gradient descent, SGD)每次更新梯度 associate with 随机误分点。训练集线性不可分时,该算法不收敛。
 
### K近邻法 (K-nearest neighbor, K-NN)
- 选取最近的K个点集每个点加权评分。
- 一般最优的 K 值通过交叉验证来获得。
- kd搜索树是二叉搜索树 (binary search tree, BST), 在训练集中,找到按某个维度的中位数做划分
- kd树搜索找出目标点 x 对应的叶节点 l 作为起始点;逐级往上搜索,如果新的最近点出现更新最近点;搜索到某个节点时,考察兄弟点, 考察某两集合,如果相交则对该点的子树递归,不相交则继续往上搜。
- 当要搜寻 K 个最邻近点时:将最先搜索到的 K 个点作为初始值替换当前K个点中的最远距离的点。
- 当样本点个数远大于维度: $ N \gg 2^k $  时效率较高否则kd Tree 几乎和线性搜索一样遍历所有点。
- Ball 树,为了解决 kd 树在高维上效率低下的问题:
 1) 先构建一个包含所有样本的最小球体;
 2) 从球中选择一个离球的中心最远的点然后选择第二个点离第一个点最远将球中所有的点分配到离这两个聚类中心最近的一个上然后计算每个聚类的中心以及聚类能够包含它所有数据点所需的最小半径。得到两个子超球体和kd树里左右子树对应
 3) 对于这两个子超球体递归得到ball 树。
- ball Tree 的结点个数由样本个数确定

### 朴素贝叶斯法
- 独立假设下 $$ \max\limits_k  P(Y=c_k| X=x ) = \max\limits_k P(Y=c_k) \prod\limits_i P(X^i =x^i|Y=c_k) $$ 
- 最大化 Y 的后验概率MAP实际上就是最小化 0-1损失函数 (L0-norm) 下的贝叶斯风险。
- 朴素贝叶斯由于简单的无关假设,是一种高偏差低方差的算法。尤其是特征之间存现相关时,偏差会比较大。
- 独立性假设做一定的放松,独依赖估计(One-Dependent Estimator, ODE)。SPODE (Super-Parent ODE)假设所有特征都依赖于同一个特征超父然后通过交叉验证等模型选择方法来确定超父。AODE (Average ODE)将样本的特征依次作为超父来计算概率最后求和。
- 每个特征的独立性可以 conditional on k 个父特征拓展为 KDE。随着k增加所需的训练样本数量将以指数级增加。KDE 的表述即是贝叶斯网
 
### 最大熵模型
- 寻求最优的 P(Y|X) 最大化他的经验条件熵max H(Y|X),在某些给定特征函数相关的约束条件下。 
- 转化为等价的对偶极小极大问题: $$ \max\limits_\omega  \min\limits_P  L(P,\omega) $$ 
- 对偶极小的解: $ P_\omega(y|x) = \frac{1}{Z(\omega,x)} exp(\sum \omega_i f_i(x,y)) $ ,这里 $ f_i $ 为特征函数。因此最大熵模型与逻辑斯蒂回归模型类似都被叫做对数线性模型
- 以 $ \omega $ 为参数的模型 $ P_\omega(y|x) $ 的MLE等同于上面的对偶极大  $ \max\limits_\omega $ 
- 最优化问题可以使用经典的牛顿法和拟牛顿法, 还有一种迭代尺度法 (improved iterative scaling, IIS): 找到对数似然的一个可以迭代递增的下界,再通过最大化下界迭代求解
 
### 支持向量机 (SVM)
- 函数间隔 $ y_i(w_i^T x+ b) $ ;几何间隔 $ y_i(w_i^T x+ b)/\|\omega\| $  
- 可分SVM  $ \min\limits_{\omega,b} \|\omega\|^2 /2 $  s.t.  $ y_i(w_i^T x+ b)-1 \geq 0 $ 
- 不可分SVM原始问题  $$ \min\limits_{\omega,b,\xi} \|\omega\|^2 /2   + C \sum \xi_i  \\
\, \\
s.t. \,\,\, y_i(w_i^T x+ b) \geq 1- \xi_i,  \, \,  \xi_i \geq 0 $$ 
- 等价的 KKT condition (原始变量 $ \omega,b,\xi $ ,对偶变量 $ \alpha_i, \mu_i $ )
 -  $ \alpha_i=0 $ xi在临界平面之内
 -  $ 0<\alpha_i < C $ xi 在临界平面上
 -  $ \alpha_i=C $ :ξ < 1xi 越过临界超平面但在分离平面正确一侧;ξ = 1xi 在分离平面上;ξ > 1xi 在分离平面错误一侧。
- 把所有 $ \alpha_i >0 $ 即所有越过临界平面的 xi 叫做软间隔 (soft margin) 的支持向量
- SVM 具有稀疏性(样本):分离平面即分类器完全由支持向量(α > 0来决定。
- 不可分SVM对偶问题 $$  \min\limits_{\alpha} \frac{1}{2} \sum\limits_{i,j} \alpha_i \alpha_j y_i y_j (x_i^T x_j) - \sum\limits_i \alpha_i \\
\sum\limits_i  \alpha_i y_i=0  , \,\,  0\leq \alpha_i \leq C  $$  
对偶问题最优解与原问题之间关系
$$ \omega=\sum \alpha_iy_ix_i\\
b=y_j-\sum y_i \alpha_i(x_i^T x_j) $$ 
- 合页损失函数 (hinge loss function),无约束优化问题:
$$ \min\limits_{\omega,b} C(1-y_i(w_i^T x+ b))^+ +  \|\omega\|^2/2 $$  SVM是一种自动正则化的方法。能够很好的处理高维数据。因为它只取决于线性超平面和支持向量计算成本不会随着维数的增加而急剧增加。
- 核技巧:不直接定义点的映射,而是定义映射后的內积即核函数代替原空间里的內积
- 序列最小化求解对偶问题 (sequential minimal optimization, SMO) 
 - 每次只优化两个 α1, α2固定其他
 - 调整b使第一步中的最优解满足KKT。
 - 选取另外一对α直到所有的α都满足KKT。
- 多类SVM
 - 一对多法 (one-versus-rest, OVR; one-versus-all): 把某个类别的样本归为一类其他剩余的样本归为另一类需要k个SVM将未知样本分类为具有最大分类函数值。这种方法存在 bia。
 - 一对一法 (one-versus-one, OVO): 在任意两类样本之间设计一个SVM。分类时用最后得票最多的类别
- SVR回归损失函数 $$ \min\limits_{\omega,b} C \sum (|y_i-(w_i^T x+ b)|-\epsilon)^+ +  \|\omega\|^2/2 $$  考虑上/下松弛变量,等价于 $$ \min C \sum (\xi_i + \hat\xi_i  ) +  \|\omega\|^2/2\\
s.t. \, \,0 \leq\xi_i , \hat\xi_i ;  \,  \,  -\epsilon - \hat\xi_i  \leq  y_i-(w_i^T x+ b)  \leq  \epsilon  + \xi_i $$  类似SVR的对偶问题得到原变量和对偶变量关系  $ \omega = \sum(\alpha_i-\hat\alpha_i)x_i $ ,只有在带宽内的点有  $ \alpha_i-\hat\alpha_i=0 $ 
- 对比岭回归KRR和SVR。类似都使用 L2 正则都可以使用核技巧。不同损失函数不同KRR 有解析解KRR对中等规模训练速度通常更快SVR适用于较大的训练集SVR稀疏性预测比KRR快。
- One Class SVM  $$ \min\limits_{r,o}  V(r,o)+ C \sum \xi_i\\
s.t. \,\, \|x_i-o\|\leq r+ \xi_i; \,\,\, \xi_i \geq0 $$ 
- 校准概率 (Calibrate Probability):在 score g(xi)基础上再训练一个 [0, 1] 之间的函数 (calibration regressor) 来表示xi被预测成1的校准概率。



### 决策树


**构建决策树**

- 选择最大的信息增益ID3/信息增益比C4.5/最小相对基尼指数的特征进行分裂
- 用信息增益比代替是因为要排除那些提供很多信息但同时自身熵也很大的特征。比如取值非常多的特征,每个样本被该特征分裂成节点都是 1 个样本
- 回归树 (regression tree),通过最小化平方误差来寻找最优特征和切分
- 利用某叶结点对应的划分的子空间中样本个数/总样本可以作为输入X的概率分布估计。
- 决策树的优点:易于解释;不是很依赖于预处理;缺失值和异常点不敏感。
- 决策树的缺点计算量较大连续特征类别化样本扰动敏感过拟合特征选择一。对multicollinearity鲁棒弱 interaction 的特征低效;不是概率模型
 

**剪枝**

- 预剪枝 (pre-pruning),以下值达到阙值:所有样本点属于类别个数;样本个数;树的深度;衡量指标的值
- 后剪枝 (post-pruning)
- 代价函数  $ C_\alpha(T):=C(T)+\alpha |T| $ ,  $ C(T) $  为决策树的叶节点熵加权和
-  $ C_\alpha(T-T_t)- C_\alpha(T)= C_\alpha(T_t^p) - C_\alpha(T_t) $  $ T_t $ 为减掉的子树, $ T_t^p $ 为剪枝后的叶节点。等式说明子树代价函数的剪枝变化=整体树代价函数的剪枝变化
- CART 剪枝,逐步减去使得 $ g(t) $ 最小的 $ t $ ,这里 $ g(t)=\frac{C(T_t^p)-C(T_t)}{|T_t|-1} $ ,构造决策树包含序列 $ T_{i+1} \subset T_i $ 。 满足性质:(1)  $ \alpha_{i+1} \geq \alpha_i $  (2)  $ \forall  \alpha  \in  [\alpha_i, \alpha_{i+1}) $     $ T_i $ 是最优的。
 
**类别特征**
- 独热编码 (one-hot encoding)缺点:划分样本不平衡,某个划分几乎就是原始样本集;把样本划分到很多过分零散的小空间上。

### 提升方法

**AdaBoost**
- 步骤1等权重初始化数据2计算Gm的(加权)错误率 $ e_m $ 选取错误最小的分类器作为m轮的基础分类器3计算Gm的权重 $ \alpha_m =\frac{1}{2}\log\frac{1-e_m}{e_m} $ (为了最小化指数损失函数);5更新数据权重误分类的样本点权值扩大正确的减小。6重复3-57得到最终分类器 $ f(x)=sign(\sum \alpha_m G_m(x)) $ 。
- 加法模型 (additive model),通常使用向前分布算法 (forward stagewise algorithm)
- AdaBoost 算法是向前分步法的特例,逐步优化损失函数: $$ (\alpha_m,G_m) = \arg\min\limits_{\alpha,G} \sum\limits_{样本i} exp(-y_i (\sum\limits_{l=1}^{m-1}\alpha_lG_l(x_i) + \alpha  G(x) )   ) $$ 

**GBDT 梯度提升树**
- 梯度提升树 (Gradient Boosting Decision Tree,GBDT)
 - 初始化 $ f_0(x) $ 为一最优常数函数;
 - 通过梯度计算残差 $ r_m^i=-\frac{\partial L(y_i,f)}{\partial f}|_{f=f_{m-1}(x_i)} $ 
 - 对数据集合 $ \{(x_i, r^i_m) \}_i $  拟合出m轮基本树的叶节点划分(不需要每个学习器拟合太好来节省计算时间)
 - 优化计算划分上的输出值(当损失函数是平方误差时,就是回归树里用的均值)
 - 更新  $ f_m(x) = f_{m-1}(x)+ m轮拟合出的树 $ 
- 每一轮拟合残差必须与原始的损失函数一致
- 对于平方损失来说,梯度计算的“残差”=y  f(x)
- 分类问题的区别: $ P(Y=1|x)=\frac{1}{1+exp(-f_m(x))} $ 损失函数是y的交叉熵残差  $ r_m^i= y_i - \frac{1}{1+exp(-f_{m-1}(x_i))} $ 
- AdaBoost每一轮没有在拟合残差而是直接最小化指数损失而梯度提升树在拟合残差。

**XGBoost**
- XGBoost叶节点划分采用按层生长 (level(depth)-wise learning) 每一层的所有 leaf 都分裂逐层往下分裂。对每个特征进行线性扫描找出Gain = Obj_unsplit  Obj_split最大的切分点然后再遍历所有特征找出最大的特征分裂。
- XGBoost优化计算划分上的输出值最小化目标函数使用二阶的牛顿法对损失函数 $ L(y_i, f) $ 在  $ f=f_{m-1}(x_i) $  二阶Taylor展开。
- 因为是按层生长XGboost 通常会规定最大深度然后从下往上后剪枝。这是因为分裂虽然是最优但依然有可能Gain是负的。
- 防止过拟合:
 - shrinkage参数:  $ f_m = f_{m1} + ϵ Tree_m $ 
 - 列(特征)抽样 (column subsampling): 与随机森林类似, 每次随机地从所有特征中抽取少量的特征进行分裂。
- XGBoost按层生长带来了很多没必要的开销。 LightGBM中我们采用leaf-wise learning
- DART (Dropouts meet Multiple Additive Regression Trees): 训练第m棵树时随机丢弃前面m  1棵树中的K棵。同时需要数乘正则化。后面提到的随机森林就可以看做DART dropout 所有的树。

**LightGBM**
- XGBoost不足预排序后需要保存特征值及排序后的索引因此内存占用和计算消耗巨大且最佳切分点容易过拟合预排序后特征对梯度的访问是一种随机访问对内存 (cache) 不友好。
- LightGBM (Light Gradient Boosting Machines) :更少的内存(直方图 (Histogram))、更少的样本 (GOSS)、更少的特征 (EFB)。
- 直方图将数据离散化成K个桶(bin)把数据放入对应的桶中然后寻找K个桶的最佳切分点来近似以减少计算量。优势简化了计算不是很精确的分割起到了正则化的效果同时提升也不需要单独学习器过高的精度直方图差加速分裂后左右子树需要重新计算直方图但其中一个直方图确定时另外一个可以由父直方图减去得到。
- 直接丢掉小梯度数据可提高速度但是也降低精度。为了权衡这两,考虑单边梯度采样算法 (Gradient-based One-Side Sampling, GOSS): 保留前a × 100%大梯度数据同时在抛弃的小梯度样本中再随机选取b × 100%。需要在后面取出的小梯度样本前面乘一个常数 (1  a)/b, 以尽量保证它的原始分布。
- 互斥特征合并 (Exclusive Feature Bundling, EFB):把互斥特征(即特征不会同时为非零值,像 one-hot捆绑成一个特征来减少特征的维度。捆绑把冲突样本总个数小于阙值的几个特征捆绑成一个bundle合并为了确保bundle中每个特征可以被区分开来我们对特征进行平移确保不同特征的值区间没有交集。

LightGBM还用到了以下技术
- Leaf-wise分裂每次从当前所有叶子中找到 Gain 最大一般也是数据量最大的一个叶子进行分裂。优点Leaf-wise 可以降低更多的误差,得到更好的精度。缺点:树的深度较深,产生过拟合。
- 并行学习 (Parallel Learning):特征并行、数据并行?
- 顺序访问LightGBM 因为是将样本投入 bin 中,所以是顺序访问,对 cache 比较友好。
- 类别特征LightGBM 按照某一特征类别的梯度统计排序以后,然后按照最优的切分分裂。

**CatBoost**
- CatBoost作用处理 GBDT 中的类别特征使用Ordered TS解决由类别特征编码造成的目标泄露 (Target Leakage)问题用Ordered Boosting解决由梯度提升方法造成的预测偏移 (Prediction shift)问题。
- one-hot编码面对大量类别会造成维度灾难。目标变量统计 (Target Statistics) 使用类别标签的统计量来数值化特征的类别。
 - Greedy TS: 使用所有相同类别对应的标签均值来数字化类别。就是目标 (自身标签) 泄露的由来。
 - Holdout TS: 训练集一分为二DTS  Dtrain。用DTS来独立地计算训练集Dtrain中样本的TS。 但是却大大减少了训练样本的数量。
 - Leave-one-out TS: 训练集样本xi使用D/xi计算TS; 测试集样本使用训练集全样本计算TS。但两种类别的条件分布不一致。
- CatBoost使用Ordered TS
 - 对训练集样本随机排序;
 - 对训练集样本xi使用它置换下前面的历史样本计算TS
 - 对测试集样本xi使用训练集全样本计算TS。
- Ordered Boosting希望m1轮训练所用的样本和m轮计算残差所用的样本应该是各自独立采样这样便可获得无偏残差 (Unshifted Residuals)。样本xi的m轮残差只在它用历史样本训练的学习器fm-1上来计算。

### 集成学习

**Bagging 随机森林**
- 集成学习(Ensemble learning)包括提、装袋Bagging、Stacking。
- 如果装袋的弱分类器是决策树,则称为随机森林(Random Forest, RF)
 - 自助法在训练数据中生成M组数据
 - 随机地从所有特征中抽取少量的特征(一般√特征总数)。在这特征子集中用决策树的方法生成节点,平行的训练多个弱分类器。(随机抽取的目的是避免某些信息增益比较高的特征频繁出现而使决策树之间相关度高);
 - 对M个弱分类器的输出求平均回归或者取众数分类。
- 提升是提高精度,降低偏置;装袋在不增加偏置的情况下降低方差。
- 对于样本x, 装袋也可以把弱分类器的类别输出频率作为y=f(x)的概率分布估计。
- 自助采样可以产近1/3的袋外样本没有被用到的, 可当做测试集来计算模型的袋外误差 (OOB Error)。
- 特征个数越多RF 树的个数也需要越多。因为足够多的树才能保证每个特征等概率被选上。
- 增加RF树的个数不会overfitting, 但由于fully grown tree可能过拟合增加这样的树就有可能过拟合。
 
RF在重要性选择的应用

- Gini Importance / Mean Decrease in Impurity (MDI)对于每棵树计算每个特征在所有分裂节点上减少的Gini不纯度总和然后将所有树的结果相加并除以树的总数。缺点RF求平均稀释相关特征导致所有的特征重要性都被低估。这一点 GBDT 就会选出其中一个而优于RF。
- permutation Importance / Mean Decrease in Accuracy (MDA):在 OOB数据上计算OOB Error1; 随机打乱某特征取值得到OOB Error2。Error2-Error1越大说明该特征越重要。优点避免过拟合对特征选择带来的
偏差。缺点当有相关特征存在时MDA容易低估特征的重要性。
- Boruta 对特征重要性的选择类似于filtering, 会保留所有相关的重要特征。
- 决策树可由以下指标来选取特征重要性:
 - weight: 特征被分裂次数。
 - cover: 被分割的样本数即用分裂样本数作为权重加权分裂次数。假设在某次分裂中当前节点包含n个样本那么这次分裂的样本数就是n。
 - gain: 由该特征分裂前后损失函数的减少总量。每次分裂前后损失函数如均方误差、Gini不纯度等的减少量之和。
- 两样本近似性  $ Prox_{ij}:= $  两样本被分到同一个叶节点的树的棵数/RF总棵数。作用
 - 找出异常点 (outlier location)。 $ OL_i = \frac{|D|}{\sum\limits_{x_k \in D}Prox_{ik}^2} $ 越大说明xi与同类样本的近似性越小就越有可能是异常点。
 - 聚类填补缺失值 (Missing value replacement)缺失xi情况1用同类未缺失样本的众数离散或者中位数连续暴力填补2建立RF考虑没有缺失样本xjProxij作为权重来计算加权众数或者均值3重复步骤2建立RF。
- 孤立森林 (Isolation Forest, IForest)是无监督学习,它的思想是拥有异常点的样本训练树结构时,很快就会把异常点孤立地分配到一个叶节点中,异常点在树中深度很浅。为无监督学习,因此使用随机选取特征和最佳切分点。
- IForest仅对全局稀疏点敏感不擅长处理局部的相对稀疏点
- 极限随机树(extremely randomized trees, ExtraTrees)。两种树都特征随机、模型随机。随机森林样本随机(自助法),最优分裂;极限随机树分裂随机,使用全样本。

**Stacking**
- Stacking步骤数据集  $ T=\{(x_i,y_i)\} $ 
 - 训练集T上训练好 $ p_k $ 
 -  $ z_i:= (p_1(x_i),...,p_K(x_i)) $ 
 - 元学习器 f 在 $ \{(z_i,y_i)\} $ 上学习;
 - 预测 $ y=f(p_1(x),...,p_K(x)) $ .
- 直接用初级学习器的训练集来产生次级训练集,则过拟合风险会比较大。
- 解决方法: $ T=T_1 \cup,...,\cup T_J $  $ T_j^C $ 训练pp作用 $ T_j $ 产生 $ T_j^* $  $ T^*=T_1^* \cup,...,\cup T_J^* $ f 在 $ T^* $ 上学习。