《机器学习技法》第十讲:Random Forest

来源:互联网 发布:js获取url传数组参数 编辑:程序博客网 时间:2024/05/03 04:33

第十讲:Random Forest


1、Random Forest Algorithm

Bagging:通过平均来降低变化量。
Decision Tree:对不同的数据敏感,变化量大。
aggregation of aggregation :用bagging的方式把一堆decision tree结合起来。



RF = bagging + CART
1、并行化、高效
2、继承CART的优点
3、消除完全生长CART的overfit缺点



得到有差异性的g:
随机抽取dataset(bagging)
随机抽取feature(低维投影,特征子空间)
RF = bagging + 随机特征CART



特征 = 投影矩阵*原始特征
投影到原始方向:特征随机抽取
投影到任意方向:特征结合后随机抽取,more powerful。
原始的RF考虑在CART每一次分支时将特征结合起来后低维投影。
RF = bagging + 随机结合特征CART



课后习题:
perceptron,特征加权后切分
decision stump,单个特征切分,相当于水平或垂直切分
random-combination,特征结合后投影,不只是垂直、水平,还可能斜的切分


2、Out-Of-Bag Estimate



out-of-bag(OOB) example:没有被bagging过程选中的数据



有多少OOB Example:N*(1/e)



OOB数据可以用来交叉验证G
bagging的过程可以实现自我交叉验证:OOB Error



OOB Error做模型选择
不需要切分训练集和验证集,不需要做两次训练



3、Feature Selection


有时候想去除:冗余的特征、无关的特征
特征选择(事物的双面性,好处坏处相对应,关键是特征选择的好坏)
好处:高效、更一般化、更具有解释性
坏处:选取特征的计算量大、过拟合、错误的解释
decision tree自带特征选择。



根据重要性选取特征:取Top importance
线性模型的importance:w向量(这时x应该要归一化才能衡量吧!)



RF的特征选择:置换检验
random test:如果是重要的特征,那么增加random values,表现会下降
random values:
1、插入均匀分布、高斯分布等数据。缺陷:改变原有特征的数据分布,表现差距=噪音影响+分布影响(不要)
2、boostrap(在原有数据上抽样),置换检验(在原有数据上重新随机排列)。分布接近一致,数据乱掉了。

特征i的重要性 = 原始数据的表现 - 特征i数据置换后的表现



原始RF特征重要性衡量
一种方法:
(1)原始数据,训练G,在G上用OOB Error衡量表现performance(D)
(2)原始数据上置换特征i的数据,重新训练G(p)G(p)上用OOB Error衡量表现?performance(D(p))
(3)importance(i) =  performance(D) - performance(D(p))
更简单的方法:
(1)原始数据,训练G,在G上用OOB Error衡量表现Eoob(G)
(2)OOB example上置换特征i的OOB数据,在G上用OOB Error衡量表现E(p)oob(G)
(3)importance(i) =  Eoob(G) - E(p)oob(G)



3、Random Forest Action


随机特征结合CART树(左图)
bagging的一棵随机特征结合CART树(中图,bagging选取中的点比较大)
t棵树的RF(bagging 随机特征结合CART树)(右图)

简单的数据集


树变多,边界变得更加平滑、更大。



复杂的数据集

很容易就得到了还不错的非线性模型



有噪音的数据集

树多了后通过投票把噪音消除,得到稳定的结果



树越多,表现越好
KDDCup例子:RF的随机性使得表现不稳定,通过增加树的棵树来使得它更稳定
RF的缺点:RF是一个随机性的模型,如果随机的过程还没有到达相对稳定的状态,或者是对结果的一点点变化很敏感,那么会受随机过程的影响。
实物上使用RF,要看G是否达到稳定,从而决定是否需要更多的树。









0 0