【Random Forest】林轩田机器学习技法

总体来说,林对于random forest的讲解主要是算法概况上的;某种程度上说,更注重insights。

林分别列举了Bagging和Decision Tree的各自特点:

Random Forest就是这二者的结合体。

1)便于并行化

2)保留了C&RT的优势

3)通过bagging的方法削弱了fully-grown tree的缺点

这里提到一个insights:如果各个分类器的diversity越大,aggregation之后的效果可能就越好。

因此,Random Forest不仅样本是boostrapping的,而且对于features的处理上也采用了类似的方式。

采用random subspace的好处就是:特征维度降低了,运算效率提高了。

更进一步,RF的作者又提出了一种延伸的思路:

任何一个low-dimension的feature空间都可以看成是由投影矩阵P对原来feature的变换,或者可以说对原features做了线性组合(combination)

一种特例就是:如果投影过后没有任何变化时,这个P就是natural basis。

RF的作者为了引入更多的randomness,建议在做每一次b(x)的时候,都考虑用投影矩阵来对features做变换。这样就真的是randomness everywhere了。

接下来,林介绍了如何针对RF的特点做模型Validation的问题。

首先,林给出了,在RF的每棵树的boostrapping的过程中,没有被用到(out-of-bag)的样本的比例大概是多少。

假设每棵树都boostrappingN次,那么还是会有1/3的样本是没有被这棵树抽中的。

对于每棵树来说,这些没有被boostrapping过程抽中的样本就叫Out-Of-Bag。

利用这种规律,RF模型的validation方式就有些飘逸了。

1)一种直观的验证思路是,用每棵树的OOB数据来验证gt;然并卵,RF模型并不看重每棵树的分类效果

2)第二种思路就来了,有点儿绕,但是也说得清(可以类比validation by one的验证方法)。

  比如(x1,y1)这个数据,对于g2,g3是out of bag的,那么对于(x1,y1)这个样本的error,就可以用G(g2,g3)的average来验证。(如果只有(x1,y1)这一个点来验证,那就是validation by one的方法了)。

  对于(x1,y1)~...(xN,yN)大部分都可以找到,以这些样本为OOG的G(gi...),分别求这些validation的值,再取一个平均就OK了。

第二种验证思路:

  a. 既保证了测试的数据绝对没有在训练时被偷窥

  b. 保证了不是验证单棵子树gt,而是着眼于G(gi...)的表现

这种validation的方式在实际中非常好用,不用re-training,省时省力。

接下来进入了feature selection的议题。

这个议题其实也比较自然,既然Random Forest每一步都需要randomness选特征,自然就要问:哪些特征更important?

首先回顾了线性模型:

线性模型学习过程的结果W,本身就是对变量重要性的度量:|wi|越大(不论正负)都对结果影响比较大,因此也更重要。

还有一种统计学方法,就是用permutation test的思路来做。

比如N个样本,每个样本d维度特征,要想衡量其中第i维特征的重要性,可以把这N个样本的第i维特征都洗牌打乱。再评价洗牌前和洗牌后的模型performance。

但是这样就有一个问题,必须不断地洗牌、训练,过程很繁琐。

于是RF的作者想到一种有些偷懒的trick,如下:

训练的时候,不玩儿permutation了;改在validation的时候玩儿permutation了:即把OOB测试样本的xn,i打乱洗牌,再进行评估验证。

这个trcik也算上是一个非常pratical的想法吧,学习了。

最后,林列举了几个RF模型在实际中的例子:

1)对于简单的数据集,RF模型倾向于得到平滑,置信区间大的分类器

2)对于复杂有噪声的数据(决策树表现不好的),RF模型的降噪性很好

3)森林里选多少棵树比较好?

总之是树越多越好,但是由于是随机森林的,random seed也很重要(这个就要看缘分了)。

时间: 2024-10-26 21:47:15

【Random Forest】林轩田机器学习技法的相关文章

【作业四】林轩田机器学习技法 + 机器学习公开新课学习个人体会

这次作业的coding任务量比较大,总的来说需要实现neural network, knn, kmeans三种模型. Q11~Q14为Neural Network的题目,我用单线程实现的,运行的时间比较长,因此把这几道题的正确答案记录如下: Q11: 6 Q12: 0.001 Q13: 0.01 Q14: 0.02 ≤ Eout ≤ 0.04 其中Q11和Q14的答案比较明显,Q12和Q13有两个答案比较接近(参考了讨论区的内容,最终也调出来了) neural network的代码实现思路如下:

