【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也很重要(这个就要看缘分了)。
【Random Forest】林轩田机器学习技法的更多相关文章
- 【Matrix Factorization】林轩田机器学习技法
在NNet这个系列中讲了Matrix Factorization感觉上怪怪的,但是听完第一小节课程就明白了. 林首先介绍了机器学习里面比较困难的一种问题:categorical features 这种 ...
- 【Deep Learning】林轩田机器学习技法
这节课的题目是Deep learning,个人以为说的跟Deep learning比较浅,跟autoencoder和PCA这块内容比较紧密. 林介绍了deep learning近年来受到了很大的关注: ...
- 【Adaptive Boosting】林轩田机器学习技法
首先用一个形象的例子来说明AdaBoost的过程: 1. 每次产生一个弱的分类器,把本轮错的样本增加权重丢入下一轮 2. 下一轮对上一轮分错的样本再加重学习,获得另一个弱分类器 经过T轮之后,学得了T ...
- 【Radial Basis Function Network】林轩田机器学习技法
这节课主要讲述了RBF这类的神经网络+Kmeans聚类算法,以及二者的结合使用. 首先回归的了Gaussian SVM这个模型: 其中的Gaussian kernel又叫做Radial Basis F ...
- 【Neural Network】林轩田机器学习技法
首先从单层神经网络开始介绍 最简单的单层神经网络可以看成是多个Perception的线性组合,这种简单的组合可以达到一些复杂的boundary. 比如,最简单的逻辑运算AND OR NOT都可以由多 ...
- 【Decision Tree】林轩田机器学习技法
首先沿着上节课的AdaBoost-Stump的思路,介绍了Decision Tree的路数: AdaBoost和Decision Tree都是对弱分类器的组合: 1)AdaBoost是分类的时候,让所 ...
- 【Linear Support Vector Machine】林轩田机器学习技法
首先从介绍了Large_margin Separating Hyperplane的概念. (在linear separable的前提下)找到largest-margin的分界面,即最胖的那条分界线.下 ...
- 【Support Vector Regression】林轩田机器学习技法
上节课讲了Kernel的技巧如何应用到Logistic Regression中.核心是L2 regularized的error形式的linear model是可以应用Kernel技巧的. 这一节,继续 ...
- 【Dual Support Vector Machine】林轩田机器学习技法
这节课内容介绍了SVM的核心. 首先,既然SVM都可以转化为二次规划问题了,为啥还有有Dual啥的呢?原因如下: 如果x进行non-linear transform后,二次规划算法需要面对的是d`+1 ...
随机推荐
- Seafile开源私有云自定义首页Logo图片
Seafile是一个开源.专业.可靠的云存储平台:解决文件集中存储.共享和跨平台访问等问题,由北京海文互知网络有限公司开发,发布于2012年10月:除了一般网盘所提供的云存储以及共享功能外,Seafi ...
- C++ POD类型
POD( Plain Old Data)概念: Arithmetic types (3.9.1), enumeration types, pointer types, and pointer to m ...
- 为什么CRM Opportunity的删除会触发一个通向BW系统的RFC
今天工作时我发现,我在SE38里用函数CRM_ORDER_DELETE删除一个Opportunity,居然弹出下图这个SAP Logon的屏幕,要连接BR1.这是什么鬼?! 查了一下,BR1是BW系统 ...
- 如何将UI5应用部署到Fiori On-Premise和On-Cloud的Launchpad上去
On-Premise Launchpad 具体步骤参考我的博客: 如何将BSP应用配置成Fiori Launchpad上的一个tile On-Cloud Launchpad Fiori Cloud L ...
- Vsftpd服务传输文件(转)
本章节先通过介绍文件传输协议来帮助读者理解FTP协议的用处,安装vsftpd服务程序并逐条分析服务文件的配置参数. 完整演示vsftpd服务匿名访问模式.本地用户模式及虚拟用户模式的配置方法,介绍PA ...
- HDU(1166),线段树模板,单点更新,区间总和
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1166 第一次做线段树,帆哥的一句话,我记下来了,其实,线段树就是一种处理数据查询和更新的手段. 然后, ...
- Java从入门到放弃——02.常量、变量、数据类型、运算符
本文目标 理解什么是常量,什么是变量 认识八大基本数据类型 了解算数运算符.赋值运算符.关系运算符.逻辑运算符.位运算符.三元运算符 1.什么是常量与变量? 常量是相对静止的量,比如整数:1,2,3 ...
- IOError: [Errno 22] invalid mode ('rb') or filename: 'F:\netData1.mat'
这种错误的出现是在使用built-in函数file()或者open()的时候.或者是因为文件的打开模式不对,或者是文件名有问题.前者的话只需要注意文件是否可读或者可写就可以了.后者则是与文件路径相关的 ...
- singnal 13 was raised
在app运行过程中按下home键或者其他原因app被挂起,socket连接不会断开,服务器为了节省资源,在一段时间后会主动关闭这个连接.当玩家再次切回到游戏后,前端并不知道这个连接已经断开了,继续通过 ...
- 异构数据库迁移——DATAX
背景 在最近接触到的一个case里面,需要把db2的数据迁移至oracle,客户可接收的停机时间为3小时. 同步方式的比较 一说到停机时间,大家第一时间想到Oracle公司的GoldenGate实时同 ...