04建模调参

线性回归模型

https://zhuanlan.zhihu.com/p/49480391

线性回归是一种被广泛应用的回归技术,也是机器学习里面最简单的一个模型,它有很多种推广形式,本质上它是一系列特征的线性组合,在二维空间中,你可以把它视作一条直线,在三维空间中可以视作是一个平面。

线性回归最普通的形式是

其中x向量代表一条样本{x1,x2,x3....xn},其中x1,x2,x3代表样本的各个特征,w是一条向量代表了每个特征所占的权重,b是一个标量代表特征都为0时的预测值,可以视为模型的basis或者bias。看起来很简单的。

这里的w乘以x在线性代数中其实代表的是两个向量的内积,假设w和x均为列向量,即代表了w和x向量的内积w'x。同样的这里的x也可以是一个矩阵X,w与X也可以写成w'X,但是b也要相应的写为向量的形式。

决策树模型

https://zhuanlan.zhihu.com/p/65304798

GBDT模型

https://zhuanlan.zhihu.com/p/45145899

GBDT模型是一个集成模型,是很多CART树的线性相加。

GBDT模型可以表示为以下形式,我们约定f­­­t­(x)表示第t轮的模型,ht(x)表示第t颗决策树,模型定义如下:

提升树采用前向分步算法。第t步的模型由第t-1步的模型形成,可以写成:

损失函数自然定义为这样的:

虽然整体思路都挺清晰的,但是怎么确定第t步该加上一颗什么样的树确是个大问题。针对这个问题, Freidman提出了用损失函数的负梯度来拟合本轮损失的近似值,进而拟合一个CART回归树。即每次需要拟合的是模型的负梯度。第t轮的第i个样本的损失函数的负梯度表示为:

针对每一个叶子节点里的样本,我们求出使损失函数最小,也就是拟合叶子节点最好的的输出值ctj如下(注意这里的yi是真实值,不是残差):

此时本轮的决策树拟合函数就得到了:

然后本轮的强学习器也就得到了:

之后一直迭代下去,直到损失函数收敛

XGBoost模型

https://zhuanlan.zhihu.com/p/86816771

之前GBDT的已经推过了,就直接从原文第2.2章开始了。

目标函数,后面那一项就是加进来的规整项。注意这是一个递归的式子,规整项仅仅是第t颗树的,具体起来就是这棵树所有叶子节点权重向量的二范数。

然后我们对目标函数做了上面这么一个泰勒展开,这里其实是假设残差接近于零的,所以和高数课本上的麦克劳林展开是一样的。注意前面那个损失L(y,y^t-1)是个常数,所以可以不用管它

麦克劳林展开

最后一步,把样本 i 归类到所在的叶子节点 j 上,改写目标函数的形式如上图。其中Ij指的是那些归类到叶子节点 j 上的样本的集合。其中Wj 指的是叶子节点 j 的权重

然后对w求导为0,求得w的解析解

再把w代入到目标函数里面,得到

注意,之前已经提到了,这是个递归的式子,由于yt - yt-1是个常数可以不管他,剩下的部分都是关于yt的,也就是第t颗树的。按照此公式优化完第t颗树之后,还要继续优化第t+1颗树。

后面就是具体优化这棵树的算法了,我们看看就知道找到一颗恰好能够使上面公式最小的树的结构肯定是个NP问题。GBDT优化的策略是什么呢?贪心,找到每一步最优的分裂结果,即二重循环遍历所有特征以及所有分割点,每次选最好的那个。这算法的确不错,只是每次遍历每个可能的分割点代价有点大。但陈天奇采用了一种近似分割的算法,这种算法首先通过加权分位数的算法选出了一些可能的分裂点,然后再遍历这些较少的分裂点来找到最佳分裂点。

具体产生可能分裂点的方式就是加权分位数,加权是用二阶导数加权的:

第一眼看蒙了,用二阶导加权,虽然给出了解释,但感觉还是离谱。问了老师,老师也懵逼,后来看了一篇文章给了很好的解释。

看这个公式是和损失函数等价的,前面hi就是某个样本的二阶导,后面gi/hi是个常数,所以hi可以看做计算残差时某个样本的重要性。

因为我们每个节点,要均分的是loss,而不是样本的数量,而每个样本对loss的贡献可能是不一样的,按样本均分会导致loss分布不均匀,取到的分位点会有偏差。加上权重,不要让某些结点重要的样本多而且还大,类似于下图:

这样的话最右边的子树,只要一个权重特别大的样本就够了,左边的子树,权重太低,多给点样本。这样loss在树结构中才均匀。


LightGBM模型

https://zhuanlan.zhihu.com/p/89360721

LGB为什么比XGB的精度高这一点,可能是选择梯度大(残差大)样本来进行特征分裂生成的树,借鉴了Adaboost的更改样本权重的思想。每棵树针对某些特定训练样本有着较好的划分能力,导致每棵树之间的异质性较大,对于效果近似但异质性大的模型加权往往会带来更大的提升。

注意:

数据的标签(price)呈现长尾分布,不利于我们的建模预测。原因是很多模型都假设数据误差项符合正态分布,而长尾分布的数据违背了这一假设。参考博客:https://blog.csdn.net/Noob_daniel/article/details/76087829

关于过拟合、模型复杂度、正则化等概念

在过滤式和包裹式特征选择方法中,特征选择过程与学习器训练过程有明显的分别。而嵌入式特征选择在学习器训练过程中自动地进行特征选择。嵌入式选择最常用的是L1正则化与L2正则化。在对线性回归模型加入两种正则化方法后,他们分别变成了岭回归与Lasso回归。

 模型调参

三种常用的调参方法如下:

    贪心算法 https://www.jianshu.com/p/ab89df9759c8
    网格调参 https://blog.csdn.net/weixin_43172660/article/details/83032029
    贝叶斯调参 https://blog.csdn.net/linxid/article/details/81189154

推荐教材:
•《统计学习方法》 https://book.douban.com/subject/10590856/
•《Python大战机器学习》 https://book.douban.com/subject/26987890/
•《面向机器学习的特征工程》 https://book.douban.com/subject/26826639/
 

发布了21 篇原创文章 · 获赞 1 · 访问量 1824

猜你喜欢

转载自blog.csdn.net/wjsjjss/article/details/105253691