【作业三】林轩田机器学习技法

这次关注的作业题目是Q13~Q20,主要是实现basic C&RT分类树,以及由其构成的Random Forest. 其中basic C&RT分类树的实现思路如下: (一)先抽象出来几个功能: 1)从local file读数据并转化成numpy.array的形式(考虑空行容错)(def read_input_data(path)) 2)如何根据某个维度的feature,计算这个feature产生的branch criteria(此题中为decision stump)(def learn_d

【Matrix Factorization】林轩田机器学习技法

在NNet这个系列中讲了Matrix Factorization感觉上怪怪的,但是听完第一小节课程就明白了. 林首先介绍了机器学习里面比较困难的一种问题:categorical features 这种问题的特征就是一些ID编号这类的,不是numerical的. 如果要处理这种情况,需要encoding from categorical to numerical 最常用的一种encoding方法就是binary vector encoding(也是实习工作中用过的路子),将binary vecto

【Adaptive Boosting】林轩田机器学习技法

首先用一个形象的例子来说明AdaBoost的过程: 1. 每次产生一个弱的分类器,把本轮错的样本增加权重丢入下一轮 2. 下一轮对上一轮分错的样本再加重学习,获得另一个弱分类器 经过T轮之后,学得了T个弱分类器,再将这T个弱分类器组合在一起,形成了一个强分类器. 由于每一轮样本的权重都在变化,因此分类器学习的目标函数也产生了变化: 无论是SVM还是Logistic Regression都可以用这种方式学习,给每个样本增加不同的权重. 接下来问题就变成了,如何调整样本的权重?目的是什么? 林介绍了

【Deep Learning】林轩田机器学习技法

这节课的题目是Deep learning,个人以为说的跟Deep learning比较浅,跟autoencoder和PCA这块内容比较紧密. 林介绍了deep learning近年来受到了很大的关注:deep NNet概念很早就有,只是受限于硬件的计算能力和参数学习方法. 近年来深度学习长足进步的原因有两个: 1)pre-training技术获得了发展 2)regularization的技术获得了发展 接下来,林开始介绍autoencoder的motivation. 每过一个隐层,可以看做是做了

【Linear Support Vector Machine】林轩田机器学习技法

首先从介绍了Large_margin Separating Hyperplane的概念. (在linear separable的前提下)找到largest-margin的分界面,即最胖的那条分界线.下面开始一步步说怎么找到largest-margin separating hyperplane. 接下来,林特意强调了变量表示符号的变化,原来的W0换成了b(这样的表示利于推导:觉得这种强调非常负责任,利于学生听懂,要不然符号换来换去的,谁知道你说的是啥) 既然目标是找larger-margin s

【Neural Network】林轩田机器学习技法

首先从单层神经网络开始介绍 最简单的单层神经网络可以看成是多个Perception的线性组合,这种简单的组合可以达到一些复杂的boundary. 比如,最简单的逻辑运算AND  OR NOT都可以由多个perception构成的单层神经网络模拟. 但是,单层感知器神经网络能力再强也是有限的,有些逻辑也无法完成.比如,XOR异或运算. 这个时候,就很自然地引出了多层神经网络. 通过这个例子,可以看到多层的神经网络的表达能力要比单层的要强. 上面给出了看待神经网络的一种方式: 1)从原始输入开始一直

【Dual Support Vector Machine】林轩田机器学习技法

这节课内容介绍了SVM的核心. 首先,既然SVM都可以转化为二次规划问题了,为啥还有有Dual啥的呢?原因如下: 如果x进行non-linear transform后,二次规划算法需要面对的是d`+1维度的N个变量,以及N个约束 如果d`的维度超大,那么二次规划解起来的代价就太大了.因此,SVM的精髓就在于做了如下的问题转化: 不需要问太深奥的数学,知道为啥要dual的motivation就可以了. 这里再次搬出前人的智慧:Lagrange Multipliers 但是这里跟ridge regr

【Support Vector Regression】林轩田机器学习技法

上节课讲了Kernel的技巧如何应用到Logistic Regression中.核心是L2 regularized的error形式的linear model是可以应用Kernel技巧的. 这一节,继续沿用representer theorem,延伸到一般的regression问题. 首先想到的就是ridge regression,它的cost函数本身就是符合representer theorem的形式. 由于optimal solution一定可以表示成输入数据的线性组合,再配合Kernel T