随机森林是什么?
随机森林的特点?
随机森林能做什么?
随机森林原理是什么?
随机森林是什么?
作为新兴起的、高度灵活的一种机器学习算法,随机森林(Random Forest,简称RF)拥有广泛的应用前景。
随机森林就是通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策树,而它的本质属于机器学习的一大分支——集成学习(Ensemble Learning)方法。
随机森林的名称中有两个关键词,一个是“随机”,一个就是“森林”。“森林”我们很好理解,一棵叫做树,那么成百上千棵就可以叫做森林了,这样的比喻还是很贴切的,其实这也是随机森林的主要思想--集成思想的体现。
其实从直观角度来解释,每棵决策树都是一个分类器(假设现在针对的是分类问题),那么对于一个输入样本,N棵树会有N个分类结果。而随机森林集成了所有的分类投票结果,将投票次数最多的类别指定为最终的输出,这就是一种最简单的 Bagging 思想。
随机森林特点
- 在当前所有算法中,具有极好的准确率/It is unexcelled in accuracy among current algorithms;
- 能够有效地运行在大数据集上/It runs efficiently on large data bases;
- 能够处理具有高维特征的输入样本,而且不需要降维/It can handle thousands of input variables without variable deletion;
- 能够评估各个特征在分类问题上的重要性/It gives estimates of what variables are important in the classification;
- 在生成过程中,能够获取到内部生成误差的一种无偏估计/It generates an internal unbiased estimate of the generalization error as the forest building progresses;
- 对于缺省值问题也能够获得很好得结果/It has an effective method for estimating missing data and maintains accuracy when a large proportion of the data are missing
信息&熵&信息增益
信息&熵&信息增益
熵,代表信息混乱程度,熵越大,信息越混乱,熵越小,信息越确定。
h(x) = -(p(x)*lgp(x)+(1-p(x))*lg(1-p(x)))
熵的曲线图
证明当p为0和1时,熵最小,p = 0 .5时,熵最大,证明信息最混乱,所谓创建决策树,就是熵逐渐降低的过程。根节点熵大于子节点平均熵。
信息增益,根节点信息熵-某子节点信息熵。
gain(Y,f1)= H(Y) - H(Y|f1)
信息增益率:
gain(Y,f1)=H(Y,f1) / H(f1) 用于作为分类标准,出现C4.5
H(f1) 描述的是这个特征本身的信息熵。值越大代表特征本身熵越大。
Gini系数:
信息熵和基尼系数都是想定义变量的混乱程度。
方差定义变量变化程度,方差越大,离散程度越高。使用方差度量稳定与否。
对基尼系数思考,以上公式需要想想。
决策树评价
就是对所有叶子节点熵求和,值越小说明对样本分类越准确。由于该函数值越小越好,所以又称为损失函数。
如何构建决策树?
选择第一个特征进行分类是构建树中最重要异步。那么如何选择呢?
如何选择特征作为第一个分类呢?
信息增益最大的那个特征。 那个特征信息增益越大,对分类影响越大。
随机森林是常用的衡量特征重要性的方法。
计算正例经过的节点,使用结果节点的数据,经过节点的GINI系数和等指标。或者随机替换一系列数据,重新建立决策树,计算新模型的准确率变化,从而考虑特征的重要行。
额,这不是
关于一些问题
怎么判断用信息增益还是基尼系数?
用信息增益和基尼系数建立树差不多,但是发现使用基尼系数场景中往往比信息增益好一点点,但可能也不正确。
为什么分类的损失函数一定用交叉熵,而回归的损失函数用平方误差,是因为不能把分类标签作为分类问题的输出解导致的吗?
是的。
熵一般用于分类问题?
是的。一般使用交叉熵做分类损失。
如果评价一棵树那个因素对结果的重要性程度?
用信息熵或基尼系数确定影响重要性。 随机森真的可以确定。
随机选择特征时有放回吗?
没有 ,特征没有必要重复选,但样本需要。
XCB和GBDT比随机森林更好一点吧?
不一定。所有算法都是被实践证明有效的。算法更难,但不见得更好。
一般来说,用卷积神经网络分类会好于随机森林,但是如果数据量不大或者特征比较明显的话,用随机森林可能已经达到更好的效果,能达到类似XCB和GBDT。
随机森林的个数特别大会出现过拟合吗?
不会,树的个数越多越不会过拟合,如果精度不再上升,再分树,会导致内存浪费。
train_plit_test分割样本是随机的吗?
是随机的。
随机森林不同的特征也需要做子集吗?
是的。有可能在特征也做一个子集。假如有20个候选特征,一般做法是先随机做一个集合,如随机挑选15个,再从15个中挑选最优的那个特征,即在给定特征采样率。
特征随机采样率能有效防止过拟合。
随机森林怎样解决两个特征有耦合关系的?
随机森林不考虑耦合关系。直接做。
岂不是直接用神经网络更好了?
考虑性价比,尤其是深度神经网络。
每次特征选择比例选多少合适呢?能指定特定值吗?
值没有合适的说法,如果发现模型效果还不错,想去提升泛化能力,比例值可以给小一点,甚至可以给0.1,0.2
SR:看到一句话,对于每棵树的每个节点,都随机的选择m个特征,怎么理解?
是啊,就是随机森林的做法,随机从m个特征中选择最好的的那个特征。
特征和数据决定了机器学习问题的上线,而模型和算法只能尽可能逼近这个上线,所以用XCB和GBDT有时候不一定比logstic要好。
是的。XCB和GBDT理论上能得到这个上线,随机森林不见得能得到这个上线。
随机森林不同决策树在做分类的时候是怎样投票的?
随机森林做分类就是少数服从多数。做回归就是直接相加。