由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 从解决问题的角度思考一下xgboost的原理
相关主题
xgboost 训练大数据问题彻底抛弃xgboost 找新欢lightlgm没毛病吧?
xgboost 训练小感请问xgboost训练需要保持不同类别样本数尽量一致吗?
关于换座位的问题Re: Zillow Prize kaggle的比赛 求问
svm/svr还是不错的大家试过 h2o吗?
单变量xgboost模型好的吓人,求解xgboost预测结果不一致怎么回事?
有没有做sentiment analysis的,求思路如何编程实现循环嵌套的次数?
求教 xgboost train error 非常小,咋回事问个关于socket问题
xgboost 里面的tree到底是一整个depth=N的树,还是一个binaryUNIX DATAGRAM 类型socket最大报文长度多少?
相关话题的讨论汇总
话题: 分片话题: y1话题: 函数话题: x1话题: x2
进入Programming版参与讨论
1 (共1页)
T*******x
发帖数: 8565
1
抛砖引玉。
假设有一个训练数据集,有两个feature分别为X和Y,目标值为Z。
假设XYZ都取[0,1]之间的实数。
训练目标是要得到一个函数Z=f(X,Y)以作预测之用。
最理想的解决当然是找出数量之间的物理联系,得到解析解。
其次是用回归的方法,比如线性回归,Z=aX+bY+c,
也就是要找到三个参数abc,使得训练误差最小。
使用回归的方法其实也要对数量之间的内在联系有所假设。
也因此参数较少,在这个例子中是三个参数,解空间为三维。
如果实在找不出数量之间联系的合理假设,那就用笨办法,
也可以说用最直接的办法,分片求平均,然后以平均值给分片赋值。
得到的函数是一个分片函数。分片函数和决策树是等价的。
因为分片函数在使用上就比如
先判断X是否小于0.5,再判断Y是否大于0.7,
再判断X是否大于0.4,再判断Y是否小于0.9,然后给一个值。
这正是一个决策树。
关键是如何分片,分多少片。
假设只考虑Cartesian Product分片,比如X维度上以
0 0 这就需要(X1,X2,X3,X4,X5,Y1,Y2,Y3)八个参数。
解空间是8维,比线性回归的解空间大多了。
如果用和线性回归同样的方法找最优解,那就难多了。
那怎么找呢?
先考虑一下这个分片函数应该是什么样子才合理。
这个分片函数应该在每一个分片上训练样本的取值尽量趋同,
也就是每一片的取值的面越平越好。
或者说每一片样本方差越小越好。
怎么才能找到样本方差小的分片呢?
这个地方是xgboost的一个核心设计:分裂法。
比如现在还没有分片,那么在X维度上找一个点X1,
把XY feature空间分两半,两半各自的方差之和小于未分片之前的总方差。
小多少呢?这和X1点的选取有关。
那么有一个点可以使得这个方差变小的数量最大。
几何意义是在某一点上分两半使两边的样本面越平越好。
Y维度上也可以找这么一个点Y1。X1和Y1之间还可以比较一下,
取一个最好的点比如是X1,这就是第一步分裂。
第二步怎么办呢?还是在X维度上找X2同时在Y维度上找Y1,
使得X2是X维度上的最优分裂点,Y1是Y维度上的最优分裂点。
然后再比较X2和Y1,取一个最优点,比如是Y1,这是第二步分裂。
以此类推。
有一些regularization方面的考虑:
分片不能分太细:这个可以用分裂最大数量来限制,也就是树高。
learning rate的意义:
一整套分裂完成之后,比如找到最优的分裂序列
(X1,Y1,Y2,X2,X3,X4,Y3,X5)
之后就得到了一个分片函数。这个分片函数从得到的过程来看已经是最优了。
但是我们并不让它一步到位。而是在这个最优方向上只前进一小步。
前进多少呢?乘以这个learning rate。就前进这么多。
那这个前进一小步的函数离训练样本的实际值还有好大差距。
以这个差距为目标函数,我们再用这个分裂法来找到下一个分片函数,
然后再以learning rate前进一小步。如此继续。
为啥不让它一步到位呢?这个地方我觉得道理挺深。
我只能形象的思考一下:比如手工捶打一口铁锅,
在最优的方向上敲一锤子,敲敲打打,最后就成型了。
g****t
发帖数: 31659
2
你最后那段,之所以只往前走一小步,
我觉得是把一个变换T,
分解成一系列小的接近于identity的变换。类似于一层层泰勒展开求系数。
假如你一步到位把T求出来也是可以的。但是后面
肯定要把数据多次迭代,求T1,T2...
T*******x
发帖数: 8565
3
嗯,有道理。
你最后一段:一步到位把T求出来也行,但后面肯定要把数据多次迭代。这个地方是个
什么过程?

【在 g****t 的大作中提到】
: 你最后那段,之所以只往前走一小步,
: 我觉得是把一个变换T,
: 分解成一系列小的接近于identity的变换。类似于一层层泰勒展开求系数。
: 假如你一步到位把T求出来也是可以的。但是后面
: 肯定要把数据多次迭代,求T1,T2...

g****t
发帖数: 31659
4
除了把data set分片。
多次用T的意思是:
例如你第一次对
(X,Y,1) Z用最小二乘法。预测值是Z_hat
下一步对
(X,Y,1) (Z - 上次预测误差) 用最小二乘法
或者对
(X_hat, Y,1) Z用最小二乘法
其中X_hat是反向预测
然后可以一直走下去。我给起个名字,叫做
Reflective generation regression ,你觉得这个buzz word怎么样?哈哈。这算法是
我刚发明的。
话说回来,
不管什么计算,都是一系列迭代过程找收敛。所以你找到一个计算过程,如果:
1. 知道固定点是解
2. 学习或者梯度方向正确
2. 步长合适
那我觉得都可以试验一下。


: 嗯,有道理。

: 你最后一段:一步到位把T求出来也行,但后面肯定要把数据多次迭代。
这个地
方是个

: 什么过程?



【在 T*******x 的大作中提到】
: 嗯,有道理。
: 你最后一段:一步到位把T求出来也行,但后面肯定要把数据多次迭代。这个地方是个
: 什么过程?

r****t
发帖数: 10904
5
写得不错,深入浅出,给小孩或者我这样的外行看也合适。
分片函数和决策树的等价关系还是第一次读到。
关于 learning rate 的作用,你打开 xgboost paper, search for "learning rate"
唯一
一个 hit 说的很明白:
Shrinkage scales newly added weights by a factor
η after each step of tree boosting. Similar to a learning rate
in tochastic optimization, shrinkage reduces the influence of
each individual tree and leaves space for future trees to improve
the model.
当前 iteration t-th tree 使用最小二乘法来的最优解几乎一定 overfit,
所以shink, scale down 当前树的w,shrink 太多的风险是 (t+1)th tree
可能和 t-th tree 类似,那么多加一堆树就行了。shink 不够的风险则
是在这一步就过拟合了。

【在 T*******x 的大作中提到】
: 抛砖引玉。
: 假设有一个训练数据集,有两个feature分别为X和Y,目标值为Z。
: 假设XYZ都取[0,1]之间的实数。
: 训练目标是要得到一个函数Z=f(X,Y)以作预测之用。
: 最理想的解决当然是找出数量之间的物理联系,得到解析解。
: 其次是用回归的方法,比如线性回归,Z=aX+bY+c,
: 也就是要找到三个参数abc,使得训练误差最小。
: 使用回归的方法其实也要对数量之间的内在联系有所假设。
: 也因此参数较少,在这个例子中是三个参数,解空间为三维。
: 如果实在找不出数量之间联系的合理假设,那就用笨办法,

T*******x
发帖数: 8565
6
谢谢。不过我没怎么跟上你的思路。

【在 g****t 的大作中提到】
: 除了把data set分片。
: 多次用T的意思是:
: 例如你第一次对
: (X,Y,1) Z用最小二乘法。预测值是Z_hat
: 下一步对
: (X,Y,1) (Z - 上次预测误差) 用最小二乘法
: 或者对
: (X_hat, Y,1) Z用最小二乘法
: 其中X_hat是反向预测
: 然后可以一直走下去。我给起个名字,叫做

T*******x
发帖数: 8565
7
谢谢。我也在学习。

"

【在 r****t 的大作中提到】
: 写得不错,深入浅出,给小孩或者我这样的外行看也合适。
: 分片函数和决策树的等价关系还是第一次读到。
: 关于 learning rate 的作用,你打开 xgboost paper, search for "learning rate"
: 唯一
: 一个 hit 说的很明白:
: Shrinkage scales newly added weights by a factor
: η after each step of tree boosting. Similar to a learning rate
: in tochastic optimization, shrinkage reduces the influence of
: each individual tree and leaves space for future trees to improve
: the model.

1 (共1页)
进入Programming版参与讨论
相关主题
算法问题。单变量xgboost模型好的吓人,求解
一个图论题有没有做sentiment analysis的,求思路
其实板上还有几个臭皮匠的求教 xgboost train error 非常小,咋回事
如何避免round off errorxgboost 里面的tree到底是一整个depth=N的树,还是一个binary
xgboost 训练大数据问题彻底抛弃xgboost 找新欢lightlgm没毛病吧?
xgboost 训练小感请问xgboost训练需要保持不同类别样本数尽量一致吗?
关于换座位的问题Re: Zillow Prize kaggle的比赛 求问
svm/svr还是不错的大家试过 h2o吗?
相关话题的讨论汇总
话题: 分片话题: y1话题: 函数话题: x1话题: x